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
Napisano (edytowane)
Hello. Dałoby radę tak ustawić te dwa zaznaczone obiekty, aby na domku pojawiały się losowo? A nie jak teraz- że albo jedne albo drugie? Udostępniam plik blend do przeglądu. Jakby pojawił się jakiś pomysł- można wejść i obejrzeć. Ja nie to nie ma co się kłopotać. Jak zwykle coś wymyślę... Choć nie powiem. Zależy mi bo głowiłem się nad tym 2-3 godziny. https://drive.google.com/file/d/15bTQVg67h_0ld_YKRQaoohPaKxmJ4yXk/view?usp=sharingimage.thumb.png.fa130e8e36d2a674da8dc990f855112b.png
 
Edytowane przez JonJoan
Napisano

Nocka, idę już spać, ale tak na mój sekundowy rzut oka... chyba chcesz wykorzystać te dwa sloty i losować index. Wrzucasz obiekty do kolekcji, ją wpinasz do Instance, zaznaczasz pick instance i losujesz instance index (node: random number).

 Więc tam chyba to drzewko musisz przebudować inaczej trochę.

image.png.2131a521f5de955363db1948902bbbb7.png

  • Like 1
Napisano

Próbowałem to zastosowanie wcześniej ale nie daje rady. Jak przesówam "seed"- rodzaje okien się co prawda zmieniają. Ale jednocześnie na budynku widnieje tylko jeden rodzaj okna na raz. Ok. Dzieki za fatygę przed snem. Dobranoc. image.thumb.png.f762bddb8a29e7988632c8f3bf7c2051.png

Napisano

No ale masz tam jeden punkt. Musisz mieć te punkty dla okien wszystkich i dopiero na nich siać obiekty. A nie na jednym punkcie, to wiadomo, że wylosuje jedno z dwóch i tyle.

U mnie działa tak jak powinno, ale ja mam więcej punktów na wejściu:

Clipboard01.thumb.jpg.b7308fbe9f67381a65f4809bc753c68a.jpg

  • Like 1
Napisano

Jasne. Ale za mnie przypał. Wczoraj wieczorem to robiłem a że byłem umęczon to sięgnąłem po takie oto rozwiązanie. Dzisiaj rano tak coś jarzyłem że to dlatego nie mogło się udać. Dzięki za potwierdzenie mimo wszystko.

 

Napisano (edytowane)
Hello. Czy jest jakaś możliwość wyłączenia (wyciszenia chwilowego) noda (boolean) za pomocą innego noda. Trochę jakbym użył klawisza M. Chodzi mi o to żeby wyłącznik/włącznik pojawiał się w panelu modyfikatora.
Image
Image
Edytowane przez JonJoan
Napisano (edytowane)

Z innej strony tak jakby spojrzeć, to wydaje mi się, że "switch" node powinien zrealizować to, czego potrzebujesz. Ma dwa wejścia, gdzie do jednego podepniesz to co zaznaczony node dostaje jako input (czyli przed działaniem tego node'a) a do drugiego podepniesz output zaznaczonego. I jest dodatkowe wejście do wybierania, który input chcesz przesłać na output.

 

image.png.8cd7c03a8b8232917daeefd6d427de59.png

Edytowane przez VGT
  • Like 1
  • +1 1
Napisano

Dzięki. Działa. image.thumb.png.a2b5e430022ba526fea0fbec5418be69.png

image.thumb.png.60cda196ebf078bd30d482afbde6379c.png

Tak przy okazji. Dałoby radę zlikwidować jakoś te paskudne rozciągnięcia w miejscu boolean? Wiem żże chyba da radę poprez mapowanie. Nie wiem czy nie trzeba zmienić mapowania z UV na 3d. Gdzieś widziałem tutorial na ten temat ale nie mogę odnaleźć...image.png.c17d680961d0230690df652bd914bfcd.png

Napisano (edytowane)

Przy wycinaniu za pomocą boolean difference te nowo utworzone face'y kradną UV z obiektu, którym wycinasz. Zobacz, czy na nim jesteś w stanie zrobić dobry unwrap, żeby tekstura ładnie leżała.

Chyba da się w geo nodes też kontrolować poszczególne vertexy UV, coś mi się kojarzy, że kiedyś próbowałem za pomocą geo nodes algorytmicznie wygenerować UV unwrap, ale to chyba w tym przypadku byłoby o wiele za dużo zachodu.

Najprostsze, co mi przychodzi do głowy w takiej sytuacji, to zasłonić to miejsce innym komponentem jak parapet/framuga, ale widzę na innym załączniku, że już to robisz.

Edytowane przez VGT
  • Like 1
Napisano
Szybkie pytanko. Ten wewnętrzny grid, który mamy w geometry node, możemy używać jak zwykły mesh? Np. unwrapować go i nadać texturę? image.png.8cdb8079926f5120f99205cd1de239da.png
Napisano

Jak zrobisz Apply Modifier z tego geonoda,
image.png.7cb99dc671de81fc4180001e2d5e2689.png
to staje się zwykłą geometrią. Jak chcesz unwrapować jeszcze w geonodach, to musisz się już bawić proceduralnie jak tutaj np.:

 

  • Like 1
Napisano

Hello. Zauważyłem że obiekty zapodane do geometry node tracą swój smooth shading. Da się go jako odzyskać? Użyłem shade smooth node- ale nic z tego. image.thumb.png.7bd37eab561eb1d47df93132e5abd16d.png

Napisano

No to właśnie jest do tego, może gdzieś sobie to nadpisujesz jakoś, albo podajesz instancję jakoś przed smoothem... generalnie powinno to działać. Pokombinuj z kolejnością; ew. pokaż drzewko.

  • Like 1
Napisano (edytowane)

Wygląda na to, że masz na tym cylindrze wrzucony auto smooth, czyli de facto zestaw geonodów jako modyfikator. Wywal z komina/cylindra, którego potem wrzucasz na dach autosmooth-modyfikator. To nowe podejście do wygładzania. Jak widać w niektórych przypadkach jest to problem. Wtedy ten Set shade smooth powinien działać jak się wydaje, że powinien.

Ew. zmień z Faces na Edges.

To jest zestaw nodów z autosmooth, możesz to powtórzyć albo nawet skopiować i wrzucić do siebie jak potrzebujesz większej kontroli, np. kąta.

smooth.jpg

Edytowane przez kengi

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