legomir Napisano 13 Październik 2013 Napisano 13 Październik 2013 (edytowane) Właściwie miała być to praca na mały contest ze znajomymi jednak z niego nic nie wyszło, więc draże temat nadal, ale już sam. Celem jest stworzenie proceduralnej pajęczyny generującej się w uzależnieniu od otaczającej jej geometrii dającej jak największą kontrole użytkownikowi, a później zagadnienie symulacji i być może renderingu. Do końca co prawda jeszcze bardzo daleko i czekają mnie setki problemów do rozwiązania, a nie mam dziś siły na walkę z assetem to prezentuje stan na dzień dzisiejszy, a ponieważ wiem, że raczej nie wiele osób się tym interesuje wie jak to działa to będzie to w postaci pokazującej kolejne kroki. Efekt: Napoczątek, tak wygląda dotychczas wykres nodów, które dotychczas użyłem: Kolejne kroki: Ten „net box” odpowiada zaprzykładową geometrie, której używam do sceny, w przyszłości tasekcja będzie wyglądać nieco inaczej i użytkownik będzie tampodłączał swoją geometrię. Kolejny jest odpowiedzialny za„pointer” punkt wyznaczający środek pajęczyny i od, któregopotem mierze odległość. To co tu się dzieje to dość ciekawasprawa, rozwiązanie jakie ściągnąłem z tutoriala Alberta„tmdaga” Szostkiewicza(http://tmdag.com/vopraytracer-pt2/) służące u niego w raytracerze. Do czego posłużyło u mniewytłumaczę za chwilę. Krótko o co w tym chodzi. Node „In” togeometria sceny w postaci nie zmienionej. „Line 1” tworzy linię,a ekspresja(prawy górny róg, Points”) liczy ilość face w nodzie„In” powodując, że linia ma tyle samo punktów co scenageometri. Node „Add” jest tam właściwie nie potrzebny, aledodałem go z powodu własnej wygody i przyzwyczajenia, usuwa on wtym wypadku wszystkie połączenia między punktami i zostawiajedynie punkty. Ponieważ mam dość słaby komputer, apajęczyna rozkłada się niemal po płaszczyźnie plenarnej musiałemmusiałem wykluczyć część ścian na, których nie powinno byćpunktów. Dzieje się to w ten sposób, że Transfer_Pos zmieniapozycje poszczególnych punktów z „Line” na pozycje w środkuposzczególnych face(cały czas to sposób z tutoriala tmdaga).Następnie mierze dystans pomiędzy kolejnymi punktami a pointerem wosiach X, Y i Z. Jeżeli odległość jest mniejsza niż podana przezużytkownika to koloruje na czerwono. Wygląda to tak: Sphere to node, który dodałem wtrakcie testów umożliwia on użytkownikowi zoorientować się wobszarze w, którym szuka punktów. Kolejno kolor punktów sprzedchwili jest transeferowany na kolor face geometrii sceny i kasowanyjeżeli nie jest czerwony. Teraz część, która sprawiła miduże problemy i udało mi się rozwiązać problem dzięki wskazówceUncle, za co zresztą mu dziękuje ;) Jak widać na obrazkuwysccaterowane punkty mają losowe ID, co uniemożliwia zrobieniepotem obręczy w pajęczynie musiałem je, więc posegregowaćzgodnie z ruchem wskazówek zegara. Musiałem, więc zmienić pozycjewektorowe [x,y,z] na pozycje polarne a następnie je pomnożyć przezsiebie. Przed: I po: Następnym krokiem było stworzeniepionowych linii. Co było już stosunkowo proste, bo wystarczyłopołączyć punkty ze scattera z pointerem. Ponieważ poszczególneobręcze są w podobnej odległości to za pomocą krótkiej ekspresiuzależniłem ich ilość w stosunku do długości krzywej. Ostatniedwa nody są pomocne przy robieniu obręczy. Sort numerujeposzczególne punkty od początku lini(pozycja pointer) do końca.ennumerate przypisuje kolejne indexy obręczy. Ktoś możezastanawiać się po co liczę to dwa razy. Punkty w Houdinim sąnumerowane globalnie tzn. program liczy po kolei wszystkie punktyjakie obecnie „widzi”. Potrzebuje, więc policzyć to lokalniedla każdej nitki. Kolejnym zadaniem jest stworzenieobręczy. Dziwne może się wydawać użycie „Delete”, tymczasemkopiuje primitive(trudno mi to przetłumaczyć będzie to coś wrodzaju obiektu) z numerem 0 z nitek tak aby były one połączone wokrąg. Pierwszy Add usuwa wysztkie połączenia między punktami.Delete za pomocą tej ekspresji: Kasuje punkty z indeksami, których niechce łączyć w obręcze. Na końcu łącze to wszystko w całość.Dużo rzeczy jest jeszcze do poprawienia/zmiany/naprawienia.Właściwie gdybym nie był tak zadowolony z przezwyciężenia kilku problemów nie pokazywałbym na forum. Kolejnym krokiem będzie dodanie bardziej „artystycznego” sposobu kontroli na tym gdzie występują obręcze i losowości ich łączenia. O ile ktoś dotarł do końca i opublikowałem już jakiś wip to wielkie dzięki dla benego i Ca MEL z forum za to iż mimo że od długiego już czasu za daje im mądrzejsze i głupsze pytanie cierpliwie odpowiadają i doradzają różne rzeczy. Cholera końcówka wygląda niemal jaktestament, zauważyliście? :P PS Pointerem można ruszać, zmieniając w realtime pajęczynę czego nie pokazałem ponieważ w tej chwili do testów jest na dość twardo jego położenie określone. Edytowane 13 Październik 2013 przez legomir
Lucek Napisano 13 Październik 2013 Napisano 13 Październik 2013 Zawsze imponowało mi bycie proceduralnym (to jest już chyba styl bycia;) ). Wciąż jednak takie zabawy mają IMO wątpliwą użyteczność. Obserwuję wątek z uwagą.
deshu Napisano 13 Październik 2013 Napisano 13 Październik 2013 Legomir - dzięks za step by step. Jak sam mówisz, droga jeszcze dośc daleka. Najbardziej brakuje mi: - wpływu grawitacji; to nadaje rzeczom naturalnym naturalnego wyglądu:) - nitek, które nie dochodza do obiektu zaczepienia; mam na myśli, że nie wszystkie rozchodzące się z środka nitki, powinny być łączone z geometrią, którą pajęczyna oblepia. Właściwie takich jest w pajęczynie zazwyczaj dośc mało, zdarza się, że tylko trzy. Lucek. Wątpliwą użyteczność? Dla mnie np: możliwośc rozsiania trawy, gdzie każdy liść jest nieco inny, powoduje że 3d wskakuje na kolejny poziom.
legomir Napisano 13 Październik 2013 Autor Napisano 13 Październik 2013 @deshu do grawitacji to jest okropnie daleko, bo to zrobi z automatu przy symulacji solver, to drugie o czym mówisz zauważyłem ale dotyczy części, której nie chce za bardzo w tej chwili zmieniać i muszę się zastanowić jak to zrobić(są dwie możliwości, jedna polega na tworzeniu a druga na kasowaniu choć może coś nowego mi do głowy wpadnie). W najbliższej przyszłości wezmę się za temat sterowania obręczami do poziomu jaki bym chciał osiągnąć tak, żeby ten etap odhaczyć, a potem małymi nitkami na łączeniach w punktach przecięcia. @Lucek moja zabawa akurat specjalnie sensu nie ma i duża część rzeczy jakie zrobię będzie moją fanaberią, bo tak na serio da się załatwić to kilka(może kilkanaście) razy wolniejszych sposobem używając do generowania voronoia. Sam proceduralism ma za to olbrzymi sens jak dla mnie od pewnego stopnia skomplikowania jest wręcz obowiązkowo potrzebny żeby w ogóle ogarnąć temat(nawet w naturze ;) ) Zresztą sam temat pajęczyn jest momentami dla mnie trudny, bo mam arachnofobie, a musiałem nieco pochodzić i poprzyglądać się pajęczyną z bliska. Będę w najbliższym czasie robił też drugi projekt, wiec potem wrzucę parę rzeczy, bo właściwie samo prowadzenie wątka jest bardzo motywujące.
deshu Napisano 13 Październik 2013 Napisano 13 Październik 2013 Pewnie znasz ten skrypt: http://jokermartini.com/2012/05/09/cobwebs/ Pewnie można by w nim trochę podpatrzyć metodologie.
legomir Napisano 26 Lipiec 2014 Autor Napisano 26 Lipiec 2014 Zabrałem się za to ostatnio. Postępy będę wrzucał w tym temacie: http://max3d.pl/forum/showthread.php?t=94416
Rekomendowane odpowiedzi
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ę