Michał Borek

Tech blog

Projekt Kenai

Wraz z pojawieniem się pierwszych wersji NetBeansa w wersji 6.7 do programu dołączona została obsługa Projektu Kenai.

Czym jest Projekt Kenai ?

Projekt Kenai to dzieło Sun’a. Jest to, można powiedzieć, odpowiednik starego dobrego sourceforge’a, czy też nowszego code.google.com, z tym że mocno zintegrowany z IDE (NetBeans).

W skład Projektu Kenai wchodzą:

  • integracja z IDE
  • hostowanie kodu
  • bug tracking
  • wiki
  • listy mailingowe
  • forum
  • download
  • support online
  • i kilka innych…

Czyli dostajemy takie Code.google.com + integracja z ide, forum i mailingi. Na pierwszy rzut oka całkiem całkiem…

Poniżej info jak skonfigurować projekt, do pracy z Projektem Kenai. Pominę zakładanie konta 😉

Tak więc, aby współdzielić projekt, z menu podręcznego wybrać “Share on Kenai”

Udostępnianie projektu - krok 1

Następnym krokiem jest wypełnienie prostych danych, takich jak nazwa projektu, opis, bla bla.

Udostępnianie projektu - krok 2

Po chwili od wciśnięcia “Finish” w zakładce “Kenai” mamy szereg opcji.

Zakładanie Kenai

Mamy możliwość przeglądania ticketów, dodawania nowych, przeglądania źródeł z SVNa.

Szczególnie śledzenie błędów przypadło mi do gustu. W Eclipsie był bodajże Mylyn, jednakże wersja systemu ticketów od Suna bardziej do mnie przemawia.

Nie będę się rozpisywał w szczegółach na temat Kenai. Chciałbym tylko zwrócić uwagę na ten projekt, gdyż zapowiada się bardzo obiecująco. Biorąc pod uwagę z jaką częstotliwością wychodzą kolejne wersje Beta i RC NetBeansa można podejrzewać, że nowy właściciel (Oracle) widzi korzyści z rozwijania zarówno NB jak i Projektu Kenai.

Scala – ray tracing – tekstury

Nie trzeba było długo czekać, a projekt raytracera w Scali doczekał się małej aktualizacji.

Dodane zostało teksturowanie.

Za mapowanie tekstury odpowiada następujący fragment kodu:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
def getTexel(vp: Vector): Color = {
    hasTexture match {
        case false => color
        case true =>
            val vn = new Vector(0,-1,0)
            val ve = new Vector(-1,0,0)
            val phi = Math.acos(-vn.dot(vp))
            val v = phi / Math.Pi
            val theta = (Math.acos(vp.dot(ve) / Math.sin(phi))) / (2 * Math.Pi)
            val u = vn.crossProduct(ve).dot(vp) > 0 match {
                case true => theta
                case false => 1 - theta
            }
            val color = new java.awt.Color(
                textureFile.getRGB(((u * _textureScale * textureFile.getWidth + _tPosX) % (textureFile.getWidth - 1)) .toInt, ((v * _textureScale * textureFile.getHeight + _tPosY) % (textureFile.getHeight - 1)).toInt))
            new Color(color.getRed / 255.0, color.getGreen / 255.0, color.getBlue / 255.0)
        }
    }

Efekt załączony na poniższym rysunku:

Tekstury

Ray tracing w języku Scala

Kolejnym podejściem do ray tracingu jest implementacja prostego silnika ray tracera w Scali.

Scala jest językiem funkcyjnym, działającym na wirtualnej maszynie Javy. Fajnie integruje się ze standardowymi klasami Javy, co znacznie zwiększa jego funkcjonalność.

Silnik obsługuje na razie tylko prosty model oświetlenia Phonga oraz przecinanie promienia jedynie z kulami.

Zamierzam dopisać do tego bump mapping, ale z czasem może być krucho i na zamiarach może się skończyć 🙂

Poniżej przykład wygenerowanego obrazu (zamierzam sprawić, że będzie to bardziej spektakularne :))

Scala Ray Tracing