kuro Posted April 20, 2015 Share Posted April 20, 2015 (edited) 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 Edited April 20, 2015 by kuro Link to comment Share on other sites More sharing options...
CgBartosz Posted June 7, 2015 Share Posted June 7, 2015 (edited) Macierz musi byc ortogonalna. Mozesz zastosowac formule gram-schmidt lub wbudowana funcje w mxs orthogonalize. Edited June 7, 2015 by CgBartosz Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now