使用MeshStandardMaterial控制折射

时间:2017-07-15 20:59:37

标签: three.js

所以我有非常基本的设置:

var cubeCamera = new THREE.CubeCamera (1, 1000, 1024);
cubeCamera.renderTarget.texture.minFilter = THREE.LinearMipMapLinearFilter;
cubeCamera.renderTarget.texture.mapping = THREE.CubeRefractionMapping;
cubeCamera.updateCubeMap (renderer, scene);

var matte = new THREE.MeshStandardMaterial({
    envMap: cubeCamera.renderTarget.texture,
    metalness: 0.5,
    roughness: 0.4
});

这会产生正确的模糊折射。然而,将金属度驱动到0使其几乎完全消失,使材料看起来完全不透明。设置哑光折射材料的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

您正尝试使用MeshStandardMaterial来制作半透明和折射的非金属材质。您将metalness设置为零或接近零。

非金属通常具有低镜面反射率。这意味着来自环境的镜面反射很小 - 当然与金属相比。因此,MeshStandardMaterial被设计为具有类似的属性。

您有两种选择。

第一个选项是通过增加material.envMapIntensity进行补偿,默认为1.这样可以模拟更明亮的环境。

第二种选择是使用功能更丰富的MeshPhysicalMaterial

MeshPhysicalMaterial具有额外的material.reflectivity属性,可控制非金属的镜面反射率。对于基于物理的材质,将此属性设置为1是合理的最大值,但如果需要,可以进一步增加。

three.js r.86