Javascript ThreeJS:如何将场景渲染为纹理并临时覆盖材质?
基础: 我有一个普通物体的场景。他们投射和接收阴影。地面是三维平面的一个实例 目标: 我希望通过将场景渲染为纹理(rtt),然后将信息读回js来获取有关阴影的信息 创意: 我将使用正交摄影机渲染场景,从顶部观察场景。“Camera near”属性将设置为仅渲染对象接触地面的部分(我已确保每个对象具有双面材质)。地面将使用白色材质颜色渲染,所有其他对象将使用黑色渲染。材质应该可以投射阴影,地面应该能够接收阴影 问题:Javascript ThreeJS:如何将场景渲染为纹理并临时覆盖材质?,javascript,three.js,Javascript,Three.js,基础: 我有一个普通物体的场景。他们投射和接收阴影。地面是三维平面的一个实例 目标: 我希望通过将场景渲染为纹理(rtt),然后将信息读回js来获取有关阴影的信息 创意: 我将使用正交摄影机渲染场景,从顶部观察场景。“Camera near”属性将设置为仅渲染对象接触地面的部分(我已确保每个对象具有双面材质)。地面将使用白色材质颜色渲染,所有其他对象将使用黑色渲染。材质应该可以投射阴影,地面应该能够接收阴影 问题: 如何使用暂时不同的对象材质渲染当前场景(我不希望每次需要获取阴影信息时都复制它)
renderer.render(scene, cameraRTT, rtTexture, true);
可以尝试使用场景的OverrideMatary属性在渲染步骤之间切换材质,例如:
// Note: r66 code
// use material A
scene.overrideMaterial = materialA;
renderer.render(scene, camera, rtTexture);
// use material B
scene.overrideMaterial = materialB;
renderer.render(scene, camera, rtTexture);
您可以在此处查看示例:
我不太清楚你在问什么,但这个three.js演示的来源可能会帮助你:。