如何在OpenGL中设置金属材料(如银)?

hik*_*aru 2 opengl lighting

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

Sig*_*erm 7

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

如果您希望您的材料有时看起来像金属一样"有点",则需要设置相应的漫反射,环境光谱,镜面反射和"光泽"参数.您可以研究像blender这样的3d编辑器的现有材料库,并了解它们是如何做到的.这很便宜,但看起来也很便宜.通常具有低GL_SHININESS值(3..12,我认为?)的材料看起来像金属表面"有点".

如果您希望您的材质看起来更像金属,但在某些光照条件下,您需要编写像素着色器,它将使用逼真的银色纹理,以及控制镜面反射颜色和强度的附加纹理贴图.只要仔细选择照明条件,良好的纹理就可以让您摆脱可怕且简单的着色器.这需要具有GLSL知识的程序员和一个优秀的艺术家来制作纹理,而艺术家将更加重要 - 即使像每像素phong这样的非金属着色器也可以手工微调,看起来像你想要的(进动可能很无聊)和乏味的.着色器本身仅需要具有镜面(任何镜面反射),正常映射支持和环境反射映射(具有菲涅耳术语支持)的每像素照明.使用HDR进行弱反射抛光表面也会有所帮助.

如果你想要真实和完美的白银,那么你就麻烦了,应该重新考虑.金属表面具有"模糊"反射,根据您的硬件,可能很难快速实施.另一个问题是,您必须对金属本身进行相当多的研究,检查那里存在的每个金属表面演示,阅读GDC论文等.即做研究,这可能需要花费大量时间/精力而不会最后得到回报,因为最终结果很可能会有糟糕的表现.重要的是你不需要模拟真实的材料来使它看起来正确 - 你需要欺骗观众认为这是银色的.


Sol*_*eus 5

如果您查看此站点,您可以找到一系列不同的材料设置,旨在模仿各种材料,包括银。但是,正如其他人在评论中所说的那样,请记住,OpenGL 使用这种材质设置来实现的 Phong 着色很难以逼真的方式渲染某些现实世界的物质,尤其是像银色这样的反射物质。但是该站点的材料设置应该给你一些类似银色的东西,至少是第一次近似。(确保你在最后看到了关于将光泽度乘以 128 的注释)