
[Unity][Unity特效]3D物体遮挡描边
创建片段模型:使用 Unity 的片段法工具创建模型片段。默认情况下,可以使用默认片段区域进行位移调整,以确保片段边缘正确对齐。
发布日期:2021-05-09 11:56:16
浏览次数:25
分类:精选文章
本文共 3140 字,大约阅读时间需要 10 分钟。
Unity 使用片段法实现方块轮廓效果材质设计
在 Unity 中,为方块添加轮廓效果和材质时,可以采用片段法来实现独特的视觉效果。本节详细介绍实现过程及相关参数优化方法。
系统概述
为了实现出色的方块材质效果,我们需要使用片段法。在这种方法中,我们将场景分割为不同的部分,每个部分对应不同的光照效果。在本例中,我们主要关注两个关键效果:轮廓效果和材质han。
细节说明
为了实现方块的轮廓效果,我们可以遵循以下步骤:
片段法提供了灵活的模型调整权Force 的方式。您可以通过调整片段区域的边缘乘数来控制边缘尖锐程度,如过怀念边缘乘数值越大,边缘越锋利。
设置轮廓颜色:为了实现轮廓效果,我们添加了一个轮廓材质。所需颜色选择可以通过 gamma 调整,以获得最佳视觉效果。诸如材料设置 中的 gamma 值会极大影响边缘颜色和饱和度。
材质参数优化:
轮廓宽度:设置合适的轮廓宽度可以调节边缘的张开程度。过宽条纹宽度可能导致视觉效果不够自然,而过窄的条纹可能无法清晰观察到轮廓形状。
背景透明度:适当调整背景的透明度,确保轮廓边缘清晰可辨。这有助于避免背景不透明度过低或过高导致的视觉扰乱。
对于材质设计来说,选择合适的光照环境和材质反光指数等参数至关重要。过高反光指数可能会增加光泽感,使方块表面更金属化,这是实现轮廓效果的一个重要考量因素。通过调整反光指数,仍然可以控制材质的视觉表现。
fragment 脚本详解
以下是实现轮廓效果的片段脚本示例:
Shader "Outlined/Silhouette Only"{ Properties { _OutlineColor("轮廓颜色", Color) = (0,0,0,1) _Outline("轮廓宽度", Range(0.0, 0.03)) = 0.005 } CGINCLUDE #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float3 normal : NORMAL; }; struct v2f { float4 pos : POSITION; float4 color : COLOR; }; uniform float _Outline; uniform float4 _OutlineColor; v2f vert(appdata v) { v2f o; o.pos = UnityMatrixTRS(UNITY_MATRIX_MVP, v.vertex); o.pos.xy += Normalize;">> offset * o.pos.z * _Outline; o.color = _OutlineColor; return o; } ENDCG SubShader { Tags { "Queue" = "Transparent" } Pass { Name "BASE" CULL OFF ZTEST ALWAYS ZWRITE OFF Blend ONE ONE Stencil { REF 2 COMP ALWAYS PASS REPLACE ZFAIL REPLACE } CGPROGRAM #pragma vertex vert #pragma fragment frag half4 frag(v2f i) : COLOR { return half4(0,0,0,0); } ENDCG } Pass { Name "INNER" CULL OFF ZTEST ALWAYS ZWRITE OFF Blend One One Stencil { REF 1 COMP ALWAYS PASS REPLACE ZFAIL REPLACE } CGPROGRAM #pragma vertex vert2 #pragma fragment frag v2f vert2(appdata v) { v2f o; o.pos = UnityMatrixTRS(Unity_MATRIX_MVP, v.vertex); o.color = _OutlineColor; return o; } half4 frag(v2f i) : COLOR { return half4(0,0,0,0); } ENDCG } Pass { Name "OUTLINE" CULL OFF ZTEST ALWAYS ZWRITE OFF Blend ONE ONE Stencil { REF 2 COMP EQUAL PASS REPLACE ZFAIL REPLACE } CGPROGRAM #pragma vertex vert #pragma fragment frag half4 frag(v2f i) : COLOR { return i.color; } ENDCG } } Fallback "Diffuse"}
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年05月02日 18时27分52秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【Flink】Flink 底层RPC框架分析
2019-03-06
解决:angularjs radio默认选中失效问题
2019-03-06
Hadoop学习笔记—Yarn
2019-03-06
Jenkins - 部署在Tomcat容器里的Jenkins,提示“反向代理设置有误”
2019-03-06
wxWidgets源码分析(3) - 消息映射表
2019-03-06
wxWidgets源码分析(8) - MVC架构
2019-03-06
wxWidgets源码分析(9) - wxString
2019-03-06
[源码解析] 消息队列 Kombu 之 基本架构
2019-03-06
[源码分析] 消息队列 Kombu 之 启动过程
2019-03-06
wx.NET CLI wrapper for wxWidgets
2019-03-06
Powershell中禁止执行脚本解决办法
2019-03-06
OO_Unit2 多线程电梯总结
2019-03-06
04_Mysql配置文件(重要参数)
2019-03-06
JavaSE总结
2019-03-06
Python IO编程
2019-03-06
使用 TortoiseGit 时,报 Access denied 错误
2019-03-06
基于 HTML5 WebGL 的污水处理厂泵站自控系统
2019-03-06