更换相机的近平面

时间:2015-04-23 14:42:52

标签: javascript three.js

我有一个带有(缓冲)几何对象和几个不同标记层的视图,每个标记都存储在自己的场景中。这使我可以轻松地将它们关闭或在物体上方绘制,无论深度如何。

我想要完成的是使用相机的近场和远场的简单横截面。我将(正交)相机放在我想要“切割”的位置并且效果很好。问题是,当我“穿过”物体时,我不能“切断”我的标记层。我希望标记仍然完全可见。

我所尝试的是在渲染循环内更改相机的近场:

function animate() {
    requestAnimationFrame( animate );
    renderer.clear();

    //  Switch the near field for this scene
    var oldNear = camera.near;
    camera.near = -1000;
    renderer.render( sceneFTA, camera );
    camera.near = oldNear;
    //

    renderer.render( scene, camera );
    //the following scenes are always drawn on top
    renderer.clearDepth(); 
    renderer.render(sceneMarkup, camera);
    renderer.render(scenePts, camera);
}

我不确定出了什么问题。我可以在渲染循环之前更改camera.near属性并看到更改生效,但是在循环内快速切换似乎没有做任何事情。结果与保持近场不变相同。

任何想法如何使近场变化发挥作用?

1 个答案:

答案 0 :(得分:0)

如果更改摄像机构造函数中指定的摄像机参数,则需要调用

camera.updateProjectionMatrix();

three.js r.71