很抱歉张贴可能重复的邮件。
我有两个3D向量:
中心(0,0,0)
宝珠(0,0,100)
我想围绕X和Y轴上的中心矢量旋转球体矢量。
我要实现的目标是,制造商和对象始终在照相机所面对的方向上对其视线。
我已经尝试过了,但是没有运气。
var vector = new THREE.Vector3( 0, 0, 100 );
vector.applyAxisAngle( new THREE.Vector3( 0, 1, 0 ), Math.PI * 0.5 );
vector.applyAxisAngle( new THREE.Vector3( 1, 0, 0 ), Math.PI * 0.5 );
orbBall.position.copy(vector);
最佳答案
“我试图实现的目标是,制造商和目标始终以照相机所面对的方向为视角。”
如果您只是想确保orbBall
始终面向相机,并且orbBall
和camera
都属于三个scene
的一部分,则可以像下面这样使用lookAt
:
orbBall.lookAt(camera.position);
如果需要对齐
orbBall
的特定一侧,则可以使用空虚拟Object3D
来实现,方法是将虚拟节点添加到场景,将orbBall添加到虚拟场景,如下所示:dummy = new THREE.Object3D();
scene.add(camera); // "camera" is defined however
scene.add(dummy);
dummy.add(orbBall); // "orbBall" is created as usual
// ... not to align dummy+orbBall
dummy.lookAt(camera.position);
// ...and you can just rotate orbBall around "inside" dummy, just once,
/// to face however you like