untiy 利用法线做高效3D模型 边缘泛光

本文介绍了在Unity3D项目中如何利用法线进行3D模型的边缘泛光效果,以实现交互式外观变化。通过视向量和法线向量的点积来检测边缘,根据夹角大小调整颜色强度,以此创建边缘泛光效果。只需一个PASS即可完成,相比描边效果更高效。文章提供了带内边缘泛光的shader代码,并指出可通过调整参数控制边缘区域的大小。
摘要由CSDN通过智能技术生成

在unity3D项目中,当选中一个3d模型,需要对其做一个外观的变化,来表现一个交互。
经常是以描边或边缘泛光的形式来处理。

描边的效果经常都是通过两个PASS来实现的,1个输出 沿着法线发现 放大的模型,再统一着色,这个颜色就是描边的颜色。另一个则直接输出。由于第一个沿着法线有做放大,所以就能实现描边的效果。

而边缘泛光则只需要一个PASS解决。当然效果有点区别,这个看需求而定。

思路:核心就是边缘检测,通过视向量和顶点的法向量的点积来实现。当两个向量的夹角越大,越靠近边缘。依赖这个做颜色强度,和纹理颜色做差值运算 就可以了。

没有边缘泛光效果
在这里插入图片描述
加上内边缘泛光效果
在这里插入图片描述
shader代码:

Shader "JackyShader/OutLineShader"
{
	Properties
	{
		_MainTex ("Texture", 2D) = "white" {}
		_OutLineColor("OutLineShader",Color) = (0.0,0.0,0.0,1.0)
	}
	SubShader
	{
		Tags { "RenderType"="Opaque" }
		LOD 100

		Pass
		{
			CGPROGRAM
			#pragma vertex vert
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值