javascript - Hur man använder kamera som texturbild i Three.js


I three.js försöker jag skapa en textur vars bild är den aktuella scenen sedd från en kamera. Att använda en CubeCamera för att skapa en liknande effekt är väl dokumenterat; och med CubeCamera har jag skapat ett exempel på en scen för att illustrera mitt mål vid:

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

Men jag skulle vilja använda en vanlig kamera (snarare än en CubeCamera) som textur. Hur skulle jag kunna göra detta?

Svar #1

I bästa fall skulle detta fungera.

Init :

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);

Rendera :

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

Och det nästan gör det, men vi har några oavslutade ärenden med y-vända texturer som förstör hela festen här.

Så den bästa lösningen just nu är att använda mellanliggande fyrkanten för att vända texturen (sparar också en rendering):

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