Flux de travail:Maxscript - objA.object_rotation de 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
Problème:
Impossible de définir axe propre/rotation sceneObj du visage normal de targetObj. Noobérisme de la transformation.
Détails:
Je travaille sur un simple module d'importation, que les importations de maille sur mesure d'une autre application dans 3ds Max. Dans la scène 3ds Max, j'ai un assistant (un cube à tester en ce moment) et j'ai besoin d'ajuster la position et la rotation à une autre (même taille, 6 polys) qui est importée. Cela s'avère extrêmement difficile pour moi, et bien que la position ne pose aucun problème (sceneObj.pos = targetObj.pos) je suis totalement perdu à matrix3, eulerangles et quat values. Et (sceneObj.rotation = targetObj.rotation) n'est pas une option, car le fichier * .obj importé simple n'a AUCUNE rotation du tout. Donc, j'ai pensé que l'on obtenait la matrice 3 de la normale de la face 3 (face avant) de la cibleObj. J'ai réussi à traduire la rotation vers l'objet de ma scène mais je pense que les axes sont tous erronés - certains d'entre eux gardent la scène correctement alignée, tandis que quand l'orientation de targetObj change, elle tourne dans le mauvais sens.
code:
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
)
Captures d'écran:
Je suis vraiment, vraiment sans espoir si elle va pour des choses comme celles-ci, donc j'apprécierais toute l'aide qui peut diriger et m'apprendre même un peu.
Merci pour votre temps, Michelle.
Lorsque vous dites que le noeud importé n'a pas de rotation, voulez-vous dire qu'il est aligné sur le monde (c'est ce que je suppose)?Est-ce que l'un de ces nœuds est parenté/lié? Notez également que ce n'est pas une bonne idée de convertir en eulerangles à moins que vous n'en ayez besoin - ce qui n'est pas le cas dans ce cas (à moins que cela ne nécessite d'être animé). – Klaudikus