kuro Napisano 20 Kwiecień 2015 Napisano 20 Kwiecień 2015 (edytowane) 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 Edytowane 20 Kwiecień 2015 przez kuro
CgBartosz Napisano 7 Czerwiec 2015 Napisano 7 Czerwiec 2015 (edytowane) Macierz musi byc ortogonalna. Mozesz zastosowac formule gram-schmidt lub wbudowana funcje w mxs orthogonalize. Edytowane 7 Czerwiec 2015 przez CgBartosz
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ę