如何在 Unity 中使用粗糙度纹理?

Posted

技术标签:

【中文标题】如何在 Unity 中使用粗糙度纹理?【英文标题】:How can I use Roughness Texture in Unity? 【发布时间】:2020-03-05 19:23:57 【问题描述】:

我知道 Smoothness 通道实际上是 Roughness。但是我下载了一些模型,包括纹理,它们都有一个粗糙度图像。但是我无法在图像中读取粗糙度(或平滑度)有多大,所以我实际上不知道平滑度值应该有多大才能使模型看起来完美。

如何检测到这一点?

谢谢

PS:请看我的另一个问题,我在 2 周前问过,仍然没有任何答案:Unity3d: Problem with Mixamo animations, they change position of Player graphics out of colliders and attached camera

【问题讨论】:

【参考方案1】:

平滑度和粗糙度是同一度量的两端,通常使用0.0 - 1.0 的刻度。要完全平滑,您可以使用平滑值 1.0 或粗略值 0.0。

查看图像,大部分黑色表示零值,而大部分白色表示一值。使用它来确定您希望它使用的比例尺的哪一端。

使用节点或图像编辑器,您可以在将平滑贴图连接到粗糙套接字之前对其进行反转。

数学上应该是

smooth = 1.0 - rough

rough = 1.0 - smooth

【讨论】:

非常感谢您的回答,现在我明白了。所以我基本上只是猜测,但我可以看到它大约在哪里(更多 0 或更多 1)。【参考方案2】:

添加到采样器的答案中,如果您在着色器图中制作图形或放大并将粗糙度贴图的结果通过减一节点然后将其插入平滑度槽,这是一种非常简单的快速获取方法材质中的平滑度修改器,以充当粗糙度修改器。

【讨论】:

【参考方案3】:

您可以使用 Unity 提供的 Autodesk Shader。它支持粗糙纹理。 https://docs.unity3d.com/Manual/Shader-Autodesk-Interactive.html

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review

以上是关于如何在 Unity 中使用粗糙度纹理?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Unity 中从 3D 对象中获取 2D 视图/纹理

如何在运行时使用 .bmp 文件并在 Unity 中创建纹理?

如何从 Unity 导出带有纹理的 fbx?

unity如何从纹理图片中获取透明度参数

如何从代码在 SceneKit 中设置基于物理的渲染?

Unity 2018.3:如何在整个 3D 模型的一部分上应用纹理?