Skocz do zawartości

Maxscript, orientacja punktu w przestrzeni


kuro

Rekomendowane odpowiedzi

Witam, dzisiaj mam pytanie odnośnie niedużego pluginu który piszę do Maxa w Maxscript-cie.

 

Głównym jego zadaniem jest importowanie z innej aplikacji geometrii, jej przetwarzanie i na koniec dopasowywanie istniejących już elementów na scenie do niektórych zaimportowanych siatek. W tym celu importuję trzy proste sześciany z punktami pivot na środku (tą część mogę zmodyfikować na potrzeby innego rozwiązania) i staram się dopasować pozycję (prosta rzecz) i rotację point helpera do centralnego, największego sześcianu. Manualnie jest z tym trochę roboty, bo zawsze można się pomylić, więc chciałem rozwiązać to automatycznie. I tu problem, bo o ile jedną oś mogę prosto ustawić używając look-at constraint i wskazując na jeden z mniejszych sześcianów ("front") to nie mogę wymyślić sposobu na opanowanie drugiej osi ("side").

 

Załączam dwa screeny przedstawiające sytuację, jeśli ktoś miałby jakikolwiek pomysł w którą stronę to pchnąć lub co zmienić - będę ogromnie wdzięczny.

 

Edit: zacząłem eksperymenty z określaniem normal dla jednej ze ścian sześcianu docelowego, żeby określić pozycję i orientację. Mniej więcej działa, ale zniekształca okrutnie siatkę i... no, nie do końca.

 

objNormal = polyOp.getFaceNormal $targetCube 1

objCenter = $targetCube.pos

objMatrix = matrix3 (cross objNormal [0,0,1]) [0,0,1] objNormal objCenter

$fitCube.transform = objMatrix

--lub

$fitCube.transform *= objMatrix

 

Pozdrawiam,

kuro

 

lPTlZTS.jpg

etVssih.jpg

Edytowane przez kuro
Odnośnik do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 1
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Top Posters In This Topic

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