var material = new THREE.MeshStandardMaterial( {
metalness: 1, // between 0 and 1
roughness: 0.5, // between 0 and 1
envMap: envMap,
} );
确保指定一个环境贴图,这样就有东西可以反射了。调整其他参数以符合您的喜好。
three.js r.86
MeshPhongMaterial
不能正确地模拟金属材质,也不是基于物理的。当材质的粗糙度改变时,MeshPhongMaterial
无法正确处理反射。 - undefinedmaterial.envMapIntensity
。如果需要的话,您也可以将材质颜色从白色更改为银色。 - undefinedTHREE.MeshPhongMaterial()
,并将envMap
属性设置为您想要用于反射的相机的renderTarget
。为了使外观更加光滑,您可以在specularMap
属性(甚至是specular
属性)中使用纹理。geometry.computeVertexNormals()
来实现平滑边缘。
编辑:如@prisoner849所述,需要在应用材料之前调用computeVertexNormals
。
编辑2:根据@prisoner849的要求,这里有一个工作示例。
编辑3:@WestLangley提到使用THREE.MeshStandardMaterial()
应该更好,因此更新了示例以反映这一点。