From 867738bf7a192773894def5fd997f6803904176d Mon Sep 17 00:00:00 2001 From: OLDREDSTONE Date: Sat, 6 Jun 2026 11:52:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=95=9C=E5=8E=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/3rdparty_coderd.md | 2 +- pages/appendix_vfxs.md | 8 +- pages/camerafx.md | 8 +- pages/hallofmirror.md | 162 +++++++++++++++++++++++---------------- resources/Appendix8.md | 2 +- 5 files changed, 104 insertions(+), 78 deletions(-) diff --git a/pages/3rdparty_coderd.md b/pages/3rdparty_coderd.md index b716cc5..5af1c8d 100644 --- a/pages/3rdparty_coderd.md +++ b/pages/3rdparty_coderd.md @@ -101,7 +101,7 @@ metadata: - 对于 落雨/JPEG失真/马赛克/海底波浪/电影噪点/暴风雪/素描/色像差/模糊/径向模糊/色调偏移:强度,缓速时长,缓速 - - 对于 自定义屏幕块/自定义滚屏:x/y + - 对于 自定义屏幕分隔/屏幕滚动:x/y - 对于 高光:阈值,强度,颜色,缓速时长,缓速 diff --git a/pages/appendix_vfxs.md b/pages/appendix_vfxs.md index fbfb22c..53add29 100644 --- a/pages/appendix_vfxs.md +++ b/pages/appendix_vfxs.md @@ -5,10 +5,10 @@ | 特效名称 | 具体效果 | | :--- | :--- | | **摄像头类** | | -| 屏幕块2x2 | 把屏幕块变成2x2个相同的部分 | -| 屏幕块3x3 | 把屏幕块变成3x3个相同的部分 | -| 屏幕块4x4 | 把屏幕块变成4x4个相同的部分 | -| 屏幕分割 | 把屏幕块变成任意个相同的部分,注意这里是可以填写小数的 | +| 屏幕分隔2x2 | 把屏幕分隔变成2x2个相同的部分 | +| 屏幕分隔3x3 | 把屏幕分隔变成3x3个相同的部分 | +| 屏幕分隔4x4 | 把屏幕分隔变成4x4个相同的部分 | +| 屏幕分割 | 把屏幕分隔变成任意个相同的部分,注意这里是可以填写小数的 | | 水平滚屏 | 画面向左移动,并且从右方重复出现 | | 垂直滚屏 | 画面向上移动,并且从下方重复出现;需要注意:水平垂直滚屏只能存在一个 | | VHS | 画面带有横条和轻微抖动,有老式录像机的感觉 | diff --git a/pages/camerafx.md b/pages/camerafx.md index 610865d..db74331 100644 --- a/pages/camerafx.md +++ b/pages/camerafx.md @@ -31,9 +31,9 @@ ![字幕在轨道浮动的中间出现并消失](../images/camerafx-cameracroprow.gif) ![列车的门外冒出字了](../images/camerafx-cameracroptrain.gif) -## 配合自定义滚屏 +## 配合屏幕滚动 -自定义滚屏这个**预设特效**和普通的移动房间不一样,他的屏幕是上下左右接续的。但是只要是移动的屏幕,自然就可以配合浮动文字。为了方便操控文字的出现,一般也可以考虑剪裁房间的大小,并且配合遮罩。接下来就只需要安排好文字出现和消失的时机,文字就会像弹幕一样播放起来了。 +屏幕滚动这个**预设特效**和普通的移动房间不一样,他的屏幕是上下左右接续的。但是只要是移动的屏幕,自然就可以配合浮动文字。为了方便操控文字的出现,一般也可以考虑剪裁房间的大小,并且配合遮罩。接下来就只需要安排好文字出现和消失的时机,文字就会像弹幕一样播放起来了。 ![飞屋环街记?](../images/camerafx-cameracropwithscreenscrolling.gif) @@ -43,8 +43,8 @@ | 预设特效 | 配合效果 | | :--- | :--- | -| 自定义屏幕块 | 当然是把字也分成多块,没什么特别的 | -| 自定义滚屏 | 见上面那段 | +| 自定义屏幕分隔 | 当然是把字也分成多块,没什么特别的 | +| 屏幕滚动 | 见上面那段 | | 黑屏 | 不出意外地全黑了 | | 噪点、干扰 | 对浮动文字无效 | | 电影噪点、高光、JPEG失真、马赛克、海底波浪 | 正常地产生效果 | diff --git a/pages/hallofmirror.md b/pages/hallofmirror.md index c231491..0772b14 100644 --- a/pages/hallofmirror.md +++ b/pages/hallofmirror.md @@ -1,22 +1,25 @@ # 镜厅 -游戏的画面是一帧一帧地播放的。为了确保游戏的画面一直在更新,在绘制一帧画面之前,游戏会将已经绘制过的画面重置为全黑。 +## 镜厅的本质 +正常情况下,游戏每一帧绘制前都会清空屏幕(填充黑色),然后重新绘制所有物件。这保证了上一帧的画面不会残留。 **但是如果不重置呢?** +镜厅(Hall of Mirror) 就是关闭这个清空操作。上一帧的画面保留在屏幕上,新画面直接叠加在上面。 -## 基础效果 +你可以尝试: +- 添加一个会移动的轨道或精灵(如一个向右匀速移动的豆子盒) +- 在预设特效中添加"镜厅" +- 播放关卡 +你会发现,方块不再是一个清晰的个体,而是一条向右延伸的 "尾巴"。 +这是每一帧的方块叠加在一起形成的拖影。 +> 镜厅在 "主题设置" 和 "预设特效" 中都有,但请使用预设特效版本。主题设置是全局开关且难以与其他特效组合,预设特效可以灵活控制。 -相信你已经有了初步的感觉。镜厅就是这样,原来一帧的画面仍然保留在屏幕上,只是游戏重新绘制的画面直接覆盖在了原画面之上,从而造成一种“拖影”的效果。 -这本是一种“bug”,但如果稍加利用,或许会有出其不意的效果。 +如果不加控制,每一帧都叠加新画面,屏幕很快会被完全填满。我们需要一种机制让旧的画面逐渐淡出。 ## 抑制方法 -### 画面的覆盖 +### 亮度衰减 -既然画面是一层一层叠在上面,如果要“修复这个 bug”,那就得咱们手动去将整个屏幕更新。 -但是如果直接覆盖一个特定的颜色或者背景,那好像和直接设置背景没什么区别,镜厅就没有存在的意义了。 -那半透明呢? -画面会被覆盖,但是覆盖程度取决于透明度。 -我们来做个小实验:假设现在有一个像素的亮度为 100,每一帧向右移动 1 像素,在镜厅的效果下会导致它在每一帧一直留存,但是现在有一个手段,能够在每一帧画完之前整个画面的亮度降为原来的一半,那这个像素的实际亮度是怎样的呢? +假设一个亮度为 100 的像素每帧向右移动 1 像素,且每帧绘制前整个画面亮度衰减为原来的 50%: | 帧 | 亮度 |||| |-|-:|-:|-:|-:| @@ -25,88 +28,111 @@ |3|25|50|100| |4|12.5|25|50|100| -理解了这个之后,你就可以着手做出这样的效果: +衰减率决定拖尾长度。 +节奏医生没有直接的 "衰减率" 参数,但可以通过以下方式模拟: -![](../images/hallofmirror-trail.gif) +#### 半透明黑色背景覆盖 +添加一个黑色背景板 +设置透明度为 20%(即每帧覆盖 20% 不透明黑色,相当于 80% 亮度保留) +在元素移动时,原来留下的影子会逐渐被黑色覆盖,形成拖影的效果。 +![](../images/hallofmirror-trail.gif) +![在医院走廊奔跑的科尔](../images/hallofmirror-runningcole.gif) -### 画面的扭曲 - -同样的,也可以 - ---- - - -镜厅一共能在两个地方找到,一是设置主题中的 “镜厅”,二是预设特效中的“镜厅”。**但最好使用预设特效中的**。 - -如果只是直接使用镜厅加上预设特效,效果一般只会越来越阴间,所以我们一般会使用预设特效里的“晕影”和“闪烁晕影”或者半透明的背景或半透明的后背景板闪光(由于设备性能差别,镜厅的效果显示可能每个人会有所不同,我一般使用20的透明度)来起到抑制的效果,同时这样也能直接做出最简单的拖尾效果。 - - -拖尾效果(可以注意到镜厅留下了痕迹 ,如果想去除就需要再加上其他的效果,比如-1强度的高光)。这里再附上一些特效在遮罩后的组合(默认都已经打开了镜厅)。 - -![x=1,y=1 的自定义滚屏 + 20 透明度的黑色背景](../images/hallofmirror-trailrepeat.gif) -![2x2 屏幕块 + 晕影](../images/hallofmirror-screenblock.gif) -![0% 强度海底波浪 + 20 透明度的黑色背景](../images/hallofmirror-wavetrail.gif) +#### 晕影特效 +添加预设特效"晕影"或"闪烁晕影" +晕影会从边缘向中心逐渐覆盖,产生柔和的拖影抑制 ![蓝色高光 + 晕影](../images/hallofmirror-bluehighlight.gif) -一般来说直接用这些效果是不会太好的,用的时候会使用更多其他的特效进行组合。 +### 位移扭曲 +除了亮度衰减,还可以让历史画面发生位移,产生流动感。 -### 反色(HOMVERT) +--- -镜厅+反色的结果往往是会让眼睛难以承受的高频闪烁,因此直接使用是禁止的,但是加上一点遮罩就可以避免这种结果。 +#### 基础位移效果 +在镜厅基础上添加屏幕滚动:x = 1, y = 1 +配合 20% 透明度黑色背景 +元素朝左上方向流动的同时会一直复制画面本身叠印起来。 +![x=1,y=1 的屏幕滚动 + 20 透明度的黑色背景](../images/hallofmirror-trailrepeat.gif) +![0% 强度海底波浪 + 20 透明度的黑色背景](../images/hallofmirror-wavetrail.gif) -![镜厅 + 反色 + 20 透明度背景的效果](../images/hallofmirror-homvert.gif) +#### 屏幕分隔扭曲 +添加屏幕分隔特效:x = 2, y = 2 +画面被划分为 2×2 的块,同时会叠上原来的画面。 +![2x2 屏幕分隔 + 晕影](../images/hallofmirror-screenblock.gif) -另外,值得一提的是护士语音自带的灯光实际上是一片反色的区域,因此如果使用了镜厅,就要注意是否产生了镜厅反色(实在没办法也可以用音效代替直接使用语音来避免出现灯光)。 +### 区域控制 +镜厅是全屏效果,但有时你只想部分区域有拖影,或者需要保护某些区域不被拖影污染。 -### 背景 +--- -如果直接使用背景加上镜厅使用是不会有效果的,但如果我们把背景的颜色设成半透明在加上镜厅就能在保留背景的情况下加上镜厅的效果。 +#### 反色遮罩 +镜厅 + 反色(HOMVERT)会产生高频闪烁,极其伤眼,**禁止直接使用**。 +通常使用镜厅 + 反色 + 20% 透明度黑色背景的组合。 +黑色背景作为遮罩层,可以降低反色区域的对比度,消除闪烁 +> 护士语音自带的灯光是反色区域,使用镜厅时需注意,或用音效代替语音避免灯光。 -![在医院走廊奔跑的科尔](../images/hallofmirror-runningcole.gif) +![镜厅 + 反色 + 20 透明度背景的效果](../images/hallofmirror-homvert.gif) -如果图片本身有透明部分,则镜厅的效果会只在透明的部分显示。 +#### 背景遮罩 +直接使用背景 + 镜厅无效果(背景完全覆盖,没有透明区域供镜厅显示)。 +设置背景为半透明(如 50% 透明度),镜厅效果只在背景的透明部分显示 +> 如果图片本身有透明通道(如 PNG),镜厅会自动只在透明区域产生拖影。 ![镜厅的效果附在了每个方块后面](../images/hallofmirror-trailblock.gif) -### 顶部镜厅 - -预设特效里的镜厅除了四个房间外,还可以选择在“顶部”生效,这样就能做出只用房间做不出的效果,或者通过缩放和移动房间让整个房间受到镜厅影响。我们可以利用这个干很多事。 +### 房间控制 +预设特效中的镜厅有两个作用域: +- 四个房间:仅影响关卡内的游戏区域 +- 顶部:影响整个屏幕,包括 UI 和边框 +#### 顶部镜厅 +##### 边框绘制 +使用顶部镜厅 + 特定物件移动 +拖影会在屏幕边缘形成 "画框" 效果 ![用顶部镜厅来画边框](../images/hallofmirror-danmaku.gif) + +##### 万花筒 +顶部镜厅 + 旋转 / 缩放房间 +整个画面产生对称的镜像拖影 ![](../images/hallofmirror-kaleidoscope.gif) -直接在使用主题的房间使用镜厅是不会有效果的,但如果设置透明背景再使用顶部镜厅就能起到作用(需要注意的是,有些主题设置的时候会自动设置一些效果,可以在设置主题后0.0001拍再设置其他效果来避免与主题冲突)。 +#### 房间透明化 +直接使用主题 + 镜厅无效果(主题背景不透明)。 +设置主题后,在 0.0001 拍时添加其他特效(避免与主题自动设置冲突) +设置透明背景 + 顶部镜厅 +或者将主题放在单独房间,将该房间设为半透明,轨道物件叠加在上方 ![](../images/hallofmirror-trailinroom.gif) -对于本身没有透明部分的主题,我们可以把主题单独放在一个房间然后把那个房间半透明化,之后把轨道单独叠在那个房间上面来达成效果。 +## 组合 +镜厅不是单独使用的特效,而是基础层。真正丰富的效果来自组合。 -### 透明化 +### 控制维度 -虽然在大部分情况下使用了镜厅就意味着房间的背景不再能透明,但在少数特效影响下的情况是可以的。 +维度 | 特效示例 | 作用 +---- | -------------------- | ----------------- +衰减 | 黑色背景透明度、晕影 | 控制拖尾长度 +位移 | 滚屏、海底波浪 | 让拖影流动 / 扭曲 +颜色 | 高光、反色、VHS | 改变拖影色彩 +遮罩 | 背景透明度、屏幕分隔 | 限制镜厅作用区域 -![镜厅 + 负数强度的落雨](../images/hallofmirror-homandrain.gif) -![镜厅 + 负数强度的高光](../images/hallofmirrorhomandhighlight.gif) +### 经典组合参考 +- 拖尾基础:镜厅 + 20% 黑色背景 + 晕影 +- 流动拖尾:镜厅 + 海底波浪 (0% 强度) + 20% 黑色背景 +- 方块拖影:镜厅 + 屏幕分隔 (2×2) + 晕影 +- 蓝色光晕:镜厅 + 蓝色高光 + 晕影 +- 复古故障:镜厅 + VHS + 电影噪点 +- 雨夜效果:镜厅 + 落雨 (负数强度) + 高光 (负数强度) +### 透明化特例 +某些特效会让背景在镜厅下保持透明: +![镜厅 + 负数强度的落雨](../images/hallofmirror-homandrain.gif) +![镜厅 + 负数强度的高光](../images/hallofmirrorhomandhighlight.gif) +![镜厅 + VHS](../images/hallofmirror-hmandvhs.gif) +![镜厅 + 电影噪点](../images/hallofmirror-homandnoise.gif) -也有一些特效会让背景半透明。 - -![镜厅 + VHS](../images/hallofmirror-hmandvhs.gif) -![镜厅 + 电影噪点](../images/hallofmirror-homandnoise.gif) - -与之相对的,也有部分特效会让镜厅无法透明,加上其他的特效也一样。 - -![镜厅 + 暴风雪(同时有 VHS 效果但并没有透明)](../images/hallofmirror-homandsnowstorm.gif) -![镜厅 + 素描(同时有 VHS 效果但并没有透明)](../images/hallofmirror-homandpaint.gif) - -### 特殊效果 - -镜厅其实不只能用来做特效,也可以用来做一些特殊的效果。比如用来画画或者猜单词,当然这些都是一般用不到且比较难实现的,放在这里只是让你们知道一下。 - -### 组合 - -上面提到的都是镜厅的一些基本的用法。但做谱的时候不可能只用这些效果,这样是做不出花样来的。要做出更多变数,就要尝试更多的组合,甚至把组合再组合,这样就能做出很多不同的效果。在想不到怎么做特效的时候这是个很好用的方法试的时候也要注意效果不能太伤眼,也不是叠的特效越多越好。丰富谱面的内容才是第一目的。 - -与此同时,我们也要知道,镜厅只是做谱时的一种手段,做特效如果只是一味的试各种特效还不去了解其他方面,是没法提高的。希望你们做谱的时候能够合理使用镜厅,让内容更丰富。 +某些特效会强制背景不透明: +![镜厅 + 暴风雪(同时有 VHS 效果但并没有透明)](../images/hallofmirror-homandsnowstorm.gif) +![镜厅 + 素描(同时有 VHS 效果但并没有透明)](../images/hallofmirror-homandpaint.gif) ## 一些陈旧的示例 @@ -147,13 +173,13 @@ ![巨 硬 报 错](../images/hallofmirror-repeattttttttttt.gif) -### 镜厅 + 屏幕块 +### 镜厅 + 屏幕分隔 这个需要配合晕影使用,不然也会直接崩坏。 ![千 人 一 面](../images/hallofmirror-screenblock2.gif) -要注意屏幕块是可以填写小数的,例如填写`x = 1.05, y = 1`,自定义闪烁透明度`15%~0%`。 +要注意屏幕分隔是可以填写小数的,例如填写`x = 1.05, y = 1`,自定义闪烁透明度`15%~0%`。 ![](../images/hallofmirror-rush.png) diff --git a/resources/Appendix8.md b/resources/Appendix8.md index cc2b6ec..829c20e 100644 --- a/resources/Appendix8.md +++ b/resources/Appendix8.md @@ -101,7 +101,7 @@ metadata: - 对于 落雨/JPEG失真/马赛克/海底波浪/电影噪点/暴风雪/素描/色像差/模糊/径向模糊/色调偏移:强度,缓速时长,缓速 - - 对于 自定义屏幕块/自定义滚屏:x/y + - 对于 自定义屏幕分隔/屏幕滚动:x/y - 对于 高光:阈值,强度,颜色,缓速时长,缓速