更改相机的近平面

Changing the camera's near plane

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

我想要完成的是使用相机的近场和远场的简单横截面。我将(正交)相机放在我想要 'cut' 的位置,效果很好。问题是当我 'cut' 通过对象时,我不能 'cut' 关闭我的标记层。我希望标记仍然完全可见。

我尝试的是在渲染循环中改变相机的近场:

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 属性 并查看更改是否生效,但在循环内快速切换似乎没有任何作用。其结果与保持近场不变相同。

我有什么想法可以让近场变化发挥作用吗?

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

camera.updateProjectionMatrix();

three.js r.71