如何在Three.js中使用相机作为纹理图像

时间:2012-07-04 12:32:02

标签: javascript three.js

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

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

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

2 个答案:

答案 0 :(得分:5)

理想情况下这可行。

初​​始化:

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

答案 1 :(得分:3)

根据mrdoob的例子和建议,我创建了一个非常详细的评论工作示例,可在以下网址找到:

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

中我的一系列教程式Three.js系列示例的一部分

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