Workflow:MAXScript - objA.object_rotation от objB.face_normal
1. imported targetObj (cube, poly, *.obj)
2. on-scene sceneObj (cube, poly, later point helper)
3. sceneObj.rotation = targetObj.rotation (the two cubes need to overlap)
4. sceneObj.pos = targetObj.pos
Проблема:
Невозможно установить правильный ось/вращение sceneObj от лица нормали targetObj. Трансформация nooberism.
Детали:
я работаю над простым плагином импорта, что импорт пользовательских сетки из другого приложения в 3ds Max. В сценарии 3ds Max у меня есть помощник (куб для тестирования прямо сейчас), и мне нужно подогнать позицию и поворот к другому (того же размера, 6 полисов), который импортируется. Это очень сложно для меня, и хотя позиция вообще не проблема (sceneObj.pos = targetObj.pos), я полностью потерял значения matrix3, eulerangles и quat. И (sceneObj.rotation = targetObj.rotation) не является опцией, так как простой импортированный * .obj-файл вообще не имеет вращения.
Так что - я думал, что получить матрицу 3 нормали лица 3 (лицевая сторона) цели Obj. Мне удалось каким-то образом перевести поворот на объект сцены, но я думаю, что ось все неправильная - некоторые из них поддерживают выравнивание sceneObj должным образом, а при изменении ориентации targetObj он поворачивает сцену Obj в неправильном направлении/вдоль неправильной оси.
Код:
fn getAngleFromNormal targetObj sceneObj =
(
--RESET sceneObj ROTATION
oldTranslateMtx = transMatrix sceneObj.transform.pos
oldScaleMtx = scaleMatrix sceneObj.transform.scale
sceneObj.transform = oldScaleMtx * oldTranslateMtx
mtx = matrixFromNormal (polyOp.getFaceNormal targetObj 3)
sceneObj.transform *= mtx
eu = mtx as eulerangles
rx = eu.x
ry = eu.y
rz = eu.z
sceneObj.rotation *= inverse (eu as quat)
sceneObj.pos = targetObj.pos
)
Скриншоты:
Я действительно, действительно безнадежной, если она идет на такие вещи, как эти, так что я был бы признателен любая помощь, которая может направить меня и немного научить меня.
Спасибо за ваше время, Michelle.
Когда вы говорите, что импортированный узел не имеет вращения, вы имеете в виду, что он выровнен по миру (это то, что я предполагаю)?Также есть ли какой-либо из этих узлов, родившихся или связанных? Также обратите внимание, что не рекомендуется конвертировать в eulerangles, если вам не нужно - что в этом случае нет (если это не нужно анимировать). – Klaudikus