Skip to content
Jakub Czajkowski edited this page May 20, 2015 · 2 revisions

InterLight

Główne założenia

InterLight - aplikacja do wspierania oceny i ewaluacji instalacji oświetlenia wewnętrznego.

Quote by dr A. Sędziwy:

"Zasadniczym celem pracy jest opakowanie Radiance'a ​w oprogramowanie, które pozwala na policzenie fotometrii dla zadanej przez użytkownika sceny. Output ten może być w excelu/json-ie lub jeszcze czymś innym. Dodatkowo chciałbym, aby program miał możliwość znajdowania optymalnego rozwiązania. Optymalnego w sensie zużycia energii, paybacku itp. (do przedyskutowania)"

Zakres prac

Numeracja stosowana w całym dokumencie

Temat 1

Bartłomiej Gnojek: Model formalny dla reprezentacji sceny​ w projektowaniu oświetlenia wewnętrznego. (żółty na schemacie)

  • stworzenie modelu formalnego sceny (obiekty, ogólne parametry całej sceny, rozmiary)
  • technologia: preferowany JSON (schema: JSON Schema, transformata: ??? research example, np: jsonT - wygląda ok)
  • dobre poznanie Radiance, aby stworzony model był z nim kompatybilny (+ ew. rozszerzał go)
  • Schema - do walidacji opisów scen, czy są zgodne z modelem
  • Transformata JSONa do formatu Radiance
  • parametryzowanie obiektów sceny ("pomieszczenie z obiektami w środku + tekstury + ew. jakieś parametry dot. właściwości w zakresie odbijania światła+???"), zależne od researchu i postępu pracy nr. 2.
  • wystawienie API (interfejsów) dla pracy 3 dla wszystkich potrzebnych funkcjonalności (dodawanie obiektów, walidacja schemą, transformata JSONa do formatu Radiance, obiekty datamodelu do JSONa i w drugą stronę).

Temat 2

Rafał Salawa: Aplikacja do optymalizacji projektowania oświetlenia wewnętrznego. (zielony)

  • input: output z Radiance + parametry sceny z tematu 1.
  • output: wynik dwóch kolejnych funkcjonalności
  • sprawdzanie spełniania norm oświetleniowych dla sceny - prawdopodobnie te normy dotyczą tylko luminancji na powierzchniach użytkowych, a w outpucie z Radiance dostajemy punkty i wartość luminancji (tylko w niestandardowych jednostkach).
  • 'opłacalność'. Na razie mamy się skupić jedynie na oszczędności energetycznej na początek. Dla zadanej sceny (obiekty + powierzchnie użytkowe + punkty gdzie mają być lampy) i dostępnych źródeł światła ma podać najbardziej opłacalne spełniające normy. Parametry: póki co tylko wybór lampy + jej diming.
  • wystawienie API dla tematu 3, które będzie pobierać input, i po wykonaniu operacji zwracać output.

Temat 3

Jakub Czajkowski: Budowa interfejsu dla biblioteki Radiance do projektowania oświetlenia wewnętrznego. (pomarańczowy)

  • GUI w JavaFX umożliwiające wykonanie całej funkcjonalności projektu
  • połączenie pozostałych modułów w spójną całość
  • integracja z binariami Radiance
  • Brak importu sceny z zewnętrznych formatów
  • lampa na scenie == plik i ies2rad + diming
  • outputem ma być output z modułu 3 oraz podgląd sceny z naniesionym naświetleniem - albo bezpośrednio w aplikacji (do rozeznania), albo wyeksportowanie w znanym formacie.

Architektura

  • Aplikacja desktopowa
  • Interfejs użytkownika w JavaFX (od wersji Java 7u7 wbudowana w JDK)
  • Binaria Radiance dołączone do aplikacji
  • Projekt 3 jest zależny od 1 i 2, łączy on wszystkie moduły i zbudowanie go daje wykonywalny plik JAR całego projektu.

architektura

Środowisko developerskie

  • Java JDK 8
  • Maven
  • IDE dowolne (polecany Eclipse)

Cała aplikacja to trzy moduły Mavenowe, odpowiadające poszczególnym tematom, jeden wspólny dla nich "parent" o nazwie "interlight", gdzie będziemy umieszczać wspólne dla całego projektu zależności zewnętrzne oraz projekt common-datamodel, który będzie wspólny dla wszystkich modułów - będzie to model podstawowych obiektów w całym projekcie.

Między poszczególnymi modułami, wydaje się, że jedyną zależnością jest, że "interlight-interface" zaciąga sobie dwa pozostałe moduły - tak też jest aktualnie zrobione.

Uruchomienie Mavenowego goala install ("mvn clean install") na projekcie parentowym ("interlight") buduje wszystkie moduły, sama aplikacja gotowa do uruchomienia powstaje w "interlight-interface\target\jfx\app".

UWAGA: przy pierwszym odpaleniu prawdopodobnie trzeba zrobić "mvn install -N" na parencie, żeby za pierwszym razem zbudował się bez "dzieci".

Common-datamodel

Projekt stworzony, w celu wydzielenia wszystkich modeli danych, które będą współdzielone przez aplikację. Przykładowo będą tu pewnie klasy na: Lampa, ConfigGUI, Obiekt na scenie, Wynik itp itd. "W praniu" wyjdzie co tu będzie tak na prawdę. Moduł developowany wspólnie przez wszystkich.

Zasady:

  • jeśli istnieje potrzeba stworzenia obiektu datamodelu, który będzie potrzebny/będzie przekazywany do innego modułu, to tworzymy go tu.
  • jeśli już taki tu jest, stworzony przez kogoś innego to nie tworzymy swojej wersji. Możemy w razie potrzeby ewentualnie dodać do niego dodatkowe pola, NIE zmieniając metod/konstruktorów, w razie potrzeby tworzymy swój konstruktor.

Wymagany software do samego uruchomienia aplikacji

  • Java JDK/JRE 8. Uwaga: GUI do uruchomienia wymaga Java 8 w wersji min. 8u40.

Linki