模型描边
概述
在3D场景中选中一个3D模型时,有时需要通过其外观变化来表现一定的交互。例如,在游戏中或是在编辑器中选择模型时,希望模型轮廓发出亮光来表示已被选中,通常就需要通过模型描边来实现,下图为模型描边效果的示例图。
在引擎中开启模型描边效果
在编辑器中,依次点击菜单栏窗口(Windows) -> 默认效果(Default Effect)来打开默认效果窗口。
在默认效果(Default Effect)窗口中,找到模型描边(Model Outline),在该选项中可设置模型描边效果,勾选是否可见(Visible)开启该效果。
在大纲(Hierarchy)面板中选中LSceneSettings-1,然后在观察器(Inspector)面板中勾选上下文配置(Context Config)下的启用模型描边(Enable Model Outline)。
使用代码开启模型描边
在游戏中可以通过代码来开启模型描边。首先获取这个模型对象的材质列表,然后为其所用到的每个材质开启描边效果,开启描边需要设置如下四个属性:
- 启用描边(OutlineEnable),需要传入字符串形式的true或者false。
- 描边颜色(OutlineColor)。
- 描边扩张度(ExpandSize),如果给出数值为0则默认不扩张。
if nx_name(visual) == "Model" then
if nx_find_method(visual, "GetMaterialNameList") then
local material_table = visual:GetMaterialNameList()
for i = 1, table.getn(material_table) do
visual:SetCustomMaterialValue(material_table[i], "OutlineEnable", nx_string(enable))
visual:SetCustomMaterialValue(material_table[i], "OutlineColor", "0.2, 0.95, 1.0")
visual:SetCustomMaterialValue(material_table[i], "ExpandSize", "0.0")
end
end
通过修改默认效果(Default Effect)窗口中模型描边(Model Outline)的相关属性,可以看到不同的描边效果。
属性 | 说明 |
---|---|
是否可见(Visible) | 用于控制描边是否可见。 |
绘制接缝(Draw Seams) | 绘制多个描边时,是否就模型重叠部分启用接缝。 |
像素宽度(Pixel Size) | 描边的粗细。 |
深度偏移(Depth Offset) | 模型描边在深度测试时的偏移值(该属性用于调整深度剔除效果)。 |
使用深度剔除效果需先在大纲(Hierarchy)面板中选中LSceneSettings-1,然后在观察器(Inspector)面板中的上下文配置(Context Config)下勾选启用描边深度剔除(Enable Outline Depth Culling)来启用深度剔除效果。
效果展示
接缝描边


深度剔除

