我有两个场景:scene1和scene2。我有两个摄像头:camera1和camera2
当不使用StereoEffect时,我可以在scene1的顶部渲染(复合)scene2。
然而,当使用StereoEffect时,我无法在scene1的顶部渲染场景2。
StereoEffect仅渲染单个场景和单个摄像机。它似乎无法将多个场景渲染(复合)在彼此之上。我也尝试创建多个渲染器,例如renderer2,我将其应用于StereoEffect - 例如stereo = new THREE.StereoEffect(renderer2)
,但这也无效。
想法?
答案 0 :(得分:1)
我知道您希望在主场景的所有画布上渲染一次,并在底部中心渲染一次以进行平视显示。 THREE.StereoEffect
确实只要求一个场景,并获得立体声效果。它不是为你所描述的而写的。
它使用scissors
在左侧渲染一次,然后在画布的右侧渲染。剪刀允许您更改要绘制的画布区域。正如您在THREE.StereoEffect
的来源中看到的那样:
renderer.setScissor( 0, 0, _width, _height );
renderer.setViewport( 0, 0, _width, _height );
renderer.render( scene, _cameraL );
renderer.setScissor( _width, 0, _width, _height );
renderer.setViewport( _width, 0, _width, _height );
renderer.render( scene, _cameraR );
setScissor
和setViewport
方法的四个参数是开始横坐标(从左侧),开始纵坐标(从底部) ),宽度,高度(所有参数都是像素数)。
了解这一点,您可以使用剪刀满足您的需求,而不需要THREE.StereoEffect
。所以首先写下代码的第一部分:renderer.enableScissorTest(true)
。然后在你的循环中,用你需要的东西复制上面的代码:剪刀和视口覆盖你的第一个渲染的所有屏幕,然后只覆盖第二个的抬头部分。