Javascript 银色抛光材料,三种材质

Javascript 银色抛光材料,三种材质,javascript,three.js,Javascript,Three.js,我是三个js的新手,尝试创建一个立方体,如下所示: 我不知道如何为我的立方体创建材质。这块料子似乎是银磨光的。它有反射和漂亮的边缘。您能帮我找出哪些材质和哪些参数会给我这样的结果吗?使用a并将envMap属性设置为要用于反射的摄影机的渲染目标。 对于抛光外观,可以在“镜面反射贴图”(specularMap)属性甚至“镜面反射”(specular)属性中使用纹理 光滑的边缘通过调用来完成 编辑:如@prisoner849所述,在应用材质之前需要调用computeVertexNormals 编辑2:

我是三个js的新手,尝试创建一个立方体,如下所示: 我不知道如何为我的立方体创建材质。这块料子似乎是银磨光的。它有反射和漂亮的边缘。您能帮我找出哪些材质和哪些参数会给我这样的结果吗?

使用a并将envMap属性设置为要用于反射的摄影机的渲染目标。 对于抛光外观,可以在“镜面反射贴图”(specularMap)属性甚至“镜面反射”(specular)属性中使用纹理

光滑的边缘通过调用来完成

编辑:如@prisoner849所述,在应用材质之前需要调用computeVertexNormals

编辑2:根据@prisoner849的要求,这里有一个

编辑3:@WestLangley提到使用THREE.MeshStandardMaterial应该工作得更好,因此示例已更新以反映这一点。

使用a并将envMap属性设置为要用于反射的摄影机的renderTarget。 对于抛光外观,可以在“镜面反射贴图”(specularMap)属性甚至“镜面反射”(specular)属性中使用纹理

光滑的边缘通过调用来完成

编辑:如@prisoner849所述,在应用材质之前需要调用computeVertexNormals

编辑2:根据@prisoner849的要求,这里有一个


编辑3:@WestLangley提到使用THREE.MeshStandardMaterial应该会更好,因此该示例已更新以反映这一点。

您希望在THREE.js中创建银色抛光材质

MeshStandardMaterial是一种基于物理的材料,专门为此而设计

var material = new THREE.MeshStandardMaterial( {
    metalness: 1,   // between 0 and 1
    roughness: 0.5, // between 0 and 1
    envMap: envMap,
} );
一定要指定一个环境贴图,以便有东西可以反映。根据您的喜好调整其他参数


three.js r.86

您希望在three.js中创建一个银色抛光材质

MeshStandardMaterial是一种基于物理的材料,专门为此而设计

var material = new THREE.MeshStandardMaterial( {
    metalness: 1,   // between 0 and 1
    roughness: 0.5, // between 0 and 1
    envMap: envMap,
} );
一定要指定一个环境贴图,以便有东西可以反映。根据您的喜好调整其他参数


three.js r.86

并不打算为您编写代码。显示您当前的代码,这样我们就可以帮助您而不是创建。@MitchellvanZuylen我知道这不是为其他人编码。我想我没有很好地问这个问题,或者把图片放在那里让你误解了。我不是问我如何编码所有的立方体,我只是问哪种材质,哪种params会给我一个银色的材质。正如您所看到的@WestLangley的答案,答案不需要我的代码。因此,不打算为您编写代码。显示您当前的代码,这样我们就可以帮助您而不是创建。@MitchellvanZuylen我知道这不是为其他人编码。我想我没有很好地问这个问题,或者把图片放在那里让你误解了。我不是问我如何编码所有的立方体,我只是问哪种材质,哪种params会给我一个银色的材质。正如您所看到的@WestLangley的答案,答案不需要我的代码。我是否正确,例如,如果我使用var geometry=new THREE.CubeGeometry2,2,2;然后是geometry.computeVertexNormals,毕竟我会在网格中使用这个几何体和THREE.MeshPhongMaterial,然后我会得到一个具有光滑圆角边的立方体?只是出于好奇,你能调整使几何体的边变圆吗?computeVertexNormals只会使渲染器考虑面法线并平均边。因此,您可以获得平滑的外观。但网格仍然是一个具有锋利边缘的长方体。如果希望有真正平滑的边,则需要具有这些边的网格。你可以很容易地用3D编辑器来完成。实际上,它可以对网格进行编辑,但是对于这样数量的模型来说,它有点复杂,计算成本也相当高。这是用@prisoner849完成的,它刚刚添加了一个工作示例。我用了你大部分的作品,希望你不介意。我做对了吗,比如说,如果我用var geometry=new THREE.CubeGeometry2,2,2;然后是geometry.computeVertexNormals,毕竟我会在网格中使用这个几何体和THREE.MeshPhongMaterial,然后我会得到一个具有光滑圆角边的立方体?只是出于好奇,你能调整使几何体的边变圆吗?computeVertexNormals只会使渲染器考虑面法线并平均边。因此,您可以获得平滑的外观。但网格仍然是一个具有锋利边缘的长方体。如果希望有真正平滑的边,则需要具有这些边的网格。你可以很容易地用3D编辑器来完成。实际上,它可以对网格进行编辑,但是对于这样数量的模型来说,它有点复杂,计算成本也相当高。这是用@prisoner849完成的,它刚刚添加了一个工作示例。我用了你大部分的作品,希望你不要介意。这也是正确的答案。MeshPhongMaterial无法正确建模金属。它也不是基于物理的。当材质粗糙度改变时,MeshPhongMaterial不能正确处理反射。请你改变材质,使其看起来像银抛光。
使用我在上面发布的材质参数。如果需要,可以调整粗糙度。此外,场景中的灯光过多。降低平行光的强度。也可以增加或减少material.envMapIntensity。如果您愿意,可以将材质颜色从白色更改为银色。这也是正确的答案。MeshPhongMaterial无法正确建模金属。它也不是基于物理的。当材质粗糙度改变时,MeshPhongMaterial不能正确处理反射。请你改变材质,使其看起来像银抛光。使用我上面发布的材质参数。如果需要,可以调整粗糙度。此外,场景中的灯光过多。降低平行光的强度。也可以增加或减少material.envMapIntensity。如果需要,可以将材质颜色从白色更改为银色。