Gość ant-3d Napisano 3 Luty 2011 Napisano 3 Luty 2011 Hej Mam problem ktory nie wiem jak rozwiazac. Powiedzmy ze jest obiekt ktory ma 800 elementow, ma nalozony modyfikator skin oraz do skina ma dodane 800 kosci (kazda kosc dla innego elementu). Dla kazdej kosci chcialbym przypisac wartosc weight rowne 0 dla wszystkich vertexow. To co uzyskalem narazie dziala pieknie jesli do modyfikatora skin mam przypisane nie wiecej niz oklo 100 kosci. Powyzej max sie wyklada. Moj kod wyglada tak: allverts = $.verts as bitarray -- wszystkie vertexy z siatki for i = 1 to newbones.count do -- newbones jest to tablica z koscmi ( skinOps.SelectBone $.modifiers[#Skin] i skinOps.SelectVertices $.modifiers[#Skin] allverts skinOps.setWeight $.modifiers[#Skin] 0 skinOps.ButtonExclude $.modifiers[#Skin] ) To co zauwazylem tez to w miare dzialania skryptu przy tak duzej ilosci kosci proces maxa zzera coraz wiecej pamieci. Mam nadzieje ze jasno w miare wytlumaczylem problem. Nie moge z tym sobie poradzic. Dzieki za wszelka pomoc :)
Polacco Napisano 3 Luty 2011 Napisano 3 Luty 2011 Hej Dla kazdej kosci chcialbym przypisac wartosc weight rowne 0 dla wszystkich vertexow. To co zauwazylem tez to w miare dzialania skryptu przy tak duzej ilosci kosci proces maxa zzera coraz wiecej pamieci. Zużycie pamięci gwałtownie rośnie bo waga 0 to ciągle waga, którą gdzieś trzeba zapamiętać. Więc wypada się zapytać czy rzeczywiście chcesz mieć tą wagę 0 dla wszystkich vertexów dla wszystkich kości czy też chodzi o to żeby kości nie oddziaływały na wierzchołki? Jeśli to drugie to użyj skinOps.ReplaceVertexWeights - wywołanie tego z wagą 0 efektywnie usuwa wagę.
Gość ant-3d Napisano 3 Luty 2011 Napisano 3 Luty 2011 (edytowane) dzieki, dziala. Troche nie wiedzialem jak do wszystkich kosci to zastosowac ale wystarczy ja przedstawic jako bitarray i dziala. EDIT: Musze jeszcze troche pomarudzic. Wczoraj jakos dzialalo a dzis nie. Cos musialem robic wczoraj inaczej tylko nie wiem co. Mam taki skrypt: skinn = $.modifiers[#Skin] bonenumber = skinOps.GetNumberBones skinn boneids = #() for i = 1 to bonenumber do boneids[i] = i boneids = boneids as bitarray vertnumber = $.verts.count for i = 1 to vertnumber do ( skinOps.ReplaceVertexWeights skinn i 2 0 -- ZA PIERWSZYM URUCHOMIENIEM NIE DZIALA WCALE ALE ZA DRUGIM DZIALA I TO NIE TYLKO DLA KOSCI 2 ALE DLA WSZYSKICH -- skinOps.ReplaceVertexWeights skinn i boneids 0 -- NIE DZIALA WCALE ) Pytania do skryptu w skrypcie wielkimi literami. Edytowane 4 Luty 2011 przez ant-3d
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ę