czwartek, 31 marca 2011

Nowy projekt - Shadow Analysis Plugin dla Sketchupa

Od kilku dni pracujmy nad nowym projektem. Jest to nasz pierwszy plugin do bardzo popularnego i darmowego programu Sketchup. Pomysł stworzenia takiej aplikacji zrodził się w głowie mojego brata. Na swoim blogu opisał on w jaki sposób można rozwiązać problem obliczeń zacienienia, z którym spotykają się architekci. Jego wpis spotkał się z nadspodziewanie dużym zainteresowaniem więc postanowiliśmy stworzyć prosty w obsłudze program realizujący tą funkcjonalność.

Pierwszą wersję programu Tomek napisał w processingu. W związku z tym, że uzyskanie satysfakcjonujących wyników wymagało przygotowania na prawdę dobrych danych do analizy, nadawała się ona do użytku najwyżej osobistego. Wątpię żeby udało się znaleźć więcej niż 10 osób, które domyśliłyby się jak trzeba ustawić rendering w programie 3d aby wynik analizy był chociaż zbliżony do prawidłowego.

Rozwiązaniem tych problemów okazał się prosty program do edycji 3d rozwijany przez malutką firmę Google Inc. - Sketchup. Sketchup poza oczywistymi zaletami jak łatwość obsługi i 'darmowość' posiada jedną bardzo przyjemną cechę - API oraz konsolę Ruby. Dzięki niewielkim skryptom można zautomatyzować niemal wszystkie operacje związane z przygotowywaniem danych oraz umieścić w tym samym pluginie algorytm analizujący i przygotowujący wyniki.

Gdy Tomek poprosił mnie o pomoc i powiedział, że wiąże się z tym programowanie w Ruby byłem zachwycony i od razu wziąłem się do roboty. Druga wersja jego algorytmu, która napisałem działała już w Ruby jednak wymagała doinstalowania bibliotek ImageMagick i RMagick co, mówiąc delikatnie było problematyczne. Zapadła więc decyzja, że zamiast za pomocą bibliotek analizować pixele danych wejściowych w jpg będziemy analizowali bajty z plików bmp.

Trzecia wersja algorytmu operująca na bajtach powstała następnego dnia i okazała się spełniać wszystkie oczekiwania. Działa szybko, niezawodnie i co bardzo ważne nie wymaga żadnych dodatkowych bibliotek. Oto kilka gotowych analiz (kolory reprezentują ilość godzin zacienienia, od 1h do 10h)





W tej chwili kończymy wersję demo pluginu, która będziemy chcieli rozdać kilku testerom.

1 komentarz: