【问题标题】:ThreeJS: How to render scene to texture and temporarily override materials?ThreeJS:如何将场景渲染到纹理并临时覆盖材质?
【发布时间】:2014-03-14 11:37:21
【问题描述】:

基础: 我有一个带有普通物体的场景。他们投射和接收阴影。地面是 THREE.Plane 的一个实例。

目标: 我想通过将场景渲染到纹理(rtt)然后将信息读回 js 来获取有关阴影的信息。

想法: 我将使用从场景顶部看的正交相机来渲染我的场景。 Camera near 属性将设置为仅渲染与地面接触的对象部分(我已确保每个对象都有双面材质)。地面将使用白色材质渲染,所有其他对象使用黑色渲染。材质应该可以投射阴影,而地面应该能够接收它们。

问题:

  1. 如何使用临时不同的对象材质来渲染我当前的场景(我不想每次需要获取有关阴影的信息时都复制它)?

    renderer.render(scene, cameraRTT, rtTexture, true);
    
  2. 如何定义此类材料?

【问题讨论】:

标签: javascript three.js


【解决方案1】:

您可以尝试使用场景的 overrideMaterial 属性在渲染步骤之间切换材质,例如:

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

您可以在此处查看示例: http://threejs.org/examples/webgl_postprocessing_godrays.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-25
    • 2013-02-20
    • 2013-06-09
    • 1970-01-01
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多