千家信息网

Unity3D 卡通描边之如何控制线条粗细

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章给大家分享的是有关Unity3D 卡通描边之如何控制线条粗细的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、前言在之前的实时描边中,使用了几何着色器中的LineS
千家信息网最后更新 2026年11月03日Unity3D 卡通描边之如何控制线条粗细

这篇文章给大家分享的是有关Unity3D 卡通描边之如何控制线条粗细的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

一、前言

在之前的实时描边中,使用了几何着色器中的LineStream来进行绘制线条的,这样绘制线条是无法脱离底层特性来在所有平台上通用式地控制线条的粗细,这就需要我们再做文章。

二、原理

关于图形学中如何控制线条粗细这个问题,其实早就有人做了研究,文章 在这 。

借用该文章的一张图

原理看图就一目了然,在裁剪空间中,e0和e1是线条的2个顶点,之后依次计算出二维向量ext和n,在通过这2个向量计算出4个点,再用这4个点绘制出2个三角形即可拼出这个四边形。

本文在此基础上做了一点调整,如下图所示。

简单来说就是以线的2点为中线,来绘制四边形,而不是作为四边形的一条边,因为2个点的位置顺序在本文中的几何着色器中获取到的是无序的,可能是e1误被当初e0,也可能e0被误当成e1,如果要让它们变得有序那会变得复杂,而以此为中线绘制四边形,那么就会变得很简单。接下来只要计算出四边形的4个点,再由几何着色器分裂出2个三角形,即可得到此四边形。

n和ext在unity3D的Shader中是这样计算的:

float PctExtend = 0.01;float2 ext = PctExtend * (e1.xy - e0.xy);float2 v = normalize(float3(e1.xy - e0.xy, 0)).xy;float2 n = float2(-v.y, v.x) * 线条宽度;

从上述代码可以看出,宽度是在n的计算中控制的,我们可以把这个参数提取出来,让使用者随意调整。

三、编码

以前的代码写得比较乱,为了方便就不再整理了,编码略复杂,请自行整理。

这里附上 源码 (https://github.com/L-LingRen/UnitySimpleCartoonLine)

四、运行

效果还不错,性能做不评价,unity3d貌似内部做了优化,帧数不知为啥时高时低。

感谢各位的阅读!关于"Unity3D 卡通描边之如何控制线条粗细"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

线条 四边 四边形 控制 粗细 几何 卡通 不错 复杂 三角形 中线 代码 内容 原理 向量 宽度 文章 更多 篇文章 编码 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技金融是不是互联网金融 厦门中拓互联网络科技有限公司 互联网科技社 没上市的科技互联网公司 互联网科技金融公司 西安互联网科技公司 互联网金融科技委员会 中国互联网金融科技基金 新华互联网科技校企合作 蓝色互联网科技 卫星互联网科技股票 全球顶尖互联网科技公司 互联网科技产业特征 信承诺互联网科技有限公司 吉林省码上互联网科技电话 普陀区互联网教育科技管理办法 万物互联网智能科技 绵阳真晨互联网科技有限公司 华人运通互联网科技公司 瑞安市蟠桃会互联网科技有限公司 百单网互联网科技有限公司 深圳九邦互联网科技有限公司 互联网科技公司税收优惠 碳银互联网科技 致聘互联网科技 互联网高科技企业 银川新华互联网科技学校地址 广州慧亚互联网科技怎么样 南通创西澳互联网科技有限公司 工业互联网科技创业
0