在three.js中,我正在尝试创建一个纹理,其图像是从相机中查看的当前场景。使用CubeCamera创建类似的效果已有详细记录;并且使用CubeCamera我创建了一个场景示例来说明我的目标:
http://stemkoski.github.com/Three.js/Camera-Texture-Almost.html
但是,我想使用常规相机(而不是CubeCamera)作为纹理。我怎么能这样做?
答案 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翻转纹理在这里破坏了派对。
因此,目前最好的解决方案是使用中间四边形来翻转纹理(同时保存渲染):
答案 1 :(得分:3)
根据mrdoob的例子和建议,我创建了一个非常详细的评论工作示例,可在以下网址找到:
http://stemkoski.github.com/Three.js/Camera-Texture.html
中我的一系列教程式Three.js系列示例的一部分