rainyeve
  • 首页
  • 编程
  • 涂鸦
  • 其他
  • 关于
2020年2月8日
编程

【Unity网格编程】切开网格

【Unity网格编程】切开网格
2020年2月8日
编程

用一个平面切割网格,生成两个新的网格。参考了《快速切割网格》这篇文章( 作者CareFreeQ )。关键思路是截断三角形新增顶点,原文对截面进行了简单处理,默认了截面是凸面,而且只有一整块。切割角色模型的皮肤网格要做额外处理。

切开角色网格并“填充”切面

加入时间停止,环境光变暗等特效,做处决敌人的效果:

切开网格用作处决

Tricks

不填充切口网格

角色模型比较复杂,简单地把切口当作凸面来对顶点排序,无法完美闭合切口:

把凹面当凸面来处理的结果

解决方案是对模型背面着色,再加上一些自发光,则看起来像是“填充了”切口,同时也节省了切口顶点的排序计算。缺点是难以给切面更复杂的效果,因为根本不存在切面网格,仅仅是看上去像是“切面”。不过目前简单地对切口着色已经足够。

左边按凸面填充切口,右边不填充仅上色

切割皮肤网格前先Bake

切割皮肤网格前,要先调用bake方法复制一份,把皮肤网格变成一般网格,否则在SkinMeshRenderer的MeshFilter中拿到网格数据,是模型在T-pose时的数据。Bake方法把模型实时的姿势给“截取”了下来,之后才能开始切割。

Post Views: 3,436

unity3d 网格

上一篇【Unity Shader】裂缝效果下一篇 【Unity Shader】径向模糊

发表评论 取消回复

邮箱地址不会被公开。 必填项已用*标注

分类目录

  • 其他 (2)
  • 旅行 (1)
  • 涂鸦 (6)
  • 编程 (28)
Email: wuch441692@163.com