Jump to content

Maxscript, orientacja punktu w przestrzeni


kuro

Recommended Posts

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

Edited by kuro
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We are using cookies. Read about our Privacy Policy