骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

搜索
购买CDKEY 小黑盒加速器
查看: 4590|回复: 9

[讨论] 关于animation.py

[复制链接]

5

主题

25

回帖

14

积分

随仆

Rank: 1

UID
3131813
第纳尔
98
精华
0
互助
1
荣誉
0
贡献
0
魅力
0
注册时间
2020-1-29
鲜花(1) 鸡蛋(0)
发表于 2020-2-25 13:25:25 | 显示全部楼层 |阅读模式
对于游戏的animation.py相关介绍真的比较少,对于我们这些新手研究起来也挺麻烦的。
最近遇到了一个问题,想让一个agent循环做一个动作。然后依次尝试了以下方法:
1.复制原版的"stand_lady",对其修改了anim id和动作资源id。之后调用agent_set_stand_animation.
2.为新建的anim增加循环flag(也可能我加的不对,如果懂这方面的,能否请教一下),之后调用agent_set_animation.

以上都没啥作用,前者一动不动,后者动了一下但是不会循环调用,不太清楚问题出在哪里。


5

主题

25

回帖

14

积分

随仆

Rank: 1

UID
3131813
第纳尔
98
精华
0
互助
1
荣誉
0
贡献
0
魅力
0
注册时间
2020-1-29
鲜花(1) 鸡蛋(0)
 楼主| 发表于 2020-2-25 18:48:03 | 显示全部楼层
自己帮自己顶一个吧,可能骑砍2要出来了,骑砍1没啥人关注了

22

主题

789

回帖

383

积分

见习骑士

民间工匠

Rank: 3

UID
1115705
第纳尔
4018
精华
0
互助
24
荣誉
2
贡献
0
魅力
30
注册时间
2012-12-13
鲜花(233) 鸡蛋(10)
发表于 2020-4-8 00:19:04 | 显示全部楼层
要先确认动作的动画没有问题,是不是帧数充足,然后再看是不是动作设置的播放速度有问题
举个例子
["horse_turn_left_head", 0, amf_client_prediction,
   [1.0, "anim_horse", 450, 483, arf_blend_in_4|arf_cyclic],
],
第二个方括号的第一个参数,就是相对应播放时间,第二个就是动作引用的动画,然后是帧数,如果这里设置错了,就不能正常播放
如果要循环播放一个动作,加上amf_keep这个flag就行了,这样这个动作就是持续循环的,除非被打断(有了其他动作)才会停止

57

主题

953

回帖

543

积分

子爵[版主]

Rank: 7Rank: 7Rank: 7

UID
81513
第纳尔
5138
精华
1
互助
18
荣誉
5
贡献
100
魅力
123
注册时间
2008-6-26
QQ
鲜花(103) 鸡蛋(0)
发表于 2020-4-8 13:12:20 | 显示全部楼层
a1550887802 发表于 2020-4-8 00:19
要先确认动作的动画没有问题,是不是帧数充足,然后再看是不是动作设置的播放速度有问题
举个例子
["hor ...

我一直很好奇期中的flag,header中有好多flag,请问你知道哪些啊。目前为止只能参照原版的动作照葫芦画瓢~

52

主题

443

回帖

269

积分

贵族[MOD作者]

Rank: 7Rank: 7Rank: 7

UID
2743526
第纳尔
2436
精华
0
互助
18
荣誉
3
贡献
10
魅力
252
注册时间
2016-5-3

霸主正版勋章

鲜花(198) 鸡蛋(0)
发表于 2020-4-10 09:49:49 | 显示全部楼层
a1550887802 发表于 2020-4-8 00:19
要先确认动作的动画没有问题,是不是帧数充足,然后再看是不是动作设置的播放速度有问题
举个例子
["hor ...

同楼上,animation里面很多参数不懂

22

主题

789

回帖

383

积分

见习骑士

民间工匠

Rank: 3

UID
1115705
第纳尔
4018
精华
0
互助
24
荣誉
2
贡献
0
魅力
30
注册时间
2012-12-13
鲜花(233) 鸡蛋(10)
发表于 2020-4-23 21:24:48 | 显示全部楼层
http://bbs.mountblade.com.cn/thread-477135-1-1.html
可以先看看这个,比较基础的内容就有了,不过这个帖子关于操作的部分不是很准确
我对动作了解不深,主要是没有认真研究过,而且实际上用的到的很少,最后一个问题就是这个东西需要美工支持
先讲几个操作
###设置agent攻击行为,#值:-2 =清除任何攻击行动,0 =刺,1 = 挥砍,2 = 左砍  第二个值  0 = 准备和释放 1 = 准备和控制
agent_set_attack_action                = 1745   # (agent_set_attack_action, <agent_id>, <value>, <value>), #value: -2 = clear any attack action, 0 = thrust, 1 = slashright, 2 = slashleft, 3 = overswing - second value 0 = ready and release, 1 = ready and hold
###设置agent防守行为 #值:-2 =清除任何攻击行动,0=防守下 1=防守右 2防守左 3防守上
agent_set_defend_action                = 1746   # (agent_set_defend_action, <agent_id>, <value>, <duration-in-1/1000-seconds>), #value_1: -2 = clear any defend action, 0 = defend_down, 1 = defend_right, 2 = defend_left, 3 = defend_up

###设置agent动作(第二个值可以不填写,默认0,填写后对执行的动作有影响,会区分上半身下半身)
agent_set_animation                    = 1740   # (agent_set_animation, <agent_id>, <anim_id>, [channel_no]), #channel_no default is 0. Top body only animations should have channel_no value as 1.

###获取agent攻击行动 0自由 1准备攻击 2释放攻击 3完成打击后进攻 4攻击闪避 5装弹 6释放 7取消攻击
agent_get_attack_action                = 1763   # (agent_get_attack_action, <destination>, <agent_id>), #returned values: free = 0, readying_attack = 1, releasing_attack = 2, completing_attack_after_hit = 3, attack_parried = 4, reloading = 5, after_release = 6, cancelling_attack = 7
###获取agent防守行动,0自由 1闪避 2盾挡?
agent_get_defend_action                = 1764   # (agent_get_defend_action, <destination>, <agent_id>), #returned values: free = 0, parrying = 1, blocking = 2

###设置agent动力学,0关闭 1开启(开启后会让agent呆在原地执行动画,但是仍然可以根于视角转动身体)
agent_set_no_dynamics                  = 1762   # (agent_set_no_dynamics, <agent_id>, <value>), #0 = turn dynamics off, 1 = turn dynamics on (required for cut-scenes)


###获取agent动作列表 -1无效的 0下 1右 2左 3上
agent_get_action_dir                   = 1767   # (agent_get_action_dir, <destination>, <agent_id>), #invalid = -1, down = 0, right = 1, left = 2, up = 3
###获取agent动作动画 0身体下部 1身体上部
agent_get_animation                    = 1768   # (agent_get_animation, <destination>, <agent_id>, <body_part), #0 = lower body part, 1 = upper body part
#这两个我没用过,只是抄了注释

22

主题

789

回帖

383

积分

见习骑士

民间工匠

Rank: 3

UID
1115705
第纳尔
4018
精华
0
互助
24
荣誉
2
贡献
0
魅力
30
注册时间
2012-12-13
鲜花(233) 鸡蛋(10)
发表于 2020-4-23 21:45:46 | 显示全部楼层
然后就是几个常识,和我常用的标签(flag)

很多动作是允许多个动画项目随机运行的,比如说这么写
["stand_player_first_person", 0, amf_client_prediction,
   [3.5, "anim_human", 90, 100, arf_use_stand_progress|arf_cyclic, 0, (0, 0, 0), 0.25],
   [3.5, "anim_human", 110, 120, arf_use_stand_progress|arf_cyclic, 0, (0, 0, 0), 0.25],
],
就会随机播放以上两种动画,但是动作本身的具体含义和ID不变
当年的剑戟mod,就是用这个方式实现很花哨的攻击动作和防御动作的,很可惜就是不能指定动作

飞行和闪躲动画其实是可以实现的,只是好像这方面很多人知之甚少
["sw_force_jump2_end", acf_enforce_lowerbody|acf_displace_position, amf_priority_jump|amf_keep,
[4.000000, "jetpack_end", 0, 10, arf_blend_in_0|arf_blend_in_1|arf_blend_in_7, 0, (0.000000, 0.500000, 0.100000), 0.000000],
],
这个动画可以让agent飞行,原因就是加上了acf_displace_position, amf_priority_jump这两个标签,会让agent在执行动作的同时根据后面的红色字体的参数改变xyz三个轴的位置,速度根据值的大小决定。这里也加上了amf_keep,所以会不减速的持续飞行,具体效果可以根据需求调整

arf_stick_item_to_left_hand 将武器移动到左手(这个一般用于火枪装弹动作)
acf_enforce_lowerbody  下半身动作,这个会忽视一些操作的效果(具体的需要实验一些)
arf_cyclic  混合动作(一般是为了减少动作冲突)
amf_use_weapon_speed       按照武器速度
amf_use_defend_speed      按照格挡速度
amf_priority_mount  优先骑马(测试的结果就是很灵活,可以根据agent视角来变化上本身位置,很久之前试过,希望没记错)
amf_play 播放一次(动画播放一次就认为结束动作)
amf_keep循环播放(我上面说过了)
acf_align_with_ground 平行于地面(这个貌似会让动作不会脱离地面的运行,也就是根据地形来控制动画的骨骼位置,具体的没有试过效果)
acf_displace_position 改变位置(会根据动作改变位置)
差不多就是这样,其实还有关于修正动作细微之处的东西,比如说修正马上双手大刀
http://bbs.mountblade.com.cn/thread-206309-1-1.htmll动作的内容 而且还有很多没试过的flag,只是很多人不关心罢了。(毕竟现在最火的是骑砍2,骑砍1,还是会洗洗睡的)

评分

参与人数 1荣誉 +1 第纳尔 +20 互助 +1 收起 理由
muyiboy + 1 + 20 + 1 原创内容,值得鼓励!

查看全部评分

鲜花鸡蛋

stevenxxy007  在2020-4-26 15:24  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下
黑脸小白  在2020-4-25 15:27  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下

52

主题

443

回帖

269

积分

贵族[MOD作者]

Rank: 7Rank: 7Rank: 7

UID
2743526
第纳尔
2436
精华
0
互助
18
荣誉
3
贡献
10
魅力
252
注册时间
2016-5-3

霸主正版勋章

鲜花(198) 鸡蛋(0)
发表于 2020-4-25 15:31:29 | 显示全部楼层
a1550887802 发表于 2020-4-23 21:45
然后就是几个常识,和我常用的标签(flag)

很多动作是允许多个动画项目随机运行的,比如说这么写

感谢大佬讲解,动作这块的确在砍一是几乎被遗忘的,至少在我玩过的为数不多的几个mod中是的,他们更注重功能,可玩性,因此显然在代码和模型方面做投入相对而言更有收益,骨骼动画做起来复杂不说,一般也没多少人会特别注意,更何况要求如果不高,战团里自带的动作几乎够用了

57

主题

953

回帖

543

积分

子爵[版主]

Rank: 7Rank: 7Rank: 7

UID
81513
第纳尔
5138
精华
1
互助
18
荣誉
5
贡献
100
魅力
123
注册时间
2008-6-26
QQ
鲜花(103) 鸡蛋(0)
发表于 2020-4-26 15:28:28 | 显示全部楼层
a1550887802 发表于 2020-4-23 21:45
然后就是几个常识,和我常用的标签(flag)

很多动作是允许多个动画项目随机运行的,比如说这么写

非常棒的帖子,哎呀呀,你早点发个这种帖子,骑砍1mod应该还会更加丰富多彩吧。
我也只是在砍2还没正式官方制作文档这段期间把砍1再弄弄。
关于acf_displace_position我有点兴趣,红字的坐标,是执行这个动作后目标agent最终所在位置吗?
比如以前强制让agent做了一个摔倒的动作,人滚地向后1米的距离,之后又回到了原地。如果要实现滚地1米的位置再爬起来,是不是(0,-1,0)这样设置啊

6

主题

40

回帖

14

积分

随仆

Rank: 1

UID
2806072
第纳尔
270
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2017-2-10
鲜花(8) 鸡蛋(0)
发表于 2021-6-30 23:17:55 | 显示全部楼层
a1550887802 发表于 2020-4-23 21:45
然后就是几个常识,和我常用的标签(flag)

很多动作是允许多个动画项目随机运行的,比如说这么写

我想请问一下大佬,为什么我新加入马的一个动作后,一进入战场,老是显示骨骼错误并且强制退出游戏??
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

Archiver|手机版|小黑屋|骑马与砍杀中文站

GMT+8, 2024-5-11 11:16 , Processed in 0.122110 second(s), 30 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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