任务:识别模型的交界处,将其信息存储在一张贴图中
- 存到 Base Color,因为黑白图的 R、G、B 值一样,所以取 R 通道就可以
Unity Shader 里读取:float mask = SAMPLE_TEXTURE2D(_EdgeMask, sampler_EdgeMask, uv).r;
建模阶段
- 之前是放了三个立方体尝试完美的拼接在一起(错)
后来我又想能不能通过挤出边实现(但是玻璃玻璃应有厚度)
Ctrl + R环切,裁出厚度的宽度然后挤出面 - 导出:导出前ctrl+A全体应用变换+旋转,然后u+智能UV映射
Adobe Substance painter阶段
- 新建项目
- 选择模型的时候法线贴图格式选择OPENGL
- 如果最后贴图要给 Unity 用,法线贴图格式建议选 OpenGL / Y+,因为 Unity 读取切线空间法线时默认是 红通道 X+ 向右、绿通道 Y+ 向上,也就是常说的 OpenGL 法线方向。DirectX 和 OpenGL 最大区别基本就是 绿色通道 Y 方向相反,选错后会出现凹凸反了、边缘高光方向怪、阴影像“鼓起来/陷进去反了”的问题。
- Unity 的导入面板里也有 Flip Green Channel,如果你已经导出了 DirectX 法线,可以在 Unity 里勾这个来补救

烘焙贴图
- Texture Set List – Bake Mesh Maps / 主视角右上角的🥐
- 有叹号的是需要有高模才能烘焙的
- 如果没有高模那就启用Use Low Poly Mesh as High Poly Mesh
如果有高模那就导入高模模型,一般一开始导入SP的模型是低模- 如果没有Mesh Map Setting这个界面:Windows – Views – ~

- 注意:一般 高模转低模不是在 PT / Substance Painter 里做,而是在 Blender、Maya、3ds Max、ZBrush 这类建模软件里做
处理贴图
- 目的是:把 PT 里“Generator 生成的 Mask 信息”转成一张 Unity 能读的贴图。

- 先添加一个纯黑色的Layer
- 因为如果没有黑色底层,导出的贴图可能不是你想要的纯黑白 Mask

Unity 导入这张 Mask 后怎么设

给模型的某部分更换材质
- 新建一个Fill Layer,并添加Black Mask,选中Mask
- 在最左侧的工具列选择Polygon Fill

- 因为你加的是 Black Mask,默认全隐藏,因此Polygon Fill 的颜色/值要是:White / 1
- 逻辑是黑色 Mask = 隐藏这个材质;白色 Mask = 显示这个材质
- 选择填充方式:
- 三角形:Triangle Fill,按三角面填
正方形:Polygon Fill,按多边形面填
立方体:Mesh Fill,按独立网格填
棋盘格:UV Chunk Fill,按 UV 岛填
- 三角形:Triangle Fill,按三角面填
- 然后点击想要填充的部分即可
- 同时如不想和主材质叠加,则要在其他材质添加白色Mask,同样的步骤但是color改成黑色





