找回密码
 点一下
查看: 1419|回复: 4

头目关于动作名称的一些问题解答

[复制链接]
发表于 2013-5-3 13:35:57 | 显示全部楼层 |阅读模式
本帖最后由 Amo 于 2013-5-3 15:32 编辑

昨晚,头目在群里说了一下关于动作名称的内容,我整理了一下记录:

       规则是这样。actor消息里面有AnimGroupApply这个消息,这个消息用来给actor播放的所有动作名插入一个关键字,而动作名是由关键字组成的,可以不止一个词,通常来说,站立的时候会播放stand,而你用了AnimGroupApply A。那么这个actor在试图播放stand的时候。会先去搜索这样的动作:
                                          A
Stand xxxx
                                          Stand A
xxxx
                                          Stand xxxx
A
       不止是stand, 一旦接受了AnimGroupApply A,那么不管它播放什么动画都会试图带上个A。,如果要播放Stand,却找不到A Stand 或者Stand A之类的关键字。那么就会放弃A,再来单独找Stand

       数字是特例,最好不要作为标签。后面会有更详细的介绍。

      如果,你有4个不同的变形,每个都有不同的stand动作,那么就分别叫他们Stand StageFirst一直到Stand StageFourth或者Stand A一直到Stand D,如果每个组有不同开火动作,也可以加Attack A这样的。然后,不带A、B、C、D的动作可以作为默认动作。比如Sleep,如果模型本身没有Sleep A动画的话,就可以单独用Sleep,那么在A状态下播放Sleep会直接播放Sleep,如果没有了Apply A或B,C,D,就那只播放Stand,除非找不到StandStand 01、Stand 02这些。

        基本上,标签加在什么位置都可以,但是不能加在数字后面,数字必须在最后,另外,比较建议的方案是,把标签放在第二个位置。最后,标签同样要遵守命名规则。比如Stand apdsd xxxxxx是不行的,组成动作名的关键字必须在固定列表里选择,只能使用固定单词来组成词组。

       动画名顺序中,有意义的其实只是第一个关键字。其它关键字的顺序是没意义的。比如你有一动画,Stand Work A Start,那么你让它播放这个动作Stand A Start Work,结果还是会放Stand Work A Start。但是如果模型只有一个Start Stand Work A,那么匹配就会失败,因为找不到以Stand开头的动作,除非你先给它加一句AnimGroupApply Start,那么这时候Start被认为是组关键字,Stand就成了第一个关键字了,这时候它就会播放 Start Stand Work AStand Work AStand A Start Work有三个关键字相同,所以能被播放。也就是抽取group tag之后,在剩下的动作名里面找。总而言之,最好不要把Tag放在最前面。

       第一个放动作名,第二个放标签剩下的放第三位。
       下面举个例子,如果我要播放 Stand Work Upgrade Start,而目标模型有
                                          
Stand
                                           Stand Work
                                           Stand Upgrade Start
       那么它会播放哪个动作?
       答案是第三个,最大匹配但是不计算顺序Stand WorkStand Start Upgrade之间选择的话,结果还是Stand Start Upgrade
   
      
简单来说,匹配规则是:
      
1.抽掉tag
       2.匹配第一个关键字,如果找不到以第一个关键字开头的动画名,匹配失败
       3.将剩下的关键字进行最大匹配,不计顺序
       所以,一个模型里面不可以同时出现Stand Work StartStand Start Work,因为本质上它们就是一回事。
若需要同时存在,那么把它们命名为Stand Work StartStand Start Work 01这样就可以了,这样就是随机抽个,所有不带数字的动画名,其实都相当于省略了
00
   
       例如:
                                          
Morph
                                          Morph
01
                                          Morph
02
                                          Morph
03
       如果有以上这四个动画,那么我只想播放第一个,答案是播放Morph 00,如果播放Morph,就是随机抽了。

       虽然Stand Work StartStand Start Work是一样的,但
                                          
Stand Work Start
                                          Stand Work
                                          Stand Work End
       这三个动作通常是成对出现的,Stand Work是一个状态,而且有开始和结束动作,要让他们依次播放我可以说出十几种方案来,甚至刚才说的那个AnimGroupApply也可以通过加参数获得这样的效果,了解些实用的actor消息对模型制作也很有帮助,可以知道自己想要实现的东西这样弄是否能被实现等等。

       对于一个动作名,只要能匹配第一个关键字,接下去全都能作,不过有一种情况才是真正束手无策的,就是动画名的关键字不对,结果根本认不出来,那就无从播放了,只要组成名字的还是关键字,就有办法任意播放它们。

       另外,数字其实可以拿来当group tag的,比如你有stand 00、stand 01、attack 00、attack 01那么加上01tag以后呢,它播放stand的时候就会去放01了,不过实际使用大概不常用,因为,如果我要播放stand 01我直接播放它就好了,而连着播放attack 01,比较难匹配好。此外,数字只能出现一次。最后不要忘记,第一关键字的优先级大于组tag,用户看到01,02,肯定不会想到它们是一对一对的。所以如果加了A以后播放stand的时候,找不到Stand A,那就会播放Stand,这一点刚才说过了,不过我觉得有必要重申一下。

       组Tag可以是复数个关键字,如AnimGroupApply {B,Work},中间用逗号,并用大括号括起来。AnimGroupApply {A,B}这时候就要求动作名里同时有AB,这时各组名字都带的动作就同时算在{A,B}组,正确来说AnimGroupApply {A,B},和发送两条消息等价
                                          
AnimGroupApply A
                                          AnimGroupApply B
       Apply了A再Apply B,和Apply {A,B}是一样的,如果有Stand A B那么就会放Stand A B,如果只有A或者B,那么两个平权,但是Stand A比单独的Stand优先,这时候如果再发一句AnimGroupRemove B,那么就相当于只发了AnimGroupApply A。Actor里面标准的播放动画消息其实也是像这样带括号的。

       AnimGroupApply 是不看顺序的,tag无视顺序,而播放动画的时候第一个关键字很重要。
      
       说最后一个我觉得值得一提的地方吧,走和跑的动画,Run这个关键字是存在的,所以你可以做一个Run动画和一个Walk动画,这样用户可以根据移动速度来播放合适的动画,但是Run这个动画名,和Walk Fast这个动画名哪个好?答案是后者。毫无疑问的。单位Actor存在一个叫Baseline的东西,简单地说就是为了给用户简化操作而设的,用不着你写些复杂的actor消息,通常来说移动的baseline我们会设成Walk,站立的baseline我们会设成Stand,但是baseline是唯一的,不能同时是WalkRun,所以如果你想要移动的时候播放Run,那可就麻烦了,自己从头写事件消息吧,而且要考虑各种打断状况。actor可以判断单位移动速度,所以你判断速度然后添加和删除Fast就好了。

最后,请头目一定一定注意身体!按时睡眠,千万别再熬夜了!别在电脑前持续时间太久,多休息。



发表于 2013-7-9 19:38:12 | 显示全部楼层
没人沙发么?
回复

使用道具 举报

发表于 2014-2-9 17:55:58 | 显示全部楼层
这个就是我的需要的东东,受教了........谢谢!
回复

使用道具 举报

发表于 2014-10-22 12:12:31 | 显示全部楼层
good
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 23:08 , Processed in 0.216969 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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