Skocz do zawartości

[MaxScript] Proporcjonalna zmiana rozmiaru obiektu


Rekomendowane odpowiedzi

Napisano

Chciałbym zrobić skrypt automatyzujący proces parametryzacji w 3ds maxie. Nic skomplikowanego, jedynie mam problem z jedną rzeczą. Skrypt ma być uniwersalny, więc dla obiektów dużych jak i małych powinien działać tak samo. Jednak w tej chwili rozmiar parametryzacji planarnej jest stały. Mam więc pytanie, jak można napisać skrypt, w którym rozmiar parametryzacji będzie się dostosowywał do obiektu, czyli przy dużych obiektach będzie duży (tak, aby parametryzował cały obiekt), a przy małych mały? Poniżej zamieszczam linijkę która według mnie odpowiada za ten rozmiar.

 

$.modifiers[#unwrap_uvw].unwrap5.setGizmoTM (matrix3 [-1.68492e-006,0,38.5465] [0,23.9861,0] [-18.8891,0,-8.25668e-007] [59.6047,0,9.44454])

 

Wpadłem na pomysł, że można by to ominąć, czyli jedynie zmniejszać obiekt, ale jak ustawić taki warunek, aby zmniejszał on obiekt proporcjonalnie ? Czyli warunek, że jeśli wysokość jest większa od np. 50 to obiekt przyjmuje wysokość 45 przy zachowaniu proporcji szerokości i głębokości. Z góry serdecznie dziękuję za pomoc. Cały mój skrypt wygląda tak:

 

 

$.position.x=0

$.position.y=0

$.position.z=0

modPanel.addModToSelection (Unwrap_UVW ()) ui:on

subobjectLevel = 3

modPanel.setCurrentObject $.modifiers[#Unwrap_UVW]

subobjectLevel = 3

$.modifiers[#unwrap_uvw].unwrap5.mappingMode 1

$.modifiers[#unwrap_uvw].unwrap5.setGizmoTM (matrix3 [-1.68492e-006,0,38.5465] [0,23.9861,0] [-18.8891,0,-8.25668e-007] [59.6047,0,9.44454])

$.modifiers[#unwrap_uvw].unwrap.move ()

$.modifiers[#Unwrap_UVW].texMapList.count = 0

$.modifiers[#Unwrap_UVW].texMapIDList.count = 0

$.modifiers[#Unwrap_UVW].baseMaterial_list.count = 1

$.modifiers[#Unwrap_UVW].baseMaterial_list[1] = undefined

$.modifiers[#Unwrap_UVW].texMapList.count = 0

$.modifiers[#Unwrap_UVW].texMapIDList.count = 0

$.modifiers[#Unwrap_UVW].texMapList.count = 1

$.modifiers[#Unwrap_UVW].texMapIDList.count = 1

$.modifiers[#Unwrap_UVW].texMapList[1] = Checker ()

$.modifiers[#Unwrap_UVW].texMapIDList[1] = -1

$.modifiers[#unwrap_uvw].unwrap.edit ()

actionMan.executeAction 2077580866 "40049" -- All Commands: Normal Map Dialog

subobjectLevel = 3

$.modifiers[#unwrap_uvw].unwrap5.mappingMode 0

subobjectLevel = 3

$.modifiers[#unwrap_uvw].unwrap5.mappingMode 1

actionMan.executeAction 2077580866 "40194" -- All Commands: Render UVW Template

$.modifiers[#unwrap_uvw].unwrap5.renderUV ""

  • Odpowiedzi 2
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Top Posters In This Topic

Napisano

Ok, mniej więcej wiem jak się zabrać do tematu. Mam jednak jeden problem. Jak mogę odwołać się do wysokości, szerokości i długości obiektu ? W normalnym boxie to jest $.height. Jednak potrzebuję uniwersalną komendę np. do czajnika. Po prostu chodzi mi o odczytanie wysokości. Później robię skalowanie, ale potrzebuję do tego mieć znaną wysokość.

Napisano

nodeGetBoundingBox

 

Returns a 2 element array containing the min and max points of the node's bounding box in coordinate system matrix3 as point3 values. Positions returned are always in the specified matrix3 coordinate system.

bb= nodeGetBoundingBox $teapot01 $camera01.transform

format " %      %   \n"  bb[1]  bb[2]

 

 

LUB

 

nodeLocalBoundingBox

 

Returns a 2 element array containing the min and max points of the node's local bounding box. Positions returned are in the current coordinate system.

 

 

bb= nodeLocalBoundingBox $teapot01

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