THREE.js中的反光材料

时间:2013-11-01 16:57:18

标签: javascript 3d three.js webgl

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

有一个例子似乎有这种效果:http://threejs.org/examples/#webgl_shading_physical

看起来并不像使用标准材料来创建它。

2 个答案:

答案 0 :(得分:7)

进入一点理论:反射基本上是从某个位置拍摄的场景图像。因此,如果您希望将平面网格用作镜像,则必须在该位置添加相机,让它将场景渲染到动画循环中的纹理,然后在材质中将该纹理用于平面网格。除了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 } );

答案 1 :(得分:0)

https://threejs.org/examples/#webgl_materials_cubemap
我在上面的示例中做到了:

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

据我所知,关键变量是THREE.MixOperation