对打

创建源动画,应该将动画围绕在世界中心。还要保障模型不重名(就算有命名空间也该如此)。相当于最后输出两类角色(也可以是一类绑定角色,不同的rendertype),两套动作。

创建两个实体,分别读两套角色,创建实体组,在组内添加两个实体(这里读的是不同的显示)。

创建三个locator,作为定位,使用粒子工具在位置上创建粒子。此时每个点上只有一个粒子。

调节粒子总数,修改行列数。每个坐标点产生两个粒子,这套循环用到两套所以是俩。这里启用了实体组,取消了单一实体添加。确保每组两个不同实体类别的粒子。

两套实体,分别添加同步战斗动作,在设置当中同步物体适配三个坐标点(不适配位置的话,不管你多少对粒子,都是在原点套动作,看着跟动画洋葱皮一样),显示设置能做到洋葱皮显示。

如果是要做每对的随机,要关联一下参数,要不动作匹配不上,或者出缓存之后处理也行。下面来说怎么避免这个问题。

我们需要计算一个每粒子属性,并且每一组的粒子属性要一致才能保障同步,这里添加startPP属性加载在动力学解算前,粒子已经创建出来了所以属性不能加载后头,用实体分组的id来对每组粒子做区分(每组粒子的数值一致),在每个motion的start上选择这个属性作为随机值,下头的速度也可以用这种方法来控制。

弓箭手案例——第一部分:角色,动作处理

www.mixamo.com

从这个网站下载动画(fbx格式),或者按照进阶所讲的角色编辑处理动作

一套完整动作可能需要几个部分拼凑连接起来才可以, 这里的三个分别是装备弓,拉弓,射箭。

要对所有骨骼进行动画烘焙,先选中这个根节点下游的所有节点。

进行动画烘焙,可以起到消除整数帧的中间帧(规整)。

之后创建角色骨骼,调整ik方向,注意骨骼不要有缩放(如果有的话会有弹窗提示),另外自动匹配基本上没法一键匹配争取所有的骨骼ik朝向(骨骼编辑没有撤销这种操作。。。)

另外骨骼ik模式可以转换。

匹配好动画过后可以导出motion文件。

将搭箭,射箭的动作拼凑到一起,先找到射箭动作,选中所有骨骼(用select命令保证选中所有子项),关键帧烘焙,并复制关键帧。再找到搭箭动作烘焙关键帧

新开场景,将搭箭,射箭两段动画拼合之后做好需要的调节。(除了效果的连续性,最好能保证数值的连续性)

使用先前做好调整好的骨骼,准备匹配动画导出motion文件

骨骼动画问题可能会导致不匹配(同个骨骼源的动画匹配不上骨骼),比如这套动画的k帧数值是对角关系(相差180)所以会有分段标红

这里是旋转有一些问题,能调整解决的就尝试调整一下,之后输出motion文件

新建场景,读取士兵角色(带模型,材质)

读入两段动画,搭箭和射箭,搭箭的动画输出端的判断为True才能在结束后触发第二段射箭动画,同时注意搭箭的动画不需要循环播放,勾选掉loop,这时候会发现搭箭的动画被跳过了。

使用触发时间来解决这个问题,在第一段搭箭播放100%后触发第二段(这个节点也可以选择秒数和帧旋转节点来调整动画朝向(否则就要重生粒子控制朝向)

弓箭发射案例

导入弓箭,可以看到是作为角色导入的,有骨骼绑定。

这里可以看到弓箭两部分的质量不同,在计算动力学的时候会有效果。

这里弓箭实体不需要随机调整。

导入弓箭手实体,调整显示属性为弓箭手,添加动作之后,观察射箭动作看看哪几帧发射比较合适,找到第70帧。

添加完发射节点,再创建一套空的粒子系统,拾取进发射节点。设置好总的箭量,每个实体的产生数量,发射速率,产生的骨骼位置等数值。

添加发射粒子节点,放置到循环当中与射箭动作平齐,使用触发判断,选择动作帧数作为判断依据,这里[behaviorName]要用motion名称替换掉。

使用的是射箭的motion节点,所以替换一下刚才的信息。

在循环输出的位置添加behavior time Trigger相当于发射后多少帧数开启下一次的循环。

70帧的时候,符合判定条件开始发射,发射后停滞,触发block10帧,之后开始下一段循环

回到弓箭的motion,先添加物理解算,在将output端口开启为True好进行下步计算。

添加碰撞体,在碰撞属相上修改碰撞id(统一)。要保障弓箭在做完动力学到判断碰撞静止这一条节点的通路是True,将最后的解算判断节点改为静态刚体,同时开启位置停止。在这个节点的输入判断出添加碰撞判断,当碰撞id是设置的id时进入下一环节。(区分不同的粒子)

箭可以发射到碰撞体上

为了箭插入停止时能有摆动,添加设置骨骼形态节点,添加表达式,控制弓箭末端骨骼动画,使用ramp图来控制抖动衰减与持续时间。

适配位置

创建作为阵型参考的平面,选择点(如果是按照面中心放置,选择面),添加golaemtool

添加位置适配,拾取平面,适配元素改为点,方式是粒子id匹配元素id

为了在这之后播放其他动作,修改一下endtrigger改为5帧后触发,另外如果不先添加位置适配,在这种平行动作(几套同时算)的时候会先乱一阵才会按适配位置去运行。

添加locomotion,选取好动作。这里动作适配可以选择文件(这里因为选择文件之后无法正常使用,所以放弃了),在文件模式下使用gnm文件,也可以添加多个文件。对应的使用与设置,在后面的资产转换---动作匹配上能找到。

路径跟随和路径变形也可以跟着使用。

位置上的随机可以在适配节点添加上。

使用阵型设置行为(补充解释)

golaem在进行引导的时候可以使用定义的阵型形状,当处理军队战阵分割合并的时候非常有用,要用这种方式的话需要定义实体类别组,并且要用阵型设置行为

1.创建一个(或多个)实体类型 :创建的类型是为了添加到实体组当中的,别忘了给这些实体类型关联好角色文件。

2.创建实体分组 (默认在菜单中添加):创建实体分组可以让你组内的不同类别的实体有同一表现。阵型设置行为只能应用到这种类别的实体上。不需要为实体分组添加实体类别,直接在粒子工具上添加就行。

3.粒子工具方面:创建工具后在面板添加分组

4.设置分组行为:可以为单独实体进行行为设置,也可以为了包含实体的分组进行设置。

独立实体:当实体被涵盖在一个分组当中的时候,独立实体的goto行为会被忽略,并被作为分组的一部分去执行分组的行为。

实体分组:下一步就是进行组内设置,如果希望整个实体组移动的话就加上导航行为,(locomotion这种还是加在独立实体上)