如何在OpenGL中设置金属 Material (如银)?有谁知道?

最佳答案



如果您希望 Material 有时看起来像金属一样的“金刚”,则需要设置相应的漫反射,环境,镜面反射和“光泽”参数。您可以研究现有的3d编辑器(例如blender)的 Material 库,并查看它们的工作方式。那很便宜,但看起来也很便宜。通常,具有低GL_SHININESS值(我认为是3..12)的 Material 看起来像金属表面一样“有点”。

如果要使 Material 看起来更像金属,但在某些光照条件下,则需要编写像素着色器,该着色器将使用银的真实感纹理,以及用于控制镜面反射颜色和强度的其他纹理贴图。只要精心选择了照明条件,良好的纹理即可使您摆脱恐怖且简单的着色器的困扰。这需要具有GLSL知识的程序员和优秀的美术师来制作纹理,美术师将变得更加重要-甚至可以手工微调像每像素的Phong这样的非金属着色器,使其看起来像您想要的样子(自卑感可能很无聊)和乏味)。 Shader本身仅需要具有镜面(任何镜面),法线贴图支持和环境反射贴图(带有菲涅耳术语支持)的按像素照明。将HDR用于弱反射抛光表面也有帮助。

如果您想要真正的和完美的银,那您就麻烦了,应该重新考虑。金属表面有“模糊”的反射,根据您的硬件,可能难以快速实施。另一个问题是,您将不得不大量研究金属本身,检查其中存在的每个金属表面演示,阅读GDC论文等。进行研究,这可能会花费大量时间/精力,并且最终不会获得回报,因为最终结果很有可能会表现出糟糕的表现。重要的是,您无需模拟真实的 Material 即可使它看起来正确-您需要愚弄观众以为这是银色。

10-06 07:45