【案例】三维物体描边
开发平台:Unity 6
开发工具:Shader Graph
参考视频:Unity教程 — Shader Graph 超简单外框材质
一、效果展示
二、Shader Graph 路线图
三、案例分析
核心思路:外轮廓实质由双材质渲染叠加的最终效果,模型材质优先于外轮廓材质表现。
3.1 说明 | 获取模型空间位置信息
Postion(位置节点):允许访问网格顶点或片元的位置
为访问模型自身顶点位置信息,限制 Mode = Object。具体区别如下:
|
|
参考图2。在 “苏珊娜” 的模型中表现出两种材质颜色的模型。可理解为实际上由两种材质渲染的模型叠加效果。在层级遮挡的影响下,给出视觉的表现效果。在实现的效果上,可以是 Positon(位置节点)x Scale(变量 缩放倍数
)来达到效果。
因为要求始终作为最后层被覆盖,于是设置上该材质使用 Back(仅背面渲染)。避免因为缩放的正面模型覆盖原模型问题。
3.2 说明 | 管理外轮廓厚度
仅按照 Positon(位置节点)x Scale(变量 缩放倍数
)来实现第二材质模型效果是存在瑕疵的。如下所示:
|
|
为了改进外轮廓的统一表现,提出了 Normal Vector(法线坐标)作为缩放参考标准。(类似模型挤出)
Normalize(法线归一化节点)x 变量 Scale
计算外轮厚度,将结果与 Positon(位置节点)相加得到最终的外轮廓位置信息。
关于 图2 法线叠加 中红色描框的说明
这是由于模型自身精细度所造成的,当定点数过于少时,造成的缝隙效果。解决方式为模型增加平滑度即可。