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

3DSMax2023 MAXScript:基于控制器线性ORT添加符合插值的关键帧

在3DS Max 2023中基于线性ORT插值添加关键帧的正确MAXScript方法

首先明确:可以通过MAXScript基于控制器的线性ORT插值添加关键帧。你之前用addNewKey没得到预期结果,问题出在没有针对Path控制器的Percent子控制器操作,且没计算线性延伸后的正确参数值。

问题分析

你的脚本里,Dummy的运动由Path控制器的Percent子控制器驱动,第二关键帧后的线性ORT虚线是这个子控制器的插值延伸。直接给Dummy对象加位置关键帧会打断Path控制器的逻辑,必须针对Percent子控制器来操作——先算出线性插值到动画末尾时的Percent值,再添加对应关键帧。

实现步骤及代码

在你现有设置Path控制器的代码之后,添加以下逻辑:

-- 获取Percent子控制器(这才是驱动运动的核心控制器)
percentCtrl = PosCntrl.percent.controller

-- 获取已有的两个关键帧(Path控制器默认会生成这两个关键帧)
key1 = percentCtrl.keys[1]
key2 = percentCtrl.keys[2]

-- 目标时间:动画末尾
targetTime = animationRange.end

-- 用线性插值公式计算延伸到目标时间的Percent值
deltaTime = key2.time - key1.time
deltaValue = key2.value - key1.value
extendValue = key2.value + ((targetTime - key2.time) / deltaTime) * deltaValue

-- 在Percent控制器上添加新关键帧
newKey = addNewKey percentCtrl targetTime
newKey.value = extendValue
-- 设置关键帧切线为线性,保持ORT插值一致
newKey.inTangentType = #linear
newKey.outTangentType = #linear

-- 可选:如果需要更新动画范围以包含新关键帧
animationRange = interval animationRange.start targetTime

补充说明

  • 这段代码直接针对驱动运动的Percent子控制器操作,不会破坏Path控制器的原有逻辑
  • 线性插值公式严格遵循ORT的线性延伸规则,确保新关键帧完全落在原插值虚线上
  • 关键帧切线设置为线性,保证后续动画依然保持匀速线性运动特性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 03:11:26