om红线sv制作入门(节拍线特效3:多条小节线的帧动画)

本节内容是节拍线特效的最后一节,下一节会讲一些note特效。节拍线特效还有一类类似singularity休息段,以及the solace of oblivion次难度的3:50:137这种,我觉得我讲也讲不清,你们想学的自己去看谱体会吧。
本节内容承接前两节,前两节没看或者没弄懂的不建议来研究这一节。
1. 传统纯红线
backbeat maniac结尾面条,两条闪烁的线缓缓相聚,最后汇合并落下。下面是第二组红线的截图。

每一毫秒的画面如下:
3:34:981 这一组开始节拍线在判定线处,该线是3:34:981自身的线
3:34:982 无(屏幕外)
3:34:983 节拍线在距离判定线85的位置,该线是3:34:984的线。
3:34:984 节拍线有两条,一条在判定线处,是3:34:984的线,一条在距离判定线79898的位置,该线是3:34:987的线,
3:34:985 同3:34:984
3:34:986 同3:34:984
3:34:987 下一组开始,同3:34:981。
综上,该组红线共6ms,对应的节拍线出现的位置与时长为:
判定线处:4ms
85:1ms
79898:3ms
也就是说,在游戏效果里,下面那一条线只有1/6的时间是存在的,所以在游戏中它闪烁得很厉害,如果不是因为它运动得很慢,闪烁成这样是认不出来的,上面那条线有1/2的时间是存在的,闪烁得不那么剧烈。归根到底,就是上下两条线极高速地交错出现。
也可以直接用第一篇里面的红线帧动画的格式来写,单数帧写一条节拍线,双数帧写另一条节拍线,效果一般会更好一点。
2. 红绿结合
这里给出我自己的谱面作为参考:datoujia – the sundering
https://osu.ppy.sh/beatmapsets/1053305#mania/2201120
讲之前,更新一下序言里面的第八条特性。准确地来说,红线会让该时间点的前1ms内的所有节拍线隐藏(包含1ms)。
看1:21:063,下面是第二帧。

在这个483870.968这个bpm下,每拍0.124ms。在实际操作的时候,很容易发现记事本里面红线BPM对应的值就是每拍的时长,我在记事本直接填0.124,这样的话,在1:21:073(不含)~1:21:074(不含)这段时间内,共有8拍,因为Meter是1/4,所以就会有8条小节线,然后,通过控制绿线倍速(可以精确到小数点后很多位),就能控制这些节拍线的空间距离(不懂的回去看前面)。
这样,每一毫秒的画面如下:
1:21:065~1:21:073:8条小节线加上1条在判定线上的小节线
1:21:074:8条小节线全部掉下去,消失不见,在10x绿线的作用下,后面的小节线在屏幕外很远的位置。
1:21:075:下一帧开始。
这种方法每帧只有1ms是不显示线的,基本消除了闪烁情况。如果我们把BPM改到最高1000000,每拍0.06ms,就可以在1ms里塞最多16条节拍线。
2020/7/24更新:不知道从什么时候开始osu可以正确识别超过1000000bpm的红线了,但改太高会卡乃至crash,具体上限是多少我懒得测。根据evening那边的经验,5000000bpm以内比较稳定。3000000bpm下已经能在1ms内塞50条小节线了,基本能满足正常的需求。1000000bpm有优越的稳定性,editor界面完全崩溃的概率也更小。如果不需要超过16条小节线,1000000bpm仍是一个优先级很高的选择。

进阶:用记事本打开osu文件,翻到103289时间处。那里的帧动画,各条节拍线各自做独立的运动。

原理很简单,每0.08ms一拍,在每个节拍线的位置种一课绿线,来调整该节拍线到下一条节拍线的空间距离。就像你在做绿线sv一样,想象103299.08和103299.16各有一个note,在103299.08种的绿线越大,两个note距离就越远。
可以通过将每行最后一个数字改成8来隐藏判定线处的小节线。
3. 两种方法各自的优劣
纯红线可以直接允许两条线的距离无穷小,允许线到判定线的距离为无穷小。
纯红线双节拍线伴有强烈的闪烁,三条节拍线以上基本已经接近不可读。
红绿允许在不闪烁的条件下同时非常多条独立的节拍线。
红绿两条节拍线线之间的空间距离最小为0.01x绿线。
全部理解以上内容,自己可以做出简单的多节拍线帧动画,可以找我要帧动画excel生成器。生成器很方便但并不完美,你不理解文章就很难用。未来可能会改写为程序。