身体动画配置参考
Convai Body Animation 配置资源中每个设置组和字段的参考,包括每一项的默认值和取值范围。
ConvaiBodyAnimationConfig (Convai/Embodiment/身体动画配置)是 Convai 身体动画的运行时调优资源:过渡时序、层级行为、行走同步、功能开关和诊断。内容位于一个单独的 ConvaiBodyAnimationSet中;此资源只塑造行为,因此一个配置可在多个角色之间共享。其 90 个序列化字段分组为 11 个命名部分,下面每 ## 个部分对应一节,与配置资源自身的 Inspector 以及 Body Animation Editor 窗口的 Feel 模式一致。
人格
这个角色的举止方式。一个动画库,许多不同的人。
手势生动度
float
1
0–2
按比例放大说话手势的表现力:说话叠加层权重上限、循环时切换变体的概率,以及节拍手势的频率(反向通过不应期窗口)。 1 复现默认行为。
沉稳度
float
1
0–2
延长待机变体间隔,并略微拉长说话淡入。数值越高,角色看起来越沉着、越有分寸。
说话
角色说话时如何做手势。
TalkFadeInSeconds
float
0.5
>= 0.01
角色开始说话时,说话层的淡入时间。
TalkFadeOutSeconds
float
0.9
>= 0.01
角色停止说话时,说话层的淡出时间。
TalkReleaseDelaySeconds
float
0.16
>= 0
语音停止后、说话淡出前的短暂保持,让当前手势先稳定下来,再混合到待机。
TalkReleasePlaybackSpeed
float
0.2
0–1
语音释放窗口期间的播放速度。放慢剪辑可防止原本设计的手臂动作在语音结束后继续上抬。
UseSpeechEnergy
bool
true
—
根据实时语音能量缩放说话层权重,因此轻声说话时手势会更少。
TalkWeightAtLowEnergy
float
0.2
0–1
在语音能量为零时,说话层的权重,当 UseSpeechEnergy 开启时出现。
TalkOverlayWeight
float
0.45
0–1
说话叠加层可达到的最大权重。数值越低,语音手势下保留的待机姿势越多。
SwitchTalkVariantOnLoop
bool
true
—
当前说话变体循环时切换到另一种说话变体,让长段讲话更有变化。
TalkVariantCrossfadeSeconds
float
0.5
>= 0.01
长段讲话期间在不同说话变体之间交叉淡入淡出。
TalkOutroMaxSeconds
float
0.7
>= 0.05
语音结束时,作者设置的 Outro Clip 可能引入的额外延迟上限,以免很长的收尾剪辑延迟回到待机。
行走时说话
说话手势是按站立状态制作的。这里决定角色在同时做手势和行走时会发生什么。
MovingTalk
MovingTalkMode
自动
自动, 软化覆盖, 抑制
自动 对带有 Additive Clip 的条目,在步态上播放叠加式手势增量;对没有 Additive Clip 的条目,则软化覆盖; 软化覆盖 始终使用降低权重的覆盖; 抑制 在移动时完全淡出说话。
MovingTalkWeight
float
0.7
0–1
在使用 Additive Clip、且角色移动时,走路与说话叠加层(手臂和手)的权重。
MovingTalkOverrideWeight
float
0.45
0–1
在没有 Additive Clip 时、移动中覆盖说话权重的上限。
MovingTalkBlendSeconds
float
0.35
>= 0.05
当语音过程中开始或停止移动时,静止与移动说话叠加层之间的交叉淡入淡出时间。
聆听与思考
当玩家在说话,以及回复前的停顿期间保持的姿势。动画集中需要 Listen/Think 剪辑。
ListenFadeInSeconds
float
0.8
>= 0.01
进入 Listen 姿势时,说话层的淡入时间。
ThinkingEnterDelaySeconds
float
0.4
>= 0
秒 思考 必须持续多久 Think 姿势才会生效。少于一秒的回复不会让思考姿势来回抖动。
反应
被打断、强调语速节奏,以及对它所说内容做手势。手势功能需要动画集中带标签的剪辑。
InterruptedFreezeSeconds
float
0.25
>= 0
当 DialogueState 变为 Interrupted 在说话播放时,当前姿势被冻结(不是淡出)的时长,然后才开始更快的被打断释放。
InterruptedReleaseScale
float
0.6
0.05–1
……的乘数 TalkFadeOutSeconds 用于在打断冻结之后的释放。
EnableBeatGestures
bool
false
—
在检测到语音能量上升时,触发短促的叠加式节拍手势,叠加在说话层之上。默认关闭——它只会播放已制作且带有标签的剪辑 节拍/强调 ,没有程序化替代方案。
BeatRefractorySeconds
float
1.2
>= 0.05
两个节拍手势之间的最小秒数。
BeatWeightScale
float
1
0–1.5
节拍手势根据起始强度推导出的权重乘数。
BeatLayerWeight
float
1
0–1
语音重音叠加在说话手势之上的强度。
EnableReferentialGestures
bool
true
—
对角色所说内容做手势——第二人称、第一人称、命名的场景对象,或序数/数字词。带有该提示标签的已制作剪辑会直接播放;没有对应剪辑的动画集会把提示交给同伴表演者。
ReferentialGestureRefractorySeconds
float
6
1–30
任意两个指代性手势之间的最小秒数。
ReferentialGestureClassCooldownSeconds
float
10
1–60
同一类指代性手势再次触发前的最小秒数。
ReferentialGestureWeight
float
1
0–1.5
在靠近表达力乘数之前,指代性手势的权重乘数。
Presence
在没有其他事情发生时,角色在玩家周围的行为方式。
ProximityExpressiveness
bool
true
—
根据对话距离缩放说话手势的表现力:更近时更含蓄,更远时更夸张。
ProximityNearDistance
float
1.5 (米)
>= 0.1
小于或等于该距离时 ProximityNearScale 完全生效。
ProximityNearScale
float
0.85
0.8–1.15
小于或等于时的表达力乘数 ProximityNearDistance.
ProximityFarDistance
float
6 (米)
>= ProximityNearDistance + 0.1
大于或等于该距离时 ProximityFarScale 完全生效。
ProximityFarScale
float
1.15
0.8–1.15
大于或等于时的表达力乘数 ProximityFarDistance.
ProximitySmoothingSeconds
float
0.5
>= 0.05
近距离乘数平滑过渡所需的秒数,因此朝角色走近时不会明显让手势大小忽大忽小。
EnableAmbientActivities
bool
false
—
执行一个 Ambient-标记的动作,在随机节奏下,当没有人一段时间内与角色互动时触发。默认关闭——它会播放完整的已制作表演,没有程序化替代。
AmbientStartDelaySeconds
float
12
3–120
秒 空闲 必须持续多久,首个环境活动才可能触发。
AmbientIntervalSeconds
float
20
5–300
一旦进入待命状态,环境活动之间的平均秒数(±40% 抖动)。
AmbientSuppressDistance
float
4 (米)
1–20
当对话对象离得这么近或更近时,不会开始新的环境活动。
EnableSocialSpacing
bool
false
—
当对话对象持续停留在角色个人空间泡泡内时,进行一次短暂的 NavMesh 重定位,而不是像雕像一样站着不动。
ComfortRadius
float
0.7 (米)
0.3–2
个人空间半径。持续低于此距离的对话会触发重定位。
ComfortHoldSeconds
float
0.6
0.1–3
对话对象必须连续处于内部的秒数 ComfortRadius ,之后才会触发重定位。
MaxRepositionsPerMinute
int
3
1–10
社交间距重定位在滚动一分钟内的硬上限。
EnablePointGlance
bool
true
—
当角色指向某物时,在视线回到玩家之前,也会短暂看一眼该物体。需要角色上有一个 IGazeGlanceHandler (Convai Gaze 模块在存在时会自动注册一个)。
PointGlanceSeconds
float
0.9
0.2–3
指点注视在视线回到玩家之前保持的时长。
PointingFadeSeconds
float
0.3
>= 0.01
指向层淡入/淡出时间。
PointingReaimCrossfadeSeconds
float
0.25
>= 0.05
当实时指向手势重新瞄准到新方向,或在释放中途重新指定目标时的交叉淡入淡出。
PointingLayerWeight
float
1
0–1
一个指向手势对其下方手臂姿势的完全替换程度。
行走与奔跑
行进速度、角色何时原地转身,以及允许播放哪些到达表演。
WalkSpeed
float
1.2 (米/秒)
>= 0.1
用于行走时的代理速度指令;在 Clip Motion Analyzer 填充元数据之前,它也是回退使用的作者设定行走速度。
JogSpeed
float
2.6 (米/秒)
>= 0.1, >= WalkSpeed
用于慢跑时的代理速度指令。
SpeedDampingSeconds
float
0.12
>= 0.01
驱动移动混合的代理速度读数的平滑时间。
TurnInPlaceMinAngle
float
60 (度)
>= 1
触发原地转身而不是直接离开的偏航误差。
Turn180MinAngle
float
135 (度)
>= 90, >= TurnInPlaceMinAngle + 5
高于该偏航误差时,使用 180° 转身/起步变体。
RateWarpMin
float
0.85
0.5–1
播放速率变形的下限夹制(代理速度 ÷ 作者制作的剪辑速度)。
RateWarpMax
float
1.2
1–1.5, >= RateWarpMin
播放速率变形的上限夹制。
MotionHandoffNormalizedTime
float
0.85
0.5–0.98
标准化剪辑时间,在该时刻起步/转身/变速的一次性动作交叉淡入到其后续状态。
LowSpeedStopFraction
float
0.6
0.1–1
低于该行走速度比例时,选择低速停止剪辑。
PlantedStopMinTravel
float
1.2 (米)
>= 0
一条腿必须在巡航速度下覆盖的距离,达到后才能播放脚踩实地停止剪辑;更短的重定位会由代理刹车和普通待机混合来收束。
EnableTurnInPlace
bool
true
—
当角色在出发前必须面向新方向时,播放一段制作好的转身剪辑。需要集合中有转身剪辑。
EnableDirectionalStarts
bool
true
—
使用为行进方向制作的剪辑开始行走。需要集合中有起步剪辑。
EnablePlantedStops
bool
true
—
用一个带脚踩实地的已制作停止动作完成移动。需要集合中有停止剪辑。
PlantedStopsWhileWalking
bool
false
—
在以行走速度到达时,也播放脚踩实地停止剪辑。默认关闭——在慢跑动量下看起来合适,但在两步走时会显得做作。
EnableSpeedChangeClips
bool
true
—
在步行与慢跑之间切换时,播放过渡剪辑。需要集合中有步行↔慢跑剪辑。
EnableSpeedWarping
bool
true
—
微调剪辑播放速率以匹配实际移动速度,避免脚滑。
EnableFootIK
bool
true
—
让 Unity 的脚部 IK 将双脚稳定到地面表面上。
EnableEmotionalGait
bool
false
—
根据角色当前情绪(由唤醒度推导)缩放指令步行/慢跑速度。默认关闭——这是一种风格化选择。
EmotionGaitRange
float
0.15
0–0.3
情绪导致的最大速度百分比变化,双向均适用。
过渡与待机
混合持续多久,以及角色多久切换一次待机姿势。
IdleCrossfadeSeconds
float
0.6
>= 0.01
不同待机变体之间的交叉淡入淡出。
IdleVariantIntervalMin
float
8
>= 1
一个待机变体至少播放多久,调度器才可以切换它。
IdleVariantIntervalMax
float
16
>= 1, >= IdleVariantIntervalMin
一个待机变体在调度器切换前可播放的最长秒数。
ActionFadeInSeconds
float
0.25
>= 0.01
默认动作/手势淡入;各条目可覆盖。
ActionFadeOutSeconds
float
0.35
>= 0.01
默认动作/手势淡出;各条目可覆盖。
ActionChainCrossfadeSeconds
float
0.2
>= 0.05
动作链内部的剪辑交叉淡入淡出(intro→main→outro)以及同遮罩动作替换。
ActionLayerWeight
float
1
0–1
一个正在播放的动作对其下方内容的完全替换程度。
LocomotionCrossfadeSeconds
float
0.25
>= 0.01
行走状态之间的交叉淡入淡出(待机↔移动、起步、停止、转身)。
BlendCurve
AnimationCurve
0→1 缓入缓出
必须从 0→1
应用于每个层级/状态权重淡出的缓动曲线。缺失或少于两个关键点时,回退到默认缓动曲线。
高级协同语音
程序化的语音节奏重音。默认关闭;下面的数值仅在开启时生效。
EnableAdvancedCoSpeech
bool
false
—
仅根据语音能量包络推导出推测性的重音,而不依赖任何语义证据,并将这些也发布给同伴表演者。角色真正意图表达的提示始终会被发布,不受此设置影响。
CoSpeechMinimumAccentEnergy
float
0.42
0.1–1
语音要多大声才算是重音。
CoSpeechEmphasisDerivative
float
1.2
0.1–5
音量上升得多陡,才会被视为强调。
CoSpeechAccentProbability
float
0.48
0–1
满足条件的时刻实际变成重音的概率。
CoSpeechAccentRefractorySeconds
float
0.85
0.3–3
两个重音之间的最小秒数。
CoSpeechPhraseEnergyMargin
float
0.08
0.01–0.3
音量必须低于运行平均值多少,才算短语断点。
CoSpeechPreparationSeconds
float
0.22
0.05–0.6
重音落下前的蓄势时间。
CoSpeechStrokeSeconds
float
0.16
0.05–0.5
重音本身的持续时间,也就是动作的快速部分。
CoSpeechReferentialHoldSeconds
float
0.28
0–1
重音落下后,姿势在完全伸展位置保持多久,然后再收回。
CoSpeechRetractionSeconds
float
0.38
0.1–1
手臂在保持后回收稳定所需的时间。
集成
此模块向其他 Convai 系统发布的信号。
PublishExertion
bool
true
—
发布一个标准化的行进努力信号(IExertionSource)到角色上下文中,以便同伴模块(身体语言的呼吸)可以消费。若没有注册消费者,则无害。
ExertionRiseSeconds
float
8
0.5–20
努力值从 0 上升到 1 所需的持续满负荷奔跑时间(秒)。
ExertionRecoverySeconds
float
6
0.5–20
当角色减速或停止后,努力值从 1 衰减回 0 所需的秒数。
诊断
这个角色运行时向控制台报告多少信息。
跟踪详细程度
AnimTraceVerbosity
关闭
此角色身体动画追踪的控制台/日志详细程度。警告和错误始终会记录,不受影响。
FirehoseIntervalSeconds
float
0.25
>= 0.05 — 两次 火力全开级别逐 tick 转储之间的秒数。
AnimTraceVerbosity 值,每个都包含其下方所有内容:
关闭
0
无跟踪输出。警告和错误仍会记录。出厂默认设置——一个会行走和说话的角色会持续输出一串过渡,而控制台里满是常规播放实况时,真正的警告反而容易被忽略。
State
1
状态机过渡、层所有权变更、动作生命周期、剪辑选择以及启动功能摘要。用于诊断角色做了什么时应提高的级别。
详细信息
2
增加选择器决策(角度、距离、脚步相位)、带权重的变体抽取、速度变形夹制,以及执行器开始/结束标记。
火力全开
3
增加对层权重和混合位置的逐 tick 节流转储。极其啰嗦;仅适用于短时间调试。
相关参考
身体动画脚本参考配置移动最后更新于
这有帮助吗?