kyuskoj 发表于 2022-12-31 20:28

Unity中MeshRenderer 和 SkinnedMeshRenderer 的区别?

相信很多刚开始熟悉Unity的同学看到这两个名字相像的组件一定会有一个疑问,它们什么区别?分别用在什么场景下?

那本文就简单介绍下他们的区别

一、MeshRenderer 和 SkinnedMeshRenderer 的区别

MeshRenderer 和 SkinnedMeshRenderer 都继承自Renderer类,两个类都和网格有关;

区别:SkinnedMeshRenderer 相较于MeshRenderer 多了以下的处理

1、蒙皮的处理,蒙皮则是根据每个顶点包含的骨骼索引和权重,去读取骨骼的坐标矩阵,并混合多个矩阵,最终用矩阵乘法获得顶点蒙皮后的位置。
参考链接
天欲雪:浅析 Unity 中骨骼动画的各种实现
old张:骨骼蒙皮动画
破晓:Unity大规模角色的GPU蒙皮动画表达方式

2、blendShape的处理,是一种顶点插值动画,可用于脸部表情的控制等
参考链接
科学养猪:人物骨骼蒙皮动画系列3:Blendshape表情动画

3、布料系统的处理。在角色身上或者场景的组件中表现布料的效果,比如角色的裙摆,场景中迎风招展的旗帜,都可以增加游戏的真实感,提升美术效果。
参考链接
Unity布料系统 - 阡陌渡客 - 博客园

二、应用场景
MeshRenderer 一般引用于没有动画的模型身上,比如建筑,石头,树木等。
SkinnedMeshRenderer 一般应用于具有蒙皮动画、表情动画,布料系统等的应用场景中。
页: [1]
查看完整版本: Unity中MeshRenderer 和 SkinnedMeshRenderer 的区别?