顶点动画的注意事项

1、为什么批处理会影响顶点动画

Unity中默认有静态批处理和动态批处理,批处理的主要作用是合并多个对象,将他们作为一个DrawCall进行处理,之所以批处理会对顶点动画带来影响,是因为不同的对象会拥有不同的变换矩阵(位置、旋转、缩放),而批处理后他们的变换矩阵会进行统一处理

举例:
物体A: 位于世界空间位置(0, 0, 0),无旋转。
物体B: 位于世界空间位置(5, 0, 0),无旋转。
他们是两个独立的对象,拥有不同的变换矩阵

  • 不进行批处理时:每个对象的变换矩阵会单独传递给Shader,顶点的模型空间位置会根据各自的变换进行正确计算
  • 进行批处理时:启用批处理后,Unity会将对象A和对象B合并为一个Draw Call,并使用一个统一的变换矩阵,比如在静态批处理中,Unity会将对象A和对象B的顶点合并为一个网格,并使用统一的变换进行渲染

批处理后顶点位置是混合的,Shader中无法区分不同对象的模型空间位置,可能带来的问题有:

  • 顶点动画失效:假设你希望顶点在模型空间的x方向上进行sin波动动画。如果对象A和对象B的模型空间位置被混合,波动动画会变得不可预测
  • 变换混淆:对象A和对象B有不同的变换矩阵。如果批处理后使用统一的变换矩阵,Shader无法区分每个顶点属于哪个对象,导致所有顶点的动画效果混淆。

总结

批处理会让对象失去独立性,相当于将多个对象之间独立的模型空间坐标系合并为一个坐标系
从而影响顶点的相对位置和变换矩阵等信息,导致顶点动画结果异常,因此我们通过渲染标签来关闭批处理

关闭批处理带来的问题

关闭批处理带来的最直接问题就是导致DrawCall的提升,DrawCall的提升可能会带来性能问题。

如果DrawCall的增加并没有带来性能问题,那我们可以通过关闭批处理来解决顶点动画问题
如果带来了性能问题,并且必须

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值