3d 在小车中,在摄影机前面设置三个对象
我正在使用3d 在小车中,在摄影机前面设置三个对象,3d,three.js,quaternions,360-virtual-reality,3d,Three.js,Quaternions,360 Virtual Reality,我正在使用 var dist = -100; var vec = new THREE.Vector3( 0, 0, dist ); vec.applyQuaternion( camera.quaternion ); object.position.copy( vec ); object.lookAt(camera.position); 这真的很有效 我现在必须旋转相机(用于VR视频播放器)来设置它的起始位置,要做
var dist = -100;
var vec = new THREE.Vector3( 0, 0, dist );
vec.applyQuaternion( camera.quaternion );
object.position.copy( vec );
object.lookAt(camera.position);
这真的很有效
我现在必须旋转相机(用于VR视频播放器)来设置它的起始位置,要做到这一点并且仍然使用WebVR样板,我将视频添加到一个娃娃对象并旋转它
dolly = new THREE.Group();
dolly.position.set( 0, 0, 0 );
scene.add( dolly );
camera.up.set( 0, 1, 0 );
dolly.add( camera );
物体现在不在摄像机前面。我试着对向量应用推拉旋转来解释这个角度
var rotation = new THREE.Euler().setFromQuaternion( camera.quaternion, camera.rotation.order );
rotation.y += dolly.rotation.y;
var quat = new THREE.Quaternion().setFromEuler(rotation, camera.rotation.order);
vec.applyQuaternion( quat );
这主要适用于相机具有特定角度的情况,但有时不适用,并且对象也在其x轴上旋转
我假设
rotation.y+=dolly.rotation.y
;这是错误的,但我不确定是否有更好的方法来合并这些数字 @Westlangley在这里回答
回答了我的问题
var pLocal = new THREE.Vector3( 0, 0, dist );
var target = pLocal.applyMatrix4( camera.matrixWorld );
object.position.copy( target );
object.lookAt(camera.position);
您可以直接将对象添加到
相机对象中<代码>摄影机。添加(对象)代码>这会将对象放置在相机空间内,它会自动跟随相机的移动和旋转。感谢@TheJim01,是的,我以前也这么做过,但该项目具有可选择的元素,因此相机需要能够查看不同的部分。如果有必要的话,我会回到这里我只是想避免它。