Napisano 8 Luty 201312 l Jak zasugerował SYmek utworzyłem temat na forum i zadaje kilka pierwszych pytań. Nr.1: Utworzenie osobnej grupy dla każdego primitiv albo kilku z nich za pomocą jakiegoś wzoru.
Napisano 8 Luty 201312 l PartitionSOP tworzy grupy zgodnie z wyrażeniem w polu "Rule". Wyrażenie group_`$PR` zwraca nazwę grupy stworzoną ze zmiennej $PR, czyli numeru prymitywu. Łatwiej się nie da... Oczywiście wyrażenie może być dowolne. Będzie wykonane dla każdego elementu (punktu lub prymitywu). W menu po prawej jest taki na przykład preset: color_`rint($CR*255)`_`rint($CG*255)`_`rint($CB*255)` który, jak widać, tworzy grupę według koloru elementu. Edytowane 8 Luty 201312 l przez SYmek
Napisano 9 Luty 201312 l Autor Nr. 2. Mam kilka boxów o różnej długości i teraz skopiować w jednej linii aby losowo wybierało ich długość jak coś takiego można osiągnąć?
Napisano 9 Luty 201312 l legomir napisał: Nr. 2. Mam kilka boxów o różnej długości i teraz skopiować w jednej linii aby losowo wybierało ich długość jak coś takiego można osiągnąć? Słowa klucze: CopySOP/stamping, SwitchSOP, instancje. Wszystko o kopiach oraz instancjach: http://www.sidefx.com/docs/houdini12.1/copy/ Wszystko o technice copy/stamping: http://www.sidefx.com/docs/houdini12.1/copy/tutorial_stamping Poręczne video: http://www.sidefx.com/index.php?option=com_content&task=view&id=1868&Itemid=132 ... i w końcu link z Helpa z *dokładnym* przykładem tej techniki: http://localhost:48626/examples/nodes/sop/copy/StampRandom
Napisano 9 Luty 201312 l No, dobra, ponieważ Legomir nalegał wczoraj, żeby grupy per prymityw zrobić tak jak w Mai, bo w Mai to jest proste, teraz wersja a'la Maya: def createGroup(group_name, pattern, inNode): """ Tworzy GroupSOP per prymityw. """ group_name = group_name + str(pattern) parent = inNode.parent() groupNode = parent.createNode("group") groupNode.parm("crname").set(group_name) groupNode.parm("pattern").set(str(pattern)) groupNode.setFirstInput(inNode) groupNode.moveToGoodPosition() return groupNode # Wybrany node: selected = hou.selectedNodes()[0] # Interesują nas tylko Sopy: if selected.type().category() == hou.sopNodeTypeCategory(): #Lista wszystkich prymitywów: prims = selected.geometry().prims() inNode = selected groupNodes = [] name = "group_" for prim in prims: outNode = createGroup(name, prim.number(), inNode) inNode = outNode groupNodes.append(inNode) # Na koniec spakujemy tę kupę bezsensownych nodów w subnet: subnet = selected.parent().collapseIntoSubnet(groupNodes) subnet.moveToGoodPosition() subnet.setDisplayFlag(1) subnet.setRenderFlag(1) Chyba nie ma głupszego powodu użycia skryptu, ale w ramach wprowadzenia może się przyda. Możemy to wkleić w shell Pythona, a potem zaznaczyć i przeciągnąć na shelf, aby utworzyć nowy tool. Potem trzeba mu niestety ręcznie zmienić język z hscript na Python i gotowe.
Napisano 9 Luty 201312 l Autor Wcale nie nalegał tylko naginanie jego wyobraźni w jeden dzień ma pewne granice poza tym ciągle się uczy jak to cholerstwo działa po całości, a działa (nie)stety całkiem inaczej niż wszystko. Tak czy inaczej dzięki.
Napisano 10 Luty 201312 l Autor NR.3 Walki i pytań ciąg dalszy, bo jednocześnie Stamping to jest to czego chce i nie jest to czego chce. Chodziło mi o stworzenie czegoś w rodzaju generatora podłóg dla ćwiczenia, ale parametr $PT działa dla każdego punktu tempelate, a ja chce żeby działało dla każdego nowo wykreowanego prima albo punktu z użyciem $CY albo $NCY nie działało. W poszukiwaniu innych rozwiązań doszedłem do tego, że albo można zrobić prosty L-System dla tego aczkolwiek nie wiem czy to sensowne, albo można napisać kod w Pythonie, którego jak na razie bym wolał unikać. Jaka opcja jest najlepsza albo ja powinno się to robić no i gdzie popełniam błąd w myśleniu?
Napisano 10 Luty 201312 l Nie wiem o jakie podłogi Ci chodzi, ale podejrzewam, że wszystko, co potrzebujesz widzieć jest opisane w linkach powyżej. Zostaw LSystemy i Pythona, bo to armata na komara. Załączam prosty przykład. Można to zrobić dużo, dużo lepiej i pewnie prościej, ale dałem sobie 10 minut, a poza tym nie znoszę tych wszystkich proceduralnych generatorów, nudzą mnie :(. Celowo nie opisuję nodów, żebyś miał z tego jakąś zabawę :P podGen.otl.zipNiedostępne
Napisano 16 Luty 201312 l Autor Nr. 4. mam chmurę punktów ze scattera, animuje na niej scaleX i Z rotacjeY, potem lekkie tubulance za pomocą vop sopi teraz chcę na to dać lekką rotacje per point z ograniczonym kątem jak coś takiego uzyskać?
Napisano 16 Luty 201312 l Z matematycznego punktu widzenia punkty nie mają orientacji, więc nie mogą się obracać. To co się obraca to układ współrzędnych przyczepiony to punktu. W najprostszym przypadku układem współrzędnych może być wektor, choć to bardzo niedoskonały układ. Solidnym układem jest macierz (3 x wektor). Układ w przeciwieństwie do punktu ma swoją orientację (względem innego układu, czyli obiektu). Macierz rotujesz w Vopach jednym nodem który przyjmuje kąt w radianach oraz oś obrotu. Gotową rotację najprościej obserwować przenosząc dowolny wektor do układu współrzędnych punktu. Czyli macierz -> rotacja -> aplikacja na wektor. A reszta jest w Helpie :)
Napisano 16 Luty 201312 l Autor Cały problem w tym, że średnio mi idzie chyba szukanie czegokolwiek w helpie. Zwykle jak coś robię to tworzę większość w parę minut i zonk na cały dzień. Hmm... nie ma jakiejś książki, która opisuje wszystko?
Napisano 16 Luty 201312 l legomir napisał: Zwykle jak coś robię to tworzę większość w parę minut i zonk na cały dzień. No to jak w parę minut rotujesz punkty w Mai? Cytat Hmm... nie ma jakiejś książki, która opisuje wszystko? Ponoć Britannica jest niezła, tylko droga. Za to Wikipedia jest na wyciągnięcie ręki :) Podałem Ci słowa klucze: macierz, rotacja. Mam wrażenie, że Ci się po prostu nie chce szukać. Jakbyś wklepał "rotate" w Helpie wiedziałbyś, że dwa z trzech przykładów do RotateVOP wyjaśniają wszystko.
Napisano 16 Luty 201312 l Autor Dziś nawet chciałem użyć tego noda ;) Więc w takim razie to chyba moja tendencja to pomijania plików z examples, obiecuje się poprawić :P Użyłbym pewnie particli do tego, co zupełnie nie byłoby potrzebne z tego co widzę ;) Poza tym żeby przestać być ignorantom chyba najpierw trzeba nim być :P
Napisano 16 Luty 201312 l Wszyscy jesteśmy ignorantami, inaczej się dziś nie da. Chodzi o to, żeby walczyć samemu a pytać o konkrety, kiedy czegoś nie możesz znaleźć. ps cząsteczkami też mógłbyś to zrobić w H. btw.
Napisano 17 Luty 201312 l legomir napisał: Hmm... nie ma jakiejś książki, która opisuje wszystko? Jakis czas (dawno) temu Symek pokazal mi to: https://www.khanacademy.org/ , sam czesto zagladam, jak nie zrozumiesz na Wiki to tu najprawdopodobniej znajdziesz video, przyklady.
Napisano 5 Lipiec 201311 l Autor Jakieś wskazówki jak uzyskać taki efekt przy fracturingu? Kombinuję z tym dziś, ale nie mam pomysłów. (1:17)
Napisano 6 Lipiec 201311 l Przecież chłopak opowiada w video, jak to osiągnął. Zacznij robić, sposoby się znajdą.
Napisano 13 Sierpień 201311 l Autor Używam PointWrangle i robię coś takiego att=max(P.Y) uzyskuje wynik dla każdego punktu(co jak już wiem jest całkiem logiczne z uwagi na to działa), więc jak rozumiem muszę stworzyć listę/tablicę i z niej wyznaczyć max z tym, że według tego co widzę wranglery nie mogą tworzyć tablic, więc w takim razie czy się mylę i da się jakoś to zrobić czy muszę wyznaczyć max dla att primitive i promoteAtt zmienić do dla punktów? Szczerze mówiąc upierałbym się bym przy wykorzystaniu wraglera/vopSOP żeby mieć całość w jednym nodzie.
Napisano 14 Sierpień 201311 l legomir napisał: Używam PointWrangle i robię coś takiego att=max(P.Y) uzyskuje wynik dla każdego punktu(co jak już wiem jest całkiem logiczne z uwagi na to działa), więc jak rozumiem muszę stworzyć listę/tablicę i z niej wyznaczyć max z tym, że według tego co widzę wranglery nie mogą tworzyć tablic, więc w takim razie czy się mylę i da się jakoś to zrobić czy muszę wyznaczyć max dla att primitive i promoteAtt zmienić do dla punktów? Szczerze mówiąc upierałbym się bym przy wykorzystaniu wraglera/vopSOP żeby mieć całość w jednym nodzie. Nie bawilem sie jeszcze pointWrangle ale podejrzewam ze dziala podobnie jak reszta Vexa wiec bedziesz musial zrobic to w dwoch nodach. Podobna sprawe mialem tu (jest tam tez link do topica z hip'em). Mierzylem dystans kazdego punktu ale zeby znalezc ten ktory jest najbardziej podobny do mojego wzorowego dystansu musialem wywalic to porownanie do PythonSOP. Ewentualnie jak chcesz mozna zrobic to w jednym nodzie za pomoca inlineCPP lub HDK. Prosta sprawa.
Napisano 14 Sierpień 201311 l Autor W takim razie pozostawię na 2. nie chce zaczynać nowych rzeczy i odwracać uwagi od tego co teraz robię, bo przeważnie kończy się porzuceniem jakiegoś projektu. Dzięki za odpowiedź :) Edit Poradziłem już sobie inaczej przepisując funkcje z użyciem absolute Edytowane 14 Sierpień 201311 l przez legomir
Napisano 14 Sierpień 201311 l Autor Jeszcze jedno pytanie robię jakiś głupi błąd, ale za cholere nie wiem gdzie. Mam ten atrybut z wczoraj i teraz w filter expression wpisuje $TY == @att dostaje błąd w postaci expression stack error EDIT poradziłem sobie point expression, ale kolejny problem w details viem widzę, że jakieś 20 punktów ma TY równe mojemu max_y z tym, że expressia znajduje 3 punkty na tej wysokości domyślam się, że problem jest zaokrąglenie jak mogę je zmienić? Edytowane 15 Sierpień 201311 l przez legomir
Napisano 15 Sierpień 201311 l W Vexie masz tylko rint ale to ci da integer. Mozesz pomnozyc przez 1000 lub inna sume aby przesunac przecinek i zrobic poronanie integer. Porownywanie floatow ma wiele minusow i nie ma sensu z tym walczyc czasami. Co ty chesz zrobic, bo moze za bardzo kombinujesz? Nie moglys zapodac Hipa jak kazdy normalny uzytkownik Houdego? ;)
Napisano 15 Sierpień 201311 l Autor Ogólnie to chce zrobić asset robiący wiązki kabli mam pattern kabli(circle lub znormalizowany shape, tworzy mi za pomocą prostego równania n shapów tworzących wiązkę kabli układającą sie w koło). Tutaj już wszystko ogarnięte. Teraz mi potrzebny wave deformer(żeby kable zwisały powiedzmy z sufitu ;) ) ponieważ to raczej dla nauki pobawiłem się http://www.fundza.com/expressions/expressionsqr.html i utworzyłem prostą deformacje, teraz chce dodać do tego trochę kontroli, a ponieważ nie do końca jestem fanem suwaczków wymyśliłem sobie żeby można było to trochę ręcznie modyfikować za pomocą czegoś w rodzaju handle z circle i modyfikowania krzywej za pomocą att transfer, ponieważ nie mam pomysłu na inną metode, a minimalne i maksymalne wartości są według details viem dla sporej ilości obiektów takie same i zgadzają się mniej więcej z ilością rowków chciałem utworzyć grupę punktów do, której będę kopiował circle. Z grubsza o to chodzi chociaż w planach jest sporo więcej ^^ Tego hipa dołączę jak ogarnę trochę to co tam się dzieje, bo z reguły mam dużo własnych przyzwyczajeń i jestem chaotyczny.
Napisano 24 Sierpień 201311 l Autor Problem, którego nie potrafię sam rozwiązać jak na razie: Niebieskie moja krzywa a właściwie jej odcinek, białe to przykładowe punkty strzałka w bok pokazuje jak rozchodzi się att od funkcji jaką mam(w drugą strone to lustrzane odbicie), czerwony kwadrat to nazwijmy to hanle, które zamierzam wykorzystać do modyfikatora. W czym problem: chce aby handle można było modyfikować to jak "głęboki" jest konkretny cykl ponieważ modyfikuje krzywą od sinusa to dostaje piękne liczby ułatwiające wszystko, ale nie potrafię wymyślić metody transportu atrybutów tak, aby P.y konkretnego handle(primitiv) działało tylko na punkty w jednym cyklu. Jeśli coś jest niejasne postaram się jeszcze doprecyzować. Edytowane 24 Sierpień 201311 l przez legomir
Napisano 1 Październik 201311 l Autor Kolejne pytanie, wrzucam plik nie do końca rozumiem dlaczego w output od XYZdist otrzymuje -1: https://dl.dropboxusercontent.com/u/13342201/xyz.hipnc
Napisano 1 Październik 201311 l masz spacje w nazwie pliku, więc funkcja w ogóle nie działa (zwraca domyślną wartość parametru). op:[spacja]`opinpupath()...`
Napisano 3 Październik 201311 l Autor Ruszyłem nieco dalej, ale kolejny problem jest jakiś sposób aby tworzyć lub edytować parametry primitive w VOP, albo aby tworzyć grupy primitiv? Mam niejasne poczucie iż powinienem do tego użyć AttVOP, ale nie wiem jak.
Napisano 17 Grudzień 201311 l Autor Dobra to kolejne, tym razem python SOP, chce dostać się do att punktu, który był o dwa przed tym, który jest obecnie przetwarzany mam coś w tym rodzaju: # This code is called when instances of this SOP cook. node = hou.pwd() geo = node.geometry() #init delete point #Some UI parametr to control a curve. iteration = node.parm("iteration").eval() #Some params for interation lengh = range(iteration) # Add code to modify the contents of geo. for i in lengh: point = geo.createPoint() position = 0.0 if i==0: geo.addAttrib(hou.attribType.Point, "pos", (position)) point.setPosition((position,position,0.0)) elif i==1: position = 1.0 point.setPosition((position,position,0.0)) point.point.setAttrib("pos",(position)) else: a = geo.iterPoints()[i-1] b = geo.iterPoints()[i-2] i teraz jak chce się dobrać do a.point.atributValue("position") zwraca mi błąd. Nie za bardzo mam pomysł jak to ruszyć z miejsca. Edytowane 17 Grudzień 201311 l przez legomir
Napisano 17 Grudzień 201311 l Troche za duzo tego "point'a" tutaj: point.point.setAttrib("pos",(position)) Poza tym nie chodzi ci czasem o point.setAttribValue? Po co tyle razy wolasz iterPoints? nie lepiej wrzucic raz, zachowac w zmiennej i potem od tej zmiennej odejmowac? a = geo.iterPoints()[i-1] b = geo.iterPoints()[i-2] Nadal moze nie dzialac bo nie sprawdzalem kodu w akcji ale tyle widze na pierwszy rzut oka.
Napisano 18 Grudzień 201311 l Autor Dzisiaj to posprawdzam. Ogólnie chce zrobić krzywą fibonacciego, więc chciałem dodawać pos z a i b. A czemu nie stosować tego range?
Napisano 18 Grudzień 201311 l W Pythonie 2.x range robi liste numerow przez co zapychasz pamiec dodatkowymi danymi a xrange tylko generuje numery bez tworzenia obiektow. W Pythonie 3.X range przejelo funkcje xrange. Google it i wywali ci tone topikow na ten temat.
Napisano 31 Grudzień 201311 l Autor Cytat You can pin wire points to their positions in the source geometry with the pintoanimation or gluetoanimation point attribute. (pintoanimation locks the point’s position, while gluetoanimation locks the point’s position and normal.) In the wire source geometry network, create a group containing the root points, and use the AttribCreate node to create the attribute. Use the following settings: Group The name of the group containing the root points, such as roots. Name pintoanimation or gluetoanimation Class Point Value 1 Trochę próbuję z wire solverem i natrafiłem na coś takiego. O ile rozumiem do w SOPach przed dopimport mam zrobić grupę i att(integer czy float?) i pin automatycznie mi to rozpozna. Próbuje źle czy trzeba coś zrobić jeszcze czego nie opisano?
Napisano 31 Grudzień 201311 l Wszystko jest tak, jak opisano... the only catch is, że to powinien być float. W H13 możesz po prostu w PointWrangerze dać jedną linię: @pintoanimation = 1 ? !vertexprimindex(0, @ptnum) : 0;
Napisano 24 Styczeń 201411 l Autor Nie mogę znaleźć wskazówki jak to zrobić mam kulę na nią wrzucony animowany noise, a potem wyskaterowane particle chciałbym teraz aby particle poruszały się po kulce. Próbowałem to zrobić particlami i kolizją ustawioną na slide jednak w tej sytuacje particle spadają chciałbym aby po prostu się poruszały po powierzchni.
Napisano 18 Luty 201411 l To ci bedzie potrzebne http://forums.odforce.net/topic/18705-is-there-a-way-to-snap-points-on-a-surface-using-an-sdf/ Dodatkowo mozesz jeszcze w to sie zaopatrzyc https://cmivfx.com/store/163-houdini+fluid+effects+for+td's PS. Wlasnie doszedl nowy topik w ktorym szerzej omowione sa metody raySOP i intersectVOP : http://forums.odforce.net/topic/14903-project-a-point-onto-a-geometry-in-vops/ Edytowane 20 Luty 201411 l przez mantragora
Napisano 9 Marzec 201411 l Autor W Houdinim12 zużycie RAMu mam na poziomie 300/400Mb bez niczego po uruchomieniu programy na XP 32bit W H13 na win7 64 jakieś 3gb to normalne? Edit jeszcze screen z task menagera zaraz po otwarciu: Edytowane 9 Marzec 201411 l przez legomir
Napisano 12 Marzec 201411 l Na Windowsie kombinuja cos z tym jak jest pamiec zarzadzana i dlatego sa jakies jaja przy symulacjach, ale 3GB na swiezo? U mnie po uruchomieniu zajmuje 138,400 K.
Napisano 12 Marzec 201411 l .... i sprawdzcie teraz (jak mozecie) ta samą akcję pod linuxem :) - aczkowliek słyszałem ze juz nad tym pracują i moze niebawem będzie to poprawione pod windą (tzn. zarządzanie pamięcią)
Napisano 12 Marzec 201411 l Domyślny alokator pamięci Visual Studio jest tak wolny, że panowie postanowili go podmienić alokatorem z TBB (o ile pamiętam), który jednak okazał się pod Windowsem potwornie zasobożerny (albo ma buga). Pod Linuksem używają jemalloca, który jest bodaj jednym z najlepszych rozwiązań.
Napisano 13 Marzec 201411 l Autor Dzięki wielkie wszystkim za odpowiedzi. Na linuxie nie będę mógł na razie sprawdzić, ale zainstaluje najnowszy built i zobaczymy co z Tego wyjdzie(u znajomego też na windzie jest ok, więc może to naprawili już a ja po prostu przegapiłem.
Napisano 15 Marzec 201411 l Autor Zainstalowałem dziś 13.0.343 Problem nadal jest według Houdiniego prawie 2gb zajmuje OpenGL cashe wie ktoś jak można to zmniejszyć, bo przeglądając opcje nie mogłem znaleźć takiej opcji.
Napisano 15 Marzec 201411 l Szukaj w menu Windows -> Cache Manager. 2048 to jest max standardowy przypisany. Na swiezo nie powinien byc zapelniony. Cos grzebales w ustawieniach lub sterowniki zmieniales?
Napisano 15 Marzec 201411 l Autor W sensie nie jest zapełniony, ale jako, że domyślne rozmiary innych cashy są pozmniejszałem, więc przyszło mi na myśl, że to być przez to.
Napisano 22 Kwiecień 201410 l Autor Kolejna rzecz. Mam takiego oto coś: https://dl.dropboxusercontent.com/u/13342201/hip/untitled.hipnc i tak się zastanawiam jak zrobić tak aby każdy wykryty kiedyś punkt miał att np. active gdyby kiedykolwiek był aktywny.
Napisano 26 Maj 201410 l Autor Mam taką sytuacje obiekt z animowanym att podpięty pod Solver SOP. Tam porównuje wartości animowanego att, żeby dowiedzieć się w jakiej klatce został aktywowany z tym, że z tego wywnioskowałem empty object zczytuje wartości tylko w 1 klatce przez co nie ma animacji z drugiej strony jeśli włączę, że obiekt jest aktywny to w każdej klatce tworzy się obiekt jest jakiś sposób na rozwiązanie tego? Na razie spróbuję to zrobić podpinając jakoś zamiast emptyObj coś innego co będzie czytać att z dop import. ale chciałbym się dowiedzieć czy można to zrobić jakoś inaczej.
Napisano 26 Maj 201410 l strasznie zagmatwales to pytanie ;] zlap dwa oddechy, napisz jeszcze raz i jak sie da to tez podepnij przyklad
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto