Website powered by

Blender-OSM chimneys raycast based spawner

Dzięki naszym wspaniałym dziewczynom – graficzkom z Odyssey, często zwalnia mi się trochę czasu, kiedy nie muszę rysować geometrii 3D. Penetruję wtedy różne możliwości tworzenia narzędzi do lepszego i sprawniejszego stawiania naszego produktu. Dużo rozpisywałem się wcześniej o skryptowaniu w środowiskach 3D. Blender od wersji 2.92 umieścił "silnik" - Geometry Nodes (GN), który jest próbą stworzenia substytutu trudnego i drogiego Houdiniego. Jego interfejs ma wiele cech systemów wizualnego programowania. Na wyjściu osiąga się modyfikatory, które nałożone na geometrię realizują swoje procesy. O GN będę jeszcze pisał bardzo wiele i przy różnych okazjach. Jednym z podstawowych rdzeni GN jest operator Raycast`ujący. W poniższym przykładzie pokazuję (niestety nie mogę w szczegółach) proste narzędzie scatteringowe mojego pomysłu rozprowadzające assety kominowe na dachach zabudowy generowanej przez Blender-OSM. To proste, a jednocześnie w pełni parametryczne narzędzie jest drobną cegłą w skomplikowanym dość procesie budowy otoczenia do sprzedażowej aplikacji deweloperskiej Odyssey. W tym przypadku realizm próbuję uzyskać na zasadzie sumy drobnych jego składników, których jednym z elementów są właśnie elementy dachowe drugiego i trzeciego planu wizualizacji.

Roboczy render RT (UE4) 3 planu miasta. Suma drobnych elementów zwiększających poczucie realizmu odbioru.

Roboczy render RT (UE4) 3 planu miasta. Suma drobnych elementów zwiększających poczucie realizmu odbioru.

Jak wyżej, nieco inny kadr.

Jak wyżej, nieco inny kadr.

Jak wyżej, nieco inny kadr. Kadry pochodzą z aplikacji sprzedażowej dla deweloperów firmy Odyssey Crew.

Jak wyżej, nieco inny kadr. Kadry pochodzą z aplikacji sprzedażowej dla deweloperów firmy Odyssey Crew.

Roboczy, bez tekstur, render RT (UE4) . Kominy jako istotny element dodający realizm tego planu.

Roboczy, bez tekstur, render RT (UE4) . Kominy jako istotny element dodający realizm tego planu.

Jak wyżej, nieco inny kadr.

Jak wyżej, nieco inny kadr.

Zabudowa wygenerowana na odstawie danych z OSM. Kominy rozproszone (scattering) za pomocą autorskiego modyfikatora Geometry Nodes (GN).

Zabudowa wygenerowana na odstawie danych z OSM. Kominy rozproszone (scattering) za pomocą autorskiego modyfikatora Geometry Nodes (GN).

Wyglad generowanej przez Blender-OSM plugin zabudowy OSM. Geometria powstaje bez detali dachowych.

Wyglad generowanej przez Blender-OSM plugin zabudowy OSM. Geometria powstaje bez detali dachowych.

Scattering kominów na dachach za pomocą modyfikatora GN. Modyfikator 
próbuje (z nieco ograniczonym skutkiem) również ustawić komin zgodnie z osiami zabudowy.

Scattering kominów na dachach za pomocą modyfikatora GN. Modyfikator
próbuje (z nieco ograniczonym skutkiem) również ustawić komin zgodnie z osiami zabudowy.

Inne ujęcie (Blender offline render). Osie kominów ustalane są na podstawie próby odczytu normalek najbliższych elementów geometrycznych, na które trafia raycast.

Inne ujęcie (Blender offline render). Osie kominów ustalane są na podstawie próby odczytu normalek najbliższych elementów geometrycznych, na które trafia raycast.

Raycast wypuszczany jest z emitera z parametryczną gęstością. W przypadku nie trafienia w dach, usuwa spawnowany w tym miejscu komin. Tutaj przesadzony parametr gęstości raysów dla uwydatnienia metody.

Raycast wypuszczany jest z emitera z parametryczną gęstością. W przypadku nie trafienia w dach, usuwa spawnowany w tym miejscu komin. Tutaj przesadzony parametr gęstości raysów dla uwydatnienia metody.

Konstrukcja autorskiego modyfikatowa raycastowego, na "silniku" Geometry Nodes Blendera.

Konstrukcja autorskiego modyfikatowa raycastowego, na "silniku" Geometry Nodes Blendera.

RayCast`owy rdzeń modyfikatora oraz sposób przeliczania normalki dachu spadzistego dla określenia wyróżnionej osi budynku. W przypadku płaskich dachów wynik może być nieokreślony.

RayCast`owy rdzeń modyfikatora oraz sposób przeliczania normalki dachu spadzistego dla określenia wyróżnionej osi budynku. W przypadku płaskich dachów wynik może być nieokreślony.

Definiowanie "emitera" którym jest umieszczony nad geometrią płasko-równoległa do XY sieć, na której rozprowadzane są z pewną przypadkowością punkty będące późniejszymi punktami raysów. Ich gęstość jest parametryczna.

Definiowanie "emitera" którym jest umieszczony nad geometrią płasko-równoległa do XY sieć, na której rozprowadzane są z pewną przypadkowością punkty będące późniejszymi punktami raysów. Ich gęstość jest parametryczna.

Geometria kominów pobierana jest ze zdefiniowanej w Blenderze kolekcji. Już po zespawnowaniu kominów we wszystkich traysowych punktach, eliminowania jest ich "no-hit`owa"  część. Na koniec wprowadzane są dodatkowe randomowości - drobne odchylenia od skal.

Geometria kominów pobierana jest ze zdefiniowanej w Blenderze kolekcji. Już po zespawnowaniu kominów we wszystkich traysowych punktach, eliminowania jest ich "no-hit`owa" część. Na koniec wprowadzane są dodatkowe randomowości - drobne odchylenia od skal.