更改相机的近平面
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
我有一个视图,其中包含(缓冲区)几何对象和几个不同的标记层,每个标记都存储在自己的场景中。这使我可以轻松地关闭它们或将它们绘制在对象之上,而不管深度如何。
我想要完成的是使用相机的近场和远场的简单横截面。我将(正交)相机放在我想要 '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