如何在ThreeJS中使用场景的渲染结果作为纹理

时间:2017-03-02 17:29:16

标签: three.js

我想在ThreeJS中使用场景的渲染结果作为纹理。 ThreeJS有这样的功能吗? 我需要修改ThreeJS吗? 感谢。

1 个答案:

答案 0 :(得分:4)

您可以通过将THREE.WebGLRenderTarget传递给THREE.WebGLRenderer.render()来将场景渲染到纹理。

首先,创建所需大小的渲染目标(这是您的纹理):

var renderer = new THREE.WebGLRenderer();
var renderTarget = new THREE.WebGLRenderTarget(512, 512);

然后,您可以在素材上使用THREE.WebGLRenderTarget.texture

var geometry = new THREE.PlaneGeometry(1.0, 1.0);
var material = new THREE.MeshBasicMaterial({
    map: renderTarget.texture
});
var mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);

最后以2遍传递场景:

renderer.render(fakeScene, fakeCamera, renderTarget);
renderer.render(scene, camera);

您可能想要在renderTarget上创建一个新场景和一个新镜头。这取决于你想做什么。

查看this fiddlethis example