如何创建反映场景中其他形状的材质?我尝试了reflectivity
属性,但没有反映任何内容。
有一个例子似乎有这种效果:http://threejs.org/examples/#webgl_shading_physical
看起来并不像使用标准材料来创建它。
答案 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