$sequence
< Zh
Jump to navigation
Jump to search

This page needs to be translated.
This page either contains information that is only partially or incorrectly translated, or there isn't a translation yet.
If this page cannot be translated for some reason, or is left untranslated for an extended period of time after this notice is posted, the page should be requested to be deleted.
Also, please make sure the article tries to comply with the alternate languages guide.
This page either contains information that is only partially or incorrectly translated, or there isn't a translation yet.
If this page cannot be translated for some reason, or is left untranslated for an extended period of time after this notice is posted, the page should be requested to be deleted.
Also, please make sure the article tries to comply with the alternate languages guide.
$sequence
是一个QC命令,可在所有的 起源 游戏中使用。 该命令用于定义骨骼动画。可单独使用,也可结合一个或多个
$animation
来利用Source引擎更高级的骨骼动画功能。

$sequence
。如果不需要实际动作,最简单的方法是复用参考SMD文件。仅使用$includemodel的模型不需要任何$sequence
。- 待完善: 如果$includemodel中没有定义任何$sequence会发生什么?
用法
$sequence
有两种模式:一种直接引用单个骨骼动画(SMD或DMX文件);另一种需要通过中间$animation
定义。


$sequence
只能识别QC文件中上方定义的$animation
。$sequence <名称> <骨骼动画SMD/DMX文件路径> <简单选项> { // 左花括号必须与命令在同一行 // 若内部无内容可省略花括号 <高级选项> <动画事件> <简单选项> }
$sequence <名称> <简单选项> { // 左花括号必须与命令在同一行 <$animation名称列表> <高级选项> <动画事件> <简单选项> }
示例
$modelname "weapons/shell.mdl"
$cdmaterials "models/weapons/"
$body shell "shell-ref"
$sequence idle "shell-idle"
$animation a_strokechin "strokechin" subtract idle 0
$sequence strokechin {
a_strokechin
delta
}
$sequence run_holding_all {
a_runS a_runSE a_runE a_runNE a_runN_SMG a_runNW a_runW a_runSW a_runS
blendwidth 9
blend move_yaw -180 180
addlayer layer_run_holding
ACT_RUN_RIFLE 1
node "running"
}
选项
基础选项
<string|名称>
- 动画名称。将显示在HLMV、Hammer等工具中。
<string|骨骼动画文件路径>
$sequence
的源文件路径。包含此参数表示使用该命令的简单模式。
frame <int|起始帧> <int|结束帧>
frames <int|起始帧> <int|结束帧>
- 指定从源动画中提取的帧范围。适用于裁剪特定动画中未使用的帧。
- 例如:若源动画包含80帧(0-79),但该动画只需播放最后30帧,则使用
frames 50 79
仅加载这些帧。
- 例如:若源动画包含80帧(0-79),但该动画只需播放最后30帧,则使用
- 当起始帧与结束帧相同时可提取单帧动画。
frames
与frame
可互换使用。警告:序列中其他位置使用的帧号(如动画事件)均相对于
起始帧
。修复:可将每个动画分离到独立的$animation中,并在其上方使用
frame/frames
参数指定帧范围。
numframes <int|总帧数>
- 强制设置动画总帧数,通过裁剪或重复最后一帧实现。
- 与
frame/frames
联用时,将保留起始帧。若总帧数小于实际帧数则截断,大于则重复最后一帧。- 例如:
frames 10 12 numframes 12
将提取10-12帧,但第12帧会被重复以满足总帧数要求。
- 例如:

numframes
从1计数。设置numframes
为30将包含0-29帧,若需包含到第30帧需设为31。rotate <float|角度>
- 仅沿Z轴旋转,等同于
angles
的Z轴分量。
scale <float|缩放比例>
- 缩放此序列中的骨骼尺寸。允许负值。
loop
- 标记为循环动画,StudioMDL会对首尾帧进行优化。
- 启用后,动画在播放过程中无法被自身中断。
hidden
- 在用户界面中隐藏该$sequence。适用于仅作为其他动画图层的序列。
noanimation
- 强制序列使用零权重动画。忽略
frame/frames
但保留numframes
。 - 等效于使用移除所有骨骼权重的$weightlist。适用于创建仅含叠加层的复合序列。
fps <float|帧率>
- 覆盖动画帧率。默认30。
注意:此为动画帧率,非屏幕刷新率!
<string|动作提取轴向>
- 解决角色"原地行走"动画需求,通过剥离根骨骼位移实现。
- 可在轴向前添加
walkframe <int|动作提取结束帧>
来限制提取范围。 注意:提取始终从动画起始或上一个
walkframe
开始,到指定帧结束。使用无轴向的walkframe
可创建延迟。提示:可通过多个
walkframe
提升精度。
- 可在轴向前添加
$sequence sword_attack {
"knight_anims/sword_attack"
ACT_SPECIAL_ATTACK1 1
fadein 0.2
fadeout 0.2
fps 30
walkframe 10 LX LY LZR //从起始到第10帧提取动作
walkframe 30 LX LY LZR //从第10到30帧提取动作
LX LY LZR //从第30帧到结尾提取动作
}
- 可用轴向:
- X, Y, Z, XR, YR, ZR(R表示旋转)
警告:这些轴向可能完全忽略
walkframe
。
- LX, LY, LZ, LXR, LYR, LZR:根骨骼沿轴向移动至动画中途后返回原位。
提示:可组合使用多个轴向。
- LM:线性动作提取
- LQ:二次曲线动作提取
- 此命令也可用于$animation。
activity <string|活动名称> <float|权重>
- 将序列关联到游戏活动。
提示:以"ACT_"开头的活动名称可省略
activity
关键字。- 权重决定该序列在活动触发时被选中的概率(权重/总权重)。
- 例如:权重为2的
swing_a
和权重为1的swing_b
,前者有2/3概率被选中。 注意:若活动仅关联一个序列,权重无效。
- 例如:权重为2的
autoplay
- 使该序列始终在顶层播放,无视其他动画。适用于呼吸等混合动画。
警告:勿用于可能正常播放的动画,否则会导致重复播放。
addlayer <string|其他$sequence名称>
- 在当前序列上叠加播放其他序列。两者同步起止,时长差异会影响叠加层的帧率。被叠加序列无需定义在当前序列上方。
- 通常用于添加瞄准矩阵等
delta
层或特定骨骼权重层。
blendlayer <string|其他$sequence名称> <int|起始帧> <int|峰值帧> <int|衰减帧> <int|结束帧> [选项...]
- 类似
addlayer
,但仅在指定帧范围播放,并支持多种选项。 - 强度从
起始帧
0%渐变至峰值帧
100%,从衰减帧
开始淡出,到结束帧
完全消失。 - 选项:
参数值: -2.000 -1.500 -1.000 -00.80 -00.60 -00.40 -00.200 000.00 00.200 00.400 00.600 00.800 1.0000 1.5000 2.0000 层权重: 0.000% 0.000% 0.000% 20.00% 40.00% 60.00% 80.00% 100.0% 80.00% 60.00% 40.00% 20.00% 0.000% 0.000% 0.000%
noblend
- 保持100%强度,忽略序列过渡。
local
- 将层标记为本地上下文序列,在主序列关键帧应用前混合。
警告:除非叠加序列启用
realtime
,其帧率会适配主序列时长。
worldspace
- 作为图层时,以世界空间计算骨骼位置。
注意:使用
weightlist
时根骨骼权重不可为0。 - 待完善: 实际效果?
worldspaceblend
- 待完善: 待文档化
snap
- 过渡到该动画时取消所有混合。适用于突然状态变化(如受击动作)。
注意:快速重复动画(如步枪开火)使用此选项可能导致卡顿,建议改用
fadein 0.05
。
realtime
- 同步动画时钟与地图时间。适用于呼吸等独立速率图层。
警告:所有使用此选项的模型将全局同步!建议仅用于视图模型等唯一实体。
fadein <float|秒数>
- 设置淡入时长。默认0.2秒。
注意:
fadein 0
等效snap
,但HLMV不会识别为snap。
fadeout <float|秒数>
- 设置淡出时长。默认0.2秒。
localhierarchy <string|骨骼名称> <string|新父骨骼名称> [range <int|起始帧> <int|峰值帧> <int|衰减帧> <int|结束帧>]
- 临时修改骨骼层级关系。""表示移除父骨骼。
- 用于优化混合抖动(如武器换手动画)。需配合
snap
使用。
compress <int|跳帧数>
- 仅存储指定间隔的动画帧(从0开始)。值≤1无效。
参数值: -180.0 -135.0 -90.0 -45.0 0.0 45.0 90.0 135.0 180.0 动画帧: 0 1 2 3 4 5 6 7 8
警告:未用
$poseparameter
预声明参数将导致范围错误。
高级选项
除基础选项外:
delta
- 表示引用的$animation已进行
subtract
处理。该序列将在当前动画上层叠加播放。警告:未正确使用
subtract
将导致异常!
predelta
- 配合"presubtract"使用,改变骨骼动画合成基准。
blend <string|名称> <float|最小值> <float|最大值>
blendwidth <int|宽度>
blendref <string|名称>
blendcomp <string|名称>
blendcenter <string|名称>
calcblend <string 名称> <string 附着点> <XR YR ZR>
- 详见混合序列。
ikrule
- 见反向运动学链。
iklock
- 锁定反向运动学链中的指定骨骼。
activitymodifier
<string|修饰符> (存在于自以来) (也存在于
之中)
- 待完善: 待文档化
杂项
- node (名称)
- 标记序列在状态图中的节点位置。循环动画常用此标签。同节点序列间无需过渡动画。
- transition (来源节点) (目标节点)
- 声明该序列为过渡动画(如行走转站立)。
- rtransition (名称1) (名称2)
- 可逆过渡动画。曾用于半衰期的触手怪,不建议常规使用。[原因?]
- exitphase (相位)
- 声明循环动画的过渡起始相位。
警告:实际未实现
- $skiptransition (名称1) (名称2) [(名称3)...]
- 允许指定节点间直接过渡(如行走转奔跑无需经过站立状态)。
- keyvalues { [内容] }
- 为序列添加键值块(用于Faceposer手势设置)。
事件
可在$sequence中定义动画事件:
$sequence tentacle_grab "tentacle_grab" {
fps 15
{ event 1000 1 }
{ event 1004 4 "*scientist/scream02.wav" }
{ event 1003 18 "smash" }
{ event 1004 65 "*scientist/c1a4_sci_tent.wav" }
}