对于拖动功能,我正在制作objectb clocka objecta,例如:
var positionDeltas = objectA.position.clone();
postitionDeltas.sub(objectAOldPosition);
var newPositon = objectB.position.clone();
objectB.position = newPosition.add(positionDeltas);
可以类似地完成角度增量吗?我可以以类似的方式减去/添加四元素吗?:
var rotationDeltas = objectA.quaternion.clone();
rotationDeltas.sub(objectAOldRotation);
var newRotation = objectB.quaternion.clone();
objectB.quaternion = newRotation.add(rotationDeltas);
澄清:这就是我想要做的;但是,我确实知道不能减去欧拉人,也没有针对四局定义减法。那么....一个知道自己在做什么的人如何处理这三个。
尝试以下:
const q = new THREE.Quaternion();
q.multiply( q2, q1.inverse() );
Quaternion q
表示从四元组q1
到q2
的旋转。然后,您可以通过.applyQuaternion()
将此旋转应用于3D对象。
three.js R91