【问题标题】:Reflective material in THREE.jsTHREE.js 中的反光材料
【发布时间】:2013-11-12 22:21:50
【问题描述】:

如何创建反映场景中其他形状的材质?我尝试了reflectivity 属性,但它没有反映任何内容。

There is an example that seems to have this effect

这看起来不像是使用标准材料制作的。

【问题讨论】:

标签: javascript three.js 3d


【解决方案1】:

https://threejs.org/examples/#webgl_materials_cubemap
我用上面的例子做到了:

new THREE.MeshLambertMaterial ({
    map: texture,    
    envMap: scene.background,      
    combine: THREE.MixOperation,     
    reflectivity: .5     
})

据我了解,关键变量是 THREE.MixOperation

【讨论】:

    【解决方案2】:

    进入一点理论:反射基本上是从某个位置拍摄的场景图像。因此,如果您希望平面网格用作镜子,则必须在该位置添加一个相机,让它在动画循环中将场景渲染为纹理,然后在平面网格的材质中使用该纹理.除了 WestLangley 提到的示例之外,我还建议您查看 http://stemkoski.github.io/Three.js/Reflection.html

    另外,玩弄设置;例如,为了减少反射效果,请尝试:

    var mirrorMaterial = new THREE.MeshBasicMaterial( { color: 0x111111, envMap: mirrorCamera.renderTarget } );
    

    var mirrorMaterial = new THREE.MeshPhongMaterial( { emissive: 0x111111, envMap: mirrorCamera.renderTarget } );
    

    【讨论】:

    • 感谢您的回答。我正在寻找地板物体的反光材料。反射率必须来自场景中的对象。我还没有看到任何预期效果的例子。像闪亮的塑料或金属。反射会有点扩散,不像镜子的例子。尽管镜像示例是我见过的最接近的示例。你能提供一些代码让我开始吗?
    • 尝试更改具有反射的对象的材质参数,这将降低其反射并可能使其具有更多所需的效果。请参阅上面的更新答案。
    猜你喜欢
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 2019-02-26
    • 2015-06-22
    • 2018-04-30
    相关资源
    最近更新 更多