找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1297|回复: 11

浅谈动画帧序号问题

[复制链接]
发表于 2025-2-11 07:27:43 | 显示全部楼层 |阅读模式

基础知识 - 标签:

Start 从 0 开始的帧索引,用于指定开始帧

End 结束帧相对于 Start 的偏移量,仅当上句为 0 的情况下等同于从 1 开始的帧索引可以视为该句来决定结束帧

LoopCount 循环次数,当其 >1 时动画将会使用下面两句,负数值代表无限

LoopStart 从 0 开始的帧索引,用于指定每次循环的开始帧

LoopEnd 从1开始的帧索引,用于指定每次循环的结束帧

注意:

本帖的循环部分特指第一个Loop中抵达的 LoopEnd 至最后一个Loop起始的 LoopStart 这 LoopCount-1 次循环


对于以 0 开始的索引规则:
没有循环的情况:(LoopCount=1)
Start -> Start+End -1

有限循环的情况:(LoopCount≥2)
Start -> LoopEnd-1 -- [LoopCount-1 次] --><-> LoopStart -> Start+End -1

进入循环时如果 Start >= LoopEnd-1
播放 Start 指定的帧,然后进入循环部分

退出循环时如果 Start+End -1 <= LoopStart
播放 LoopStart 指定的帧,然后直接结束

如果


对于以 1 开始的索引规则:
没有循环的情况:(LoopCount=1)
Start+1 -> Start+End (← Start+1 + End -1)

有限循环的情况:(LoopCount≥2)
Start+1 -> LoopEnd -- [LoopCount-1 次] --><-> LoopStart+1 -> Start+End (← Start+1 + End -1)

进入循环时如果 Start+1 >= LoopEnd
播放 Start+1 指定的帧,然后进入循环部分

退出循环时如果 Start+End <= LoopStart+1
播放 LoopStart+1 指定的帧,然后直接结束


注:
如果LoopStart+1 >= LoopEnd,那么显示 1 帧 LoopStart + 1的帧,然后进入下一次Loop


内容解释
[LoopCount-1 次]
达到 LoopEnd 后跳转到 LoopStart 的行为共执行了 LoopCount - 1 次

式子中的 -1 与 +1
为适应以 0 或 1 为起始帧的两种规则对标签值进行计算,即 帧序号标签值 + 调整量

式子结尾的 -1
从 2 到 10 有 9 个数字,而不是 10-2=8 个,对应的 10=2+9 -1,这是显而易见的


特殊情况
如果该 图像 是由另一个 动画 通过 Next 所使用的,那么起始的 Start会*2
也就是最左侧的子式对于 0 开始的规则 Start*2:,对于 1 开始的规则一开始的规则: Start*2+1


示例 - 1

1
2
3
4
5
6
7
8
9
10
11
12
[SA]
AnimList=TestAnim

[TestAnim]
Start=7
LoopEnd=20
LoopStart=16
End=9
LoopCount=3



( 0 始)7 8 9 10 11 12 13 14 15 16 17 18 19  |  16 17 18 19  |  16 (Start+End -1 = LoopStart)
( 1 始)8 9 10 11 12 13 14 15 16 17 18 19 20 | 17 18 19 20  |  17 (Start+End < LoopStart+1)

示例 - 2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[SA]
AnimList=PIFFPIFF

[PIFFPIFF]
Next=TestAnim_M

[TestTemplate]
Start=5
LoopEnd=11
LoopStart=10
End=6
LoopCount=2

[TestAnim_M]:[TestTemplate]
Next=TestAnim_N

[TestAnim_N]:[TestTemplate]
Next=TestAnim_M



( 0 始)PIFFPIFF  |  保持在第 10 帧  |  同左  |……
( 1 始)PIFFPIFF  |  保持在第 11 帧  |  同左  |……

做了个计算器
注意:
该计算器默认Shape文件自身总帧数足够,因此你必须输入End值
如果LoopCount>=1那么还需要输入LoopEnd的值





当然这个工具不考虑 Rate 等其他影响播放总长的因素
因为该工具仅考虑动画帧序列的走法,与播放时长和速度无关
经调查左 4 标签负值情况几乎没人用到,于是禁用了 (Loop)End 的负值计算

游客,本帖隐藏的内容需要积分高于 75 才可浏览,您当前积分为 0
上面所提的算法已更新至 MODENC
注意:除了 Rate 等正常的帧时间调控手段外,已观测到 WWShit 中还有一些特殊情况会导致某帧保持 2 帧长度导致最后的帧时长+1
例如使用 SW.Animation 和 Anim 第 Start 帧 [序号] 会停住 1 帧 [时间],也就是整个序列在第 2 帧 [时间] 才开始从第 Start 帧 [序号] 开始连续播放
无 Anim 武器的弹头 AnimList 第 Start+6 帧 [序号] 会停住 1 帧 [时间],也就是在整个序列中间的某帧会停 1 帧 [时间] 才继续播放
不过那些都是帧长度的问题了,与本文所计算的帧序列与索引序号无关
除非你要卡一个动画对象的播放时间长度那么可能需要 上面的帧长度+1 再加上其他影响动画播放速度的计算规则,不然这个问题对你来说不会有任何影响

评分

参与人数 3光辉的凭证 +10 卡逗的白丝 +15 收起 理由
雷德克里莫 + 15 非常好小🐟工具
nuke + 5 压力马斯内
IcePelosi + 5 终于有个系统阐述了,byd做素材测试全靠猜 ...

查看全部评分

 楼主| 发表于 2025-2-12 09:07:52 | 显示全部楼层
布加迪 发表于 2025-2-11 22:43 坏了,就我没看明白
Start Start+End LoopStart LoopEnd 跳转 Start+End Start

如上所示

这里先规定一个初始为 LoopCount 值的 T

如果 T = LoopCount=0 把它写成 1
如果 T = LoopCount=1 执行 绿色箭头 流程,然后直接结束到 Start+End
如果 T = LoopCount>1 那么拥有循环部分,转 
橙色箭头 流程,最终也是到 Start+End 结束,算作变形的 绿色箭头/原 LoopCount=1


也就是将循环部分视为原本 LoopCount=1 那一次简单流程内 “插入” 的模块,不影响动画本来就是要从 Start 播放到 Start+End


在循环部分中,每次走到 LoopEnd -> LoopStart 进行一个比较


T > 1 :

    从 LoopStart 向 LoopEnd 播放,且 T - 1

否则

    从 LoopStart 向 Start+End 播放,也就是退出循环模块然后继续执行 橙色箭头 原本的流程,最后结束播放


其他:

由上面的流程可得 LoopCount-1 恰为 红色箭头 跳转行为的执行次数

至于正文注释的内容,也就是下面这三条:

Start 帧比 LoopEnd 帧还靠后,直接一帧 Start 进循环
LoopStart 帧比 LoopEnd 还靠后,直接一帧 LoopStart 进下一层循环
LoopStart 帧比 Start+End 帧还靠后,直接一帧 LoopStart 结束整个后续播放流程

实际上全然算不上什么执行规则,就是自然而然的 Start/LoopStart 后没有可用帧就直接进下一层
甚至也算不上什么越界情况的特殊处理,正常也是走到结束,然后没有需要走的帧了,直接下一层
也就是这三条不过是把三种同层中这层流程的总长度仅仅只有一帧的执行过程简化了一下描述而已

以上流程仅为便于理解
回复

使用道具 举报

发表于 2025-2-11 08:12:58 | 显示全部楼层
那你棒
回复

使用道具 举报

发表于 2025-2-11 12:01:38 来自手机 | 显示全部楼层
强 大 科 技()

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

发表于 2025-2-11 13:22:46 | 显示全部楼层
原地收藏
回复

使用道具 举报

发表于 2025-2-11 15:33:02 | 显示全部楼层
太强力
回复

使用道具 举报

发表于 2025-2-11 16:07:12 | 显示全部楼层
太强力
回复

使用道具 举报

发表于 2025-2-11 17:08:25 | 显示全部楼层
太好了,是🐟研究
回复

使用道具 举报

发表于 2025-2-11 22:00:54 | 显示全部楼层
好耶
回复

使用道具 举报

发表于 2025-2-11 22:43:10 | 显示全部楼层
坏了,就我没看明白
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|Archiver|手机版|管理员邮箱|红警DIY论坛 |网站地图

GMT+8, 2025-7-20 14:44 , Processed in 0.057820 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表