找回密码
 点一下
查看: 8989|回复: 6

amo骨骼教程第四讲——多模型多骨骼合并详解

  [复制链接]
发表于 2009-11-11 11:57:48 | 显示全部楼层 |阅读模式
第四讲  多模型多骨骼合并详解


   比如你有一个人模,同时还有一个马模,首先,你要将它们统统转化为mdl,之后用mdlvis打开人模,你先要选出你要添加马匹动作的人模动作,比如我们要在人模Attack 1这个动作添加马模SpellCastOmni动作,那么用mdlvis打开马模,找到动作SpellCastOmni,假设Attack 1动作是21000-23100,一共占了2101帧,而马的SpellCastOmni动作是5000-7000帧,一共占了2001帧,这样子的话,我们首先要将两个动作同步。

一、动作同步

  为了同步两个模型的不同动作,我们先要找一个参照点,这里,我们以Attack 1动作为参照,那么咱们就以第21000-23100时间段,2101帧数为标准来修改马模的SpellCastOmni动作,用mdlvis打开马模,进入f3模式,然后创建动作,时间轴范围21000-23100,然后拉选SpellCastOmni动作,按住shift+左键拉选整个时间轴的动作,然后鼠标右键点击时间轴空白处,会出现一个选单,点复制,然后再进入你刚才建立的新动作New(就是21000-23100帧的那个),在时间轴空白处点击鼠标右键,选择粘贴。然后SpellCastOmni的动作轨迹就全复制到这个21000-23100帧的新动作New上面来了,之后还有100帧是多出来的,因为本身人模的Attack 1动作就比马模的SpellCastOmni动作要多100帧,怎么办呢?下面咱们就要通过复制帧/粘贴,删除等命令微调这个新动作的时间轴,原则是勿必要使21000和23100这两帧动作一致,至于微调,具体删哪帧,延长哪个关键帧自己看着舒服就行了。总之,微调的结果就是让马模在第21000-23100帧时间段也有了一个2101帧的动作。

  微调之后,别忘了在动作名下面的一栏勾选上不循环动作,因为它同步的是攻击动作,一般攻击动作、死亡动作、Dissipate动作等等都是不循环动作。然后将除了New以外的其余动作,包括全局动作都删除掉,当然这是因为咱们只同步了这么一个动作,要是同步了两了,咱们就保留同步下来的那两个,同步了n个,咱们就保留n个,这么一来,咱们的第一步——同步动作就完工了。


二、优化骨骼

  接下来为了骨骼数据的移植,我们要把马模自定义优化一下,还是用mdlvis打开马模,删掉所有的特效连接点(三角形的骨骼点),然后进入优化设置,点第三个优化选项,会弹出一个新窗口,把窗口里的前五个选项都勾上,然后点击优化,好了,咱们的骨骼也优化完成了。


三、骨骼数据移植

  这是最为关键的一个步骤,是成是败就看它了,所以咱们一定要打起12分的精神来做。首先用记事本打开人模和马模。

  下面我们分析一下里面的数据


  咱们要将马模的骨骼移植到人模上面去,首先确定咱们要移植马模的骨骼数据,这个骨骼数据分为三个部分。

第一部分:

  NumBones(NumBones X)
  这个在文本的最开头,指的是这个模型中骨骼的总数,当然对于马模来说,咱们把Bones以外其他种类的骨骼全都删掉了,所以Bones的总数也就等于这个模型中骨骼的总数

第二部分:

  运动轨迹数据(Bone "bone_bX" {.......)
  这里记录了骨骼运动的所有信息,具体格式请参照我第三讲

第三部分:

  骨骼的位置坐标数据(PivotPoints X {......)
  这里记录了所有Bones的坐标,具体格式请参照我的第三讲

===================================================================================

然后开始移植了



第一部分的移植

  修改人模NumBones后面的参数,如果人模一共有100个Bones而移植过去的马模有20个Bones,那么这里NumBones后面的数目就是100+20,也就是写成120 ,这代表了移植过来以后合成模型的Bones总数

第二部分的移植


  首先阅览一下人模所有的骨骼运动轨迹,骨骼轨迹数据是一个骨骼一列数据这样一项一项来的(如bone_b1、bone_b2,这就是两项),在这里,我们要找到最后一项,注意,这最后一项一定要找对,很多人移植不成功问题就出在这儿,因为人模的骨骼不仅有Bones,一般还会有Attachments(特效连接点)等等,所以咱们一定要把它找到,这里有个标志可以帮助我们寻找,就是最后一项的下面一段一定是PivotPoints开头的段落,所以找到它就可以了,在它上面和骨骼运动轨迹数据最后一项的下面粘贴马模所对应的数据,注意!这里一定要一项一项的把马模骨骼运动轨迹数据粘贴进来,粘贴第一项(比如说第一项是bone_b0)的时候注意一下,先搜索一下整个模型数据中的ObjectId号,搜索文本中最后一个ObjectId,看看它的数字是多少(比如是ObjectId 110),那么bone_b0移植进来时,bone_b0所对应的ObjectId就是111,也就是110再加上1,然后bone_b0所对应的其它数据不变,粘贴进来就行,然后为了便于分别,骨骼名最好也改一下,骨骼名只能由英文字母、阿拉伯数字和下划线组成,在这里,我推荐移植进来的骨骼名称和人模原有的骨骼名称统一,比如人模的最末一个骨骼名字是bone_b99,那么,咱们新移植进来的bone_b0就要改名为bone_b100,接下来,咱们该复制第二项了(假设它是bone_b1),首先,在马模里bone_b1是以原来的bone_b0为父骨骼的,那么移植进人模以后仍要以bone_b0(现在已经改名为bone_b100)为父骨骼,要注意的还是刚才说的ObjectId号,bone_b1的ObjectId应该为112,因为bone_b100的ObjectId是最后一项为111,要再添加,就在上面加一,所以bone_b1的ObjectId为112,然后,咱们注意一下QbjectId数据的下一行,也就是Parent这一行,因为bone_b1有父骨骼了,所它还要在这里写上父骨骼的id号,在这里它的父骨骼是现在的bone_b100,那么bone_b100的id号是111,所以在这里,我们Parent后面的参数移植进来以后也要改为111,这样bone_b1移植进来以后要注意的东西也就没什么了,其余的数据粘贴过来就是了,最后别忘了再给bone_b1改个名字,如bone_b101。

  其余骨骼按照我上述的方法以此类推,总之原则就是一项一项来,ObjectId号都要承上启下,千万不要乱,另外空格标点什么的千万不要错,少一个空格就会因为错误而导致移植失败。


第三部分的移植


  首先要修改一下人模里PivotPoints后面的参数,这个参数是目前你第二部分合并完以后ObjectId的最大值再加一,比如最大的一个值为ObjectId 130,那么,在这里PivotPoints后面的值就要写成131


  然后PivotPoints下面就是各个骨骼的坐标位置,把马模的对应部分复制进来吧,复制到人模所有骨骼坐标数据项的下面就可以了,然后保存文件,退出,骨骼数据移植的工作就完毕了。



四、格式转化

  下面我们要用war3modeleditor打开刚才移植完骨骼数据的mdl模型,因为咱们合并完的mdl多少会有些数据上面的错误,而war3modeleditor这个软件具有一定的容错性,打开以后什么都不要做,直接另存为mdx格式,然后再用war3modeleditor打开那个mdx,再另存为mdl就行了。


五、移植多边形

  这一步我相信很多人就会做了,也就是我在教程序章里讲的骨骼绑定,那么具体步骤就去参看那个教程吧,这里就不详述了。

  绑定完工以后,咱们的所有步骤也就完毕了,大功告成!打开模型欣赏吧,现在你的合并的模型已经同时拥有了人和马的动作了。




  其实这个方法还可以继续发散,你们只要有时间还可以绑三个、四个,另外我这里只记述了Bones部分,其余的,如粒子、灯光、事件等等其实都是可以移植的,我也在探索,大家也可以去发掘

评分

参与人数 1威望 +2 收起 理由
linliming + 2

查看全部评分

发表于 2009-11-11 12:06:06 | 显示全部楼层
速来膜拜,虽然刚刚开始学动作,完全看不懂。。。
回复

使用道具 举报

发表于 2009-11-11 13:44:59 | 显示全部楼层
特地前来膜拜的
回复

使用道具 举报

 楼主| 发表于 2009-11-11 13:48:16 | 显示全部楼层
引用第2楼Flyingsnow于2009-11-11 13:44发表的  :
特地前来膜拜的
谢谢
回复

使用道具 举报

发表于 2009-11-11 14:52:06 | 显示全部楼层
这个好像很麻烦我老吧英文的部分都乱了。。。。。。5555555
回复

使用道具 举报

发表于 2009-11-11 15:15:02 | 显示全部楼层
大侠能做图解吗?  有些地方我看不懂 多边形管理器这块 我一头雾水  不知道这么弄。。。。。
回复

使用道具 举报

发表于 2009-11-12 21:59:27 | 显示全部楼层
请教材做好后就这里在给下地址谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-5-7 05:31 , Processed in 0.068420 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表