16

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

有一个例子似乎有这种效果

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

4

2 回答 2

17

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

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

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

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

于 2019-12-30T12:16:25.337 回答