防止Threejs透视相机具有负Y值?

时间:2012-08-18 11:40:32

标签: javascript webgl three.js

如何防止THREE.PerspectiveCamera出现否定position.y

我正在使用稍微修改过的TrackballControl,用我的鼠标来控制相机,这会阻止相机在z轴上旋转,但是想让我的相机保持在“地面”之上

2 个答案:

答案 0 :(得分:1)

假设您有2台相机。其中一个由TrackballControls控制。另一个用于渲染。这就是渲染循环的样子:

controls.update();

camera2.position.copy( camera.position );

if ( camera2.position.y < 0 ) camera2.position.y = 0;

renderer.render( scene, camera2 );

答案 1 :(得分:1)

看看THREE.OrbitControls,这样可以保持相机直立而不会被黑客攻击。

如果您使用THREE.OrbitControls,并且想要约束天顶角以将相机保持在地面以上,则需要简单的黑客攻击。

OrbitControls.update()中,替换此行:

phi = Math.max( EPS, Math.min( Math.PI - EPS, phi ) );

这一个:

phi = Math.max( EPS, Math.min( Math.PI/2 - EPS, phi ) );