Skocz do zawartości

Rekomendowane odpowiedzi

Napisano (edytowane)

Jeszcze raz witam. Zakładam taki bardziej obszerny temat. Bo problemów pewnie będę miał więcej niż jeden. A i może kto skorzysta i nauczy się geo node blendera.

Otóż zadaniem mym jest stworzenie budynecku opartego na geometry node w blenderze. Tak by można było robić ekspresowo różne wariacje podobnych budynków. Idzie mi całkiem nieźle ale pojawił się pierwszy problem którego nie wiem jak rozwiązać.

Otóż budynek jest skalowalny, wraz z nim oczywiście też dach. Na dachu są dodatkowe elementy randomowe- jak kominy, anteny, itd. Dach skaluje się w takich samych proporcjach co główne "body" budynku- co jest dobre. Niestety kominy (które są rozsiane/przypisane do dachu) też. Co już oczywiście nie jest pożądane. Robią się kobylaste i rozciągnięte (kiedy skaluję po jednej osi).

Jak temu zaradzić. Żeby kominy i cały stuff na dachu się nie skalował?

image.thumb.png.c78c503c9aca3f90ebe9610b8fa9ba5c.png

struktóra nodów dachu i elementów na dachu:image.png.431024e5d6bdabc4ab323b92b9b184fa.png

Edytowane przez JonJoan
  • Like 1
  • JonJoan changed the title to Geo node house for games
Napisano

Jak możesz pomnożyć skalę, to możesz ją też podzielić o tą samą wartość, wystarczy arytmetyka... podepnij to pod skalę kominów itp. powinno starczyć. Ew. to skalowanie podepnij przed sianiem kominów. W blend się nie wgłębiałem. Ale tak na sucho bym kombinował.

  • Like 1
Napisano

kombinowałem w ten sposób. Ale główna zagwozdka to wielkość tej skali. Ja dałem zbyt wysoką, i przy niskiej ilosci modułów kominy się "trochę" skurczyły i zdeformowały.

Napisano

Ale wielkość tej skali to powinien być ten sam parametr zarówno dla powiększania dachu jak i anulowania tego dla instancji kominów itd. Możesz to podpiąć driverem też.

Napisano

W inpucie Vectora zrobiłem, że driverem jest skala obiektu geonodes (Prawy na inpucie "copy as new driver" -> node tree "Paste Driver"), więc niezależnie co tam w skali się zadzieje wielkość komina zostaje taka sama... jeżeli o to chodziło.

image.png.ca7f2447a655cb57f5f2121f19f02ebb.png

  • Like 1
Napisano

To nie takie proste. W zasadzie to można zwiększyć tylko "body" (main part) budynku. I to też nie jest do końca zwiększanie rozmiaru, lecz bardziej dodawanie segmentów. Zwiększanie jest podpięte pod te dodawanie. Żeby np. segmenty nie były ściśnięte.

Dachem nie można sterować, tylko jest on takim "dzieckiem" części głównej. Dodając segmenty do części głównej skaluję ją. Potem z automatu skaluje się dach dach i niestety też kominy.

Próbowałem odwrócić ten proces jaki jest przy skalowaniu głównej części budynku (poprzez nody "substract" i "divide") ale z nieciekawymi rezultatami.

Sprawdzę czym są te drivery

Ooo! widzę że międzyczasie odpowiedź była. Dzięki.

 

Napisano

Ok. zaraz sprawdzę. Ten fioletowy nod "divide"-jak się nazywa? Sorry że takie pytania zadaję ale 3 tydzień dopiero u mnie z geo nodami.

Napisano

Jeszcze jedno. Skąd pochodzi ta wartosć? (niebieskie kołko) Z jakiego obiektu? Wszystki obiekty tego budynku mają u mnie skalę 1.

image.png.6ce236cdb4e6b0cd41df77f86ceb2095.png

Z głownego pewnie. Umnie wszystkie parametry skali głównego obiektu maja wartoć 1,1,1. Chyba nie ma sensu tego nawet kopiowac...image.png.5c7b2b8c9b87d1af042f20d1bf713b23.png

 

Napisano

Tak, to jest obiekt główny. Założyłem, że to jest wartość, którą chcesz sterować skale całego obiektu. Jeżeli sterujesz ją czym innym, to właśnie ów "inne" powinno być driverem dla wartości node'a Vector.

Teraz widzę, że masz tam sides, frontBack i height. No to to powinno być twoim driverem (ale w tym przypadku wystarczy to wpiąć do node'a vector. Ew. musisz sobie znormalizować wartości, dla tego kiedy według ciebie wielkość komina jest standardowa.

Napisano

Tak. "sides", "FrontBack" i "High" odpowiadają za skalowanie- poprzez dodawanie segmentów. Na niebiesko zaznaczyłem nody za to odpowiedzialne. Dodają i skalują segmenty głownej częsci domu. image.thumb.png.f684de01d6f028459251516f61bcd3b3.png

Teraz pytanie: Jak podłączyć vector math node do tych moich zaznaczonych na niebiesko? Ja to zrobiłem w ten sposób i nie uzyskałem dobrego efektu...

Napisano

Raczej bym dzielił przez segmenty niż przez 4. Jedyne z czym możesz mieć problem, że ilość segmentów nie odpowiada wielkości skalowania dokładnie. Wtedy musiałbyś wziąć na to poprawkę. Albo skorzystać z bounding boxa.

Ale jest jeszcze jedno rozwiązanie, teraz patrzę na twojego .blend jak wpinasz dach do instancji to zrób "realize instance" wcześniej, wtedy nie powinien przenieść ci skali dachu. Tylko skorzysta z tego do dystrybucji punktów.

 

image.thumb.png.837710b00d235406857f3b112b2aee6a.png

  • Like 1
Napisano

Ok. Mam następny problem. A mianowicie muszę zrobić pomieszczenia wewnątrz domu. One muszą się skalować wraz z głównym domem a niestety matryca całego obiektu jest tak skonstruowana że elementy domu są osadzone na "vertexach" cube'a. Jak wiadomo- taki cube nie ma vertexów w środku, i dlatego jak się go zeskakuje- cały element jest pusty w środku. Jak na obrazku tutaj:rooms.thumb.PNG.9203d16c9d070cf366b7b8b6e7b05024.PNG

Jak można ten problem przezwyciężyć. Tak by poszczególne piętra były w środku pełne?

Poniżej link do świeżego pliku blend: https://drive.google.com/file/d/1n-JFSxxrOcPxPHf6Dalliv9hlkhIvdSB/view?usp=sharing

image.thumb.png.b66b1d3aee6a86f52457f77f55e0bcf1.png

Napisano (edytowane)

Może zamiast cube, zrób sobie volume i tam zasiej punkty po prostu?

image.png.e65f713b3c18f89f038ac8993eb50406.png

Możesz skorzystać z node'a "mesh to volume" też:

image.png.8ffad529e90848ac9ffd9c74a3e19a3b.png

 

Potem Distribute Points in Volume na grid.

Edytowane przez kengi
  • Like 1
Napisano

Wybrałem tą drugą opcje. Wszystko ok, ale skalując po "Y" (w panelu modyfiers) matryca odpowiadająca za pokoje ma o jeden 'cube" mniej niż główny dom. Pewnie trzeba to skorygować jakim math nodem? Tylko nie wiem gdzie podpiąć. Przesuwam rożne wartości, i szerokość matrycy pokojów się nie zmienia.

Przechwytywanie.thumb.PNG.a674bac4270ca9212533762d6d0a3a6c.PNG

Moje nody:image.thumb.png.65722f4507c9e2e0cf56f39761aa04bc.png

Nie działa też korekcja rotacji. Wszstkie scianki z kwadratem w srodku są skierowane tylko w jedną stronę.

 

Link do aktualnego blend:https://drive.google.com/file/d/1UMwNlKCplpwMzjXug4hE104ESVk2BBMS/view?usp=sharing

Napisano (edytowane)

Hm. Zaprawdę nie wiem czemu Przesuwanie obiektów instance on points, wzdłuż lokalnej osi, raz działa a raz nie. Meble ładnie przesuwają się wzdłóż lokalnej osi, Drzwi już nie.

 

 Może ktoś pomoże? Tu jest zrzut z widoku nodów odnoszących się do drzwi w ścianach, które chcę randomowo przesówać w zdłóż ściany:image.thumb.png.d2515f78268946718d957311fe6b7f8b.png

Tutaj świerzy plik blend: https://drive.google.com/file/d/1fQqAhuCDc484IDBaAWnUpR_uuhQt4JEC/view?usp=sharing

Dzięki z góry!

 

Edytowane przez JonJoan
Napisano (edytowane)

Jakos człowiek musi sobie radzić. Idę do przodu. Ale kolejny problem jest z explozja budynku. Szef jest zadowolony z wizualnego efektu. Problem jednak w tym że jest ona zrobiona na bazie blenderowego rigid body i każdy pojedynczy debris to osobny obiekt. Żeby osiągnąć taki efekt:

 musiałem stworzyć jakieś 480 odrębnych odłamków. Gdy tylko je merguję- efekt jest straszny.

Pytanie do znawców tematu: jak połączyć debrisy w jeden obiekt by nie stracić efektu animacji?

A może zna ktoś jakieś inne ciekawe sposoby tworzenia fajnych eksplozji tak by można było bez problemowo eksportować ją do unity?

Edytowane przez JonJoan
Napisano

Kolejne szybkie pytanko. Czy można extrudować cianę cuba wielekrotnie? Używając tylko jednego noda extrude?

To nie jest żaden fetysz z mojej strony. jeżeli będę chciał teraz extrudować scianę kilkakrotnie to będę musiał użyć kilku oddzielnych nodów. Do każdego z nich podłączyć osobny socket "output" i zrobi się bałagan.image.thumb.png.07125083ba6fe77e0af4383e28d7eacf.png

Napisano

Nie bardzo, możesz użyc opcji simulate (strefa), ale wtedy polegasz na klatkach jako "iteratorze"... inaczej nic mi nie przychodzi do głowy. Możesz to co prawda obejść tworząc np. grupę nodów extrude, z założonym maxem iteracji (jeżeli tego nie jest za dużo) i switchami oraz np. inputem z grupy iterować ile z nich jest aktywne.

Prawilnie chyba musiałoby być coś takiego jak for loop w houdinim. Albo inaczej skonstruowany node extrude.

image.png.8fff4d4d1ac566dd54aba7310f12325c.png

  • Like 1
Napisano (edytowane)

Hello. Da się wyznaczyć ID częsci obiektu z przedziału liczbowego? Teraz mam pojedyńczą liczbę a chciałbym żeby to było kiilka ID. Np. od ID 15 do 18. Jest jakis nod co odpowiada za przedziały liczbowe?image.thumb.png.c8466c14ae25e95a74db0928d6587ad1.png

Przydałoby mi się co takiego do łatania domu...

 

Edytowane przez JonJoan
Napisano (edytowane)

A matematyka na liczbach nie wystarczy? Masz tam Greater i Less Than... Jeden po drugim i masz przedział.

 

Edit:

Możesz to sobie potem zapisać do atrybutu, coś jak tutaj:

image.thumb.png.6e88bd3563dcc9ee4f2f09a269e115eb.png

Edytowane przez kengi
  • Like 1
Napisano (edytowane)
On 10/17/2024 at 1:05 PM, kengi said:

Nie bardzo, możesz użyc opcji simulate (strefa), ale wtedy polegasz na klatkach jako "iteratorze"... inaczej nic mi nie przychodzi do głowy. Możesz to co prawda obejść tworząc np. grupę nodów extrude, z założonym maxem iteracji (jeżeli tego nie jest za dużo) i switchami oraz np. inputem z grupy iterować ile z nich jest aktywne.

Prawilnie chyba musiałoby być coś takiego jak for loop w houdinim. Albo inaczej skonstruowany node extrude.

image.png.8fff4d4d1ac566dd54aba7310f12325c.png

Powyższe nie do końca aktualne... właśnie się dowiedziałem, że masz coś takiego jak Repeat Zones w blenderze...

image.png.d1362afd71a0482e5fca22d8cb64000f.png

A od nowszej wersji będzie też For Each Element:

 

Edytowane przez kengi
  • Like 1
Napisano

Hello! Męczę pewną kwestię od dłuższego czasu. On się ciągle przewija- a możliwe że rozwiązanie jest proste. Chodzi o zaznaczenie tej części ściany (dwa niebiekie zanaczenia), która przylega do narożnika- ale tylko po jednej osi. W tym przypadku osi "Z". Chcę żeby właśnie ta część ściany była odcedzona. Niezależnie od skali i gęstości obiektu. Da się?image.thumb.png.4b5113e99b1ae7be56f07e90249b5657.png

Quote

Powyższe nie do końca aktualne... właśnie się dowiedziałem, że masz coś takiego jak Repeat Zones w blenderze...

Tak. Dowiedziałem się. B. ciekawa opcja. Sprawdzę tą drugą jeszcze.
Napisano

Hello Again. Kolejny problem się pojawił. Chciałem zmienić samplowanie krzywej. By można było zamieścić więcej punktów. Broblem z tym że krywa (kwadrat) zniekształciła się na rogach.image.thumb.png.2e3474ff3658ae854859bf39b81b899b.png

Tutaj krzywe z  wyłączonym resample:image.thumb.png.82c061a00d26a741cdee1916dd0fb978.png

Co zrobić żeby po zastosowaniu ressample krzywa zachowała krztałt kwadratu?

Napisano

Chyba w takim przypadku lepiej dać Subdivide Curve.

16 hours ago, JonJoan said:

Chcę żeby właśnie ta część ściany była odcedzona. Niezależnie od skali i gęstości obiektu. Da się?

Tutaj ci konkretnie nie powiem, ale obejrzyj sobie to i będziesz wiedział na pewno 🙂

 

  • Like 1
Napisano
Quote

Chyba w takim przypadku lepiej dać Subdivide Curve.

Dosyć ciekawe rozwiązanie, ale ressample lepsze. Subdivide podwaja mi liczbę okien: image.png.03f93ecd054f95e6e48ff310f79b1f6b.pngimage.png.90b1d883fc16087515e766fb37085b34.png

Quote

Tutaj ci konkretnie nie powiem, ale obejrzyj sobie to i będziesz wiedział na pewno 🙂

Jasne. Biorę się za oglądanie. Thnx.

Napisano (edytowane)
40 minutes ago, JonJoan said:

Dosyć ciekawe rozwiązanie, ale ressample lepsze. Subdivide podwaja mi liczbę okien

Teraz widzę, że ty tam dajesz Instance on Points a wcześniej zamieniasz curve na mesh i mesh na points... to niepotrzebne, możesz tam wpiąć krzywą od razu, ten node tak korzysta tylko z punktów. Tak samo można od razu mesh wpiąć nie trzeba zamieniać na points.

Resample w tym przypadku nie tyle ci zniekształca na rogach krzywą, tylko resampluje ci tak, że akurat dla tego rozstawu odległości od punktów nie daje nowego punktu w tym samym miejscu co oryginalna krzywa w narożniku.

Możesz też połączyć kilka krzywych jedną oryginalną przed resample, a potem dodać resample, wtedy powinieneś mieć dodatkowe punkty i mieć zachowane punkty z oryginału. Ale nie do końca rozumiem po co ci zachowanie kształtu skoro ty i tak tylko wykorzystujesz punkty do zasiania okien?

Oryginalna krzywa 4 punkty:

krzywa.thumb.jpg.f8af6b91e027c5118177532afe8f468d.jpg

 

Krzywa po resample, ale tak, że akurat punkty trafiają w narożniki, więc się nic nie zniekształca:

k2.thumb.jpg.e66f461b67dbc59427f7fc3688f043de.jpg

 

A tutaj krzywa z innym rozstawem resample, punkty leżą na krzywej, ale nie na narożnikach, dlatego jak patrzysz na krzywą (obrys na niebiesko ), a nie na punkty to niby się coś rozjeżdża. Ale wszystkie leżą na krzywej oryginalnej (żółta):

k4-Copy.jpg.6d36c55d3a90f1ff2d37bb3a984326ac.jpg

 

A tu masz połączone punkty z obu krzywych via join geometry zwykłe (możesz mieć w takim wypadku podwójne punkty blisko siebie, ale to możesz użyć merge by distans [chociaż w tym wypadku wcześniej musisz użyć curve to mesh, bo to działa tylko na meshach] i wywalić te które są za blisko):

k8.thumb.jpg.44c85cff80af2766f4df1a5ae95686ed.jpg

 

Nie wiem co chcesz dokładnie osiągnąć, ale jak używasz Instance on Points to i tak brane pod uwagę są jedynie punkty i ta krzywa w sensie jej linia nie ma znaczenia.

Edytowane przez kengi
  • Like 1
Napisano

Wielkie dzieki za tutorial na temat selekcji. Rozwiazał problem lokalizacji modułów na narożnikach. Wszystko ładnie działa, jest responsywne- i co najważniejsze, narożniki sie nie przesuwają.

Quote

 Teraz widzę, że ty tam dajesz Instance on Points a wcześniej zamieniasz curve na mesh i mesh na points... to niepotrzebne, możesz tam wpiąć krzywą od razu, ten node tak korzysta tylko z punktów. Tak samo można od razu mesh wpiąć nie trzeba zamieniać na points.

To na bazie tutoriala było robione. Gdzie Hindus zorganizował rozmieszczanie okien w taki właśnie sosób. Zrobię jak zasugerowałeś i miejmy nadzieję że bedzie korrect. Dzięki za twoje dotychczasowe tipy- póki co.

 

  • +1 1

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności