【问题标题】:How can I use reflection in three.js?如何在 three.js 中使用反射?
【发布时间】:2014-09-16 03:31:12
【问题描述】:

我想在带有 Three.js 的 WebGL 页面中有一个反射立方体表面。它应该像一个手机显示屏,反射一些光,但它仍然必须是黑色的。

【问题讨论】:

    标签: javascript webgl three.js


    【解决方案1】:

    我创建了一个带有详细 cmets 的反射立方体(以及反射球体)示例。现场版在

    http://stemkoski.github.com/Three.js/Reflection.html

    带有格式良好的代码

    https://github.com/stemkoski/stemkoski.github.com/blob/master/Three.js/Reflection.html

    (这是http://stemkoski.github.com/Three.js/ 上的教程示例集合的一部分)

    主要有以下几点:

    • 向场景中添加第二个摄像头(CubeCamera),该摄像头位于表面应具有反射性的对象上
    • 创建材质并将环境贴图设置为第二个相机的渲染结果,例如

    例如:

     var mirrorCubeMaterial = new THREE.MeshBasicMaterial( 
        { envMap: mirrorCubeCamera.renderTarget } );
    
    • 在您的渲染函数中,您必须从所有摄像机进行渲染。暂时隐藏正在反射的对象(这样它就不会妨碍您要使用的相机),从该相机进行渲染,然后取消隐藏反射对象。

    例如:

    mirrorCube.visible = false;
    mirrorCubeCamera.updateCubeMap( renderer, scene );
    mirrorCube.visible = true;
    

    这些代码 sn-ps 来自我上面发布的链接;检查出来!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-16
      • 1970-01-01
      • 1970-01-01
      • 2016-06-22
      • 2021-09-01
      • 2018-09-26
      • 1970-01-01
      • 2012-04-22
      相关资源
      最近更新 更多