介绍
什么是动态骨骼?
Cocos动态骨骼
通过简单的设置,即可在胸部、衣服、头发、尾巴等部位,通过物理模拟出晃动或者飘动的动画。
- 此项目为两个demo项目源码,下载后用cocos分别加载项目;
- 项目加载后安装动态骨骼(扩展/动态骨骼/安装;不用安装内置项目,否则有脚本重复定义);
- Demo项目中的警告可以忽略,都是些动画问题,与项目无关;
- Demo中的模型为网上下载,请勿商用;
功能:
- 开箱即用,通过组件参数设置即可;
- 性能优异的物理模拟,所有向量与矩阵均使用对象池;
- 包含完整的代码;
快速开始:
- 下载并安装插件;
- 点击菜单“扩展/动态骨骼/安装”,即可将源码拷贝至项目中;
- 点击菜单“扩展/动态骨骼/安装示例”,即可将简单的示例拷贝至项目中;
- 打开demo中的场景即可快速运行;
自定义摇摇:
- 导入模型,放入自建空节点下
-
关闭
烘焙动画Use Bake Animation
[非常重要]
- 在空节点下添加DynamicBone组件
- 设置主要参数:
- root: 骨骼节点
- end node(end offset): 如果只有一个节点,比如有些胸部动画,必须添加尾结点(优先)或者尾部偏移值;
- 调节其他物理参数
- 可打开编辑器模拟,移动模型即时看到效果
注:示例模型带有错误示范,胸部由两个结点控制后,造成了模型抖动,一般胸部第二个结点不能有动作权重。
参数值:
- 动态骨骼所有参数如下:
- root:
需要模拟的骨骼根节点;
- update rate:
模拟计算帧率;- damping:
阻尼(0-1),值越大越阻力越大,模拟时间越长;- damping distrib:
阻尼散布曲线,默认常量表示不使用曲线;
曲线时,横轴为动态骨骼节点在总长度所占百分比,起点值为damping值;
其他散布曲线类似,将不在单独描述;- elasticity
弹性值(0-1), 值越大弹性越大;- stiffness
硬度值(0-1), 值越大硬度越大,1类似木棍;- 惰性,延迟
惰性值(0-1), 值越大,追踪位移的时间越长;- radius
(0,)用于碰撞的半径
![]()
- endNode
尾部延长节点,用于单节点动画物理模拟;
- endOffset
局部坐标系下的尾部延长向量,用于单节点动画物理模拟,优先使用尾部节点;- gravity
世界坐标系下的重力值;- force
世界坐标系下的常驻外力;- freezeAxis
动画限制平面,设置轴表示方向;- colliders
碰撞器,防止模拟时穿模;
![]()
- excludeNodes
排除节点,从排除节点中断模拟;- distantDisable
是否开启距离测试;- refenceObject
距离测试参考目标,空时按相机计算;- distanceToObject
距离测试阈值;- enableEditorDebug
是否允许在编辑器模式下运行模拟;
![]()
- showDebugGizmos
是否显示调式图形,3.5以上版本支持;
碰撞模型:
- 平面碰撞
- 胶囊体碰撞
完成配置后,直接播放动画即可,关闭组件即可关闭物理模拟。
Tips:
此版本在cocoscreator3.5上开发,但也只是为了使用图形显示功能用于debug,如果项目在3.5以下,理论上也是可以使用的,只是不能正常显示测试图形,不利于参数调试;
动态骨骼节点链中,不应包含锁节点的不必要节点,否则可能出现模拟错误(抖动、失效等问题);
用户交流:
QQ群:341315364