SkinnedMeshRenderer骨骼动画的模型位置问题

在Unity3D中使用SkinnedMeshRenderer进行骨骼动画时,模型的位置不会随动画形变而改变。为解决这个问题,可以尝试两种方法:一是启用Collider on Skinned Mesh,但可能导致性能下降;二是通过设置updateWhenOffscreen属性并获取bounds.center来跟踪组件位置。在导入模型时,虽然可读写SkinnedMeshRenderer.vertices,但在测试中发现其位置不变。
摘要由CSDN通过智能技术生成

在使用BlendShape动画模式创建骨骼动画,并导入Unity3D之后,模型内和骨骼关联的部分会被自动附加一个SkinnedMeshRenderer的脚本组件。

大家也许已经注意到了,在模型变化的过程中,虽然我们“看”到模型的形变,但是根源上模型的位置和碰撞体等并没有发生改变,因此在一些需要在模型细节处附加标签的项目,标签并不会随着“可见的”模型变化而移动。但在粗浅尝试后,我们封上提取模型变形之后组件位置的方法。此处有两种方法:

一, Collider on Skinned Mesh - Unity Answers,该方法能够获取变形后的完整Mesh,进而自行提取顶点位置或其他;缺点是烘焙耗能太高导致程序卡顿,通常建议手动触发

二, 笔者的方法分为2步骤:

① 在需要追踪位置的组件的SkinnedMeshRenderer上勾选updateWhenOffscreen,这样该组件的框架(bound)细节就会持续更新。

② 在代码中获取这个小组件的 SkinnedMeshRenderer.bounds.center来提取当下模型中小组件的中心位置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值