Skocz do zawartości

[MAXscript] skinOps


Rekomendowane odpowiedzi

Gość ant-3d
Napisano

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 :)

  • Odpowiedzi 2
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Popular Days

Top Posters In This Topic

Napisano
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 (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 przez ant-3d

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