You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在时间重映射预合成内的预合成中控制嘴型不透明度?

解决时间重映射预合成内嵌套预合成的嘴型不透明度控制问题

我需要控制预合成内不同嘴型图层的不透明度,普通场景下操作有效,但将该预合成嵌套到带时间重映射的预合成里后就失效了。即使使用以下表达式控制嘴型不透明度:

control = comp("Stage").layer("Face").effect("mouths")("Slider") ;
if(control == layerNum)
{value = 100;}
else
{value = 0;}

嘴型看似能由滑块控制,但实际会和时间重映射预合成的帧绑定。需求是实现时间重映射预合成内嵌套预合成的嘴型控制(使用时间重映射预合成是因为里面有随头部转动变化的头部形状)。

注:“mouths”滑块用于将Mouth预合成内特定图层的不透明度设为100%,每个图层的不透明度都基于Stage合成内的滑块值。

核心原因

时间重合成会改变嵌套预合成的时间流,原表达式直接读取滑块值时,默认关联的是嵌套预合成的局部时间,而非主合成的实际时间,导致控制逻辑被时间重映射干扰。

解决方法

修改表达式,强制读取主合成时间点的滑块值,摆脱时间重映射的影响:

// 获取主合成(Stage)当前时间下的滑块值
control = comp("Stage").layer("Face").effect("mouths")("Slider").valueAtTime(comp("Stage").time);
// 匹配当前图层编号,显示对应嘴型
if (control == thisLayer.index) {
    100;
} else {
    0;
}

补充说明

  • 如果嘴型图层不是用图层编号(index)对应滑块值,而是自定义编号,把thisLayer.index替换为自定义属性即可,比如thisLayer.effect("嘴型编号")("Slider")
  • valueAtTime(comp("Stage").time)是关键,它确保滑块值始终跟随主合成的时间,不受嵌套预合成时间重映射的影响
  • 确认Stage合成路径、滑块所在图层及效果名称与你的项目完全一致

内容的提问来源于stack exchange,提问作者Sybren

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 03:55:06