三个设置物体在镜头前的推车



我正在使用将物体放在相机前

        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是错误的,但我不确定合并数字的更好方法。

@WestLangleys答案在这里三.js补间物体到相机前方

回答了我的问题

      var pLocal = new THREE.Vector3( 0, 0, dist );
        var target = pLocal.applyMatrix4( camera.matrixWorld );
        object.position.copy( target );
        object.lookAt(camera.position);

相关内容

最新更新