Skip to content

时间线运算模块

用于实现关键帧时间插值处理

python
from QuModLibs.Modules.Utils.TimeLine import QTimeLine

创建时间线

时间线基本用法

python
from QuModLibs.Modules.Utils.TimeLine import QTimeLine

timeline = QTimeLine({
    0.0: 10,
    0.5: 3,
    0.8: 12,
    1.0: -1
})

s = 0.0
while s < timeline.getMaxFpsTime():
    # 模拟时间更新(仅演示)
    s += 0.01
    value = timeline.computeFrameAtTime(s)
    print(value)    # computeFrameAtTime用于计算出线性插值(也可以自己实现)

FArray 数组

若有需求 也可以自定义类型支持(需重载运算符)

python
from QuModLibs.Modules.Utils.TimeLine import QTimeLine

timeline = QTimeLine({
    0.0: QTimeLine.FArray([0, 1, 0]),
    0.5: QTimeLine.FArray([1, 1, 1]),
    1.0: QTimeLine.FArray([2, -1, 1])
})  # 使用QTimeLine.FArray时应确保所有的FArray长度等宽

s = 0.0
while s < timeline.getMaxFpsTime():
    s += 0.01
    value = timeline.computeFrameAtTime(s)
    x, y, z = value.getTuple()
    print(x, y, z)

getLRTimeNode 左右节点匹配

用于基于时间匹配左右关键帧 其中computeFrameAtTime以此实现

python
from QuModLibs.Modules.Utils.TimeLine import QTimeLine

timeline = QTimeLine({
    0.0: 1,
    0.5: 1.5,
    1.0: -1
})

leftNode, rightNode = timeline.getLRTimeNode(0.6)

# Node参数类型定义
# class Args:
#     def __init__(self, timeValue=0.0, data=None):
#         # type: (float, object | None) -> None
#         self.timeValue = timeValue    # 关键帧
#         self.data = data              # 引用数据

Released under the BSD3 License