6

在three.js 中,我试图创建一个纹理,其图像是从相机查看的当前场景。使用 CubeCamera 创建类似的效果是有据可查的;并使用 CubeCamera 创建了一个场景示例来说明我的目标:

http://stemkoski.github.com/Three.js/Camera-Texture-Almost.html

但是,我想使用普通相机(而不是 CubeCamera)作为纹理。我怎么能这样做?

4

2 回答 2

6

理想情况下,这会起作用。

在里面:

renderTarget = new THREE.WebGLRenderTarget( 512, 512, { format: THREE.RGBFormat } );

var planelikeGeometry = new THREE.CubeGeometry( 400, 200, 200 );
var plane = new THREE.Mesh( planelikeGeometry, new THREE.MeshBasicMaterial( { map: renderTarget } ) );
plane.position.set(0,100,-500);
scene.add(plane);

使成为:

renderer.render( scene, topCamera, renderTarget, true );
renderer.render( scene, topCamera );

它几乎是这样,但我们还有一些未完成的事情,因为 y 翻转纹理毁了这里的派对。

所以目前最好的解决方案是使用中间四边形来翻转纹理(也节省了渲染):

http://mrdoob.github.com/three.js/examples/webgl_rtt.html

于 2012-07-04T16:13:55.857 回答
4

根据 mrdoob 的示例和建议,我创建了一个带有非常详细评论的工作示例,可在以下位置获取:

http://stemkoski.github.com/Three.js/Camera-Texture.html

我的教程式 Three.js 系列示例系列的一部分,位于

http://stemkoski.github.com/Three.js/

于 2012-07-05T20:44:47.933 回答