Unity动态骨骼插件 飘带动画基于bone的实时运算


 
嘛 就是这套东西啦
先说效果 他可以省去你K飘带的时间 直接在引擎中运算出动画
你只需架好骨骼 绑定好模型 这个插件相当于max里常见的飘带插件 但是更强大 

 
第一个脚本SpringBone是挂在骨骼下的
除最末端骨骼外每节骨骼都要挂一次 需要保留原有动画的骨骼不能挂
第二个脚本SpringColider是挂在碰撞体上的
哪里需要跟飘带产生碰撞就挂在哪
第三个脚本SpringManager是挂在模型最父级的

第一个脚本参数是这样的 
 
Child 子级 这里要指定这节骨骼的子级骨骼
Is Use Each Bone 使用各自骨骼 勾了之后才会产生物理运算
Stiffness Force 柔韧度
Drag Force 碰撞大小
Colliders——Size 碰撞数量 这里填几 下面就会有几个槽 每个槽对应一个碰撞体 进了槽的碰撞体才会跟这节骨骼产生碰撞
(中间略过的参数目前还没测试出作用 欢迎大佬指正)

       
第三个脚本的参数是这样的
 

两条曲线都选择斜向上这种款式 数值一般是0--1根据需要来调
Size这里 这个模型有几根骨骼要计算 就填几 并且要把骨骼一根一根拖过来(也是很烦……)

在Unity开发中,有些角色我们要赋予TA更多的细节让衬托真实度,比如女孩的长发飘飘,或者丝带,旗帜,虽然我们可以用动画clip来呈现,也可以用Spring Joint和Configurable Joint来设置创建丝带,绳子之类,但是设置起来我觉得挺麻烦的.

找来找去,在一位日本的Unity开发者博客上找到了一组脚本,实现飘逸的长发或飘带还是挺好用的.

这是Webplayer案例:http://rocketjump.skr.jp/unity-spring-test/

这是测试案例,用了Unity二次元角色:
http://rocketjump.skr.jp/download/SpringTestScene.zip

这是只含必须的脚本包:http://rocketjump.skr.jp/download/SpringScript.zip.

具体用法可参考测试案例中,下面只简要说明可能会遇到的问题,首先要在飘起来的模型中让美术构建骨骼及蒙皮,如要动起来的这部分含有动画,那么可以在fbx导入设置中将这部分动画取消动画的导入,因为我们用脚本来处理,不使用动画.

在要参与飘动的每根骨头中创建一个空的子对象(empty gameobject),并将子对象移动到当前所属骨头的末端,之后再给参与运动的每根骨头挂上Spring Bone脚本,里面的Child指定刚才我们创建的子对象,Bone Axis来描述末端相对与骨骼坐标点的方向,如empty gameobject在骨骼坐标y轴负方向上,那么BoneAxis添”0,-1,0″,Radius只半径,这里用来生成碰撞体,仅支持球形碰撞体,Stiffness Force是硬度,数值大像钢筋,数字小像丝带,DragForce是力衰减,数值大,整个模型动起来约像丝带,数值小整个模型动起来像多节棍.具体可调整各值观察结果.
之后在我们这个模型的父级添加SpringManager脚本,并把所有添加了Spring Bone脚本对象都拖拽到SpringManager数组字段中.播放拖动模型起始骨骼就可以看到效果了.
如我们制作角色头发飘动效果,那么我们还希望头发与角色身体发生碰撞,避免头发穿透角色身体,这就要创建Gameobject并赋予SpringCollider脚本,可以看到绿色球形Gizmo,通过调整它的直径来改变碰撞球的范围,将它放置在想要阻挡头发穿透的地方,并将Spring Bone中指定需要产生碰撞的SpringCollider对象(勾选debug后播放可以看到黄色球型Gizmo).

大概就是这样了,还是要实践出真知

posted @ 2018-10-17 15:13  守夜人灬  阅读(7508)  评论(0编辑  收藏  举报