介绍
它有什么作用?
当墙壁挡在中间、当你走出房间或进入水中时,声音会发生变化。AcousticSystem 会持续读取当前世界几何结构,因此放置或破坏方块也会影响正在播放的声音。
功能
- 基于墙壁材质和厚度的遮挡
- 声音绕过拐角、穿过开口以及沿相连结构传播
- 来自墙壁、地板和天花板的反射
- 由房间大小、开口和表面材质塑造的混响
- 空气、水和熔岩之间的物理声音过渡
- 对移动的声源、听者和变化的方块持续更新
- 四种质量预设及详细设置
- 基于 JSON 的方块和流体声学属性
工作原理
每个位置性世界声音都会经过同一条传播管线。结果并非从一组房间预设中选取。
world geometry and materials
↓
direct sound and transmission
↓
diffraction and structural paths
↓
early reflections and late-field tracing
↓
distance, atmosphere, and medium losses
↓
real-time software mixer
传播与遮挡
直达路径以有限的第一菲涅尔区波前进行采样,而不是单条中心射线。每个采样点都会与实际碰撞形状求交,并累计在每种材质内部行进的距离。随后在八个频段上分别应用传输损耗,因此多层结构会持续衰减声音,而薄方块或部分方块不会表现得像完整的一米厚墙壁。
衍射
当直达波前被阻挡时,求解器会按需构建由区块、传送门、可见性和衍射边缘节点组成的层级结构。A\* 在该图中搜索穿过门、绕过拐角以及跨越多次转弯通道的完整路线。完成的路径会基于菲涅尔参数和菲涅尔–基尔霍夫衰减近似,按频段进行刃边衍射评估。有效到达声会按能量和方向合并,而不是任意选择一个门口。
距离与空气吸收
自由场距离损耗遵循球面扩散:声压大约按 1 / distance 下降,这对应平方反比强度,并且距离每翻倍约损失 6 dB。
空气吸收在八个频段中均使用 ISO 9613-1 模型。温度、相对湿度和大气压决定氧和氮的弛豫损耗。对于长度为 d 的路径,每个频段获得压力增益 exp(-αd),因此高频在长距离上消失得更快,同时不会施加人为的听觉截止。
反射
早期反射使用来自附近表面的镜像声源候选。每个候选都会先根据当前世界几何结构进行检查,然后才应用其延迟、方向、距离损耗以及依赖材质的吸收、传输和散射。这使得石头、木头、羊毛和其他材质组产生不同的反射频谱。
房间分析与混响
后期声场通过多次反弹的蒙特卡洛光线追踪进行测量。光线在每次击中材质时损失能量,并通过真实开口逸出。开口损耗纳入 Sabine 风格的房间能量模型,同时用 0.5 ms 能量直方图记录到达声场。反向 Schroeder 能量积分和衰减曲线回归会根据该追踪响应估计每个频段的 RT60。
测量场由以 24 kHz 运行的八延迟线反馈延迟网络(FDN)渲染。该网络使用互不可公度的延迟、能量守恒的归一化 Hadamard 反馈矩阵,以及四个 Schroeder 全通扩散器,以构建密集的尾音,而不会使其变成重复的回声。对于往返时间为 τ 的延迟线,其反馈增益按 g = 10^(-3τ / RT60) 计算,使能量在测量的衰减时间内下降 60 dB。单极点滤波器在 250 Hz 和 4 kHz 处分割反馈,因此可以根据追踪的 RT60 频谱独立计算低、中、高衰减率。
流体与介质边界
空气、水和熔岩被视为具有各自声速和阻抗的声学介质。每条路径都被拆分为其真实的介质段。在边界处,反射和透射能量来自两种介质之间的阻抗关系,而延迟则来自以各介质声速传播的距离。流体表面附近的声源耦合在六个体素面的面片上积分,从而避免将短暂暴露或部分浸没的声源变成全空气或全水的特殊情况。
结构传声
接触声还可以激发相连的碰撞固体。A\* 沿面连接的固体方块寻路,而材料耦合和频率相关阻尼决定有多少振动到达听者。这就是用于脚步声穿过地板等情况的路径;它不与特定声音 ID 绑定。
动态更新与性能
世界数据存储在不可变的区块截面快照中。方块和流体变化仅替换受影响的截面,而传播工作远离渲染线程运行。活动声音会随着声源、听者或几何形状的变化而重新评估,音频回调持续应用最新的方向和声学系数。质量预设调整追踪预算,而不是切换到不同的声学模型。
材料吸收、传输损耗、散射、介质阻抗及相关频带数据定义在 src/client/resources/assets/acousticsystem/acoustic_materials/default.json 中。
兼容性
| Minecraft |Java |Fabric |Forge |NeoForge |
| ——— |—- |—— |—– |——– |
| 1.21.11 |21 |✓ |✓ |✓ |
| 26.1.2 |25 |✓ |✓ |✓ |
| 26.2 |25 |✓ |✓ |✓ |
AcousticSystem 是一个客户端模组。Fabric 安装还需要匹配版本的 Fabric API。其软件混音器需要支持 AL_SOFT_callback_buffer 的 OpenAL Soft 设备。
安装
- 选择与你的 Minecraft 版本和模组加载器匹配的 JAR。
- 将其放入你的 Minecraft
mods文件夹中。 - 打开 音乐和声音选项 → 声音物理 以选择质量预设或调整各项设置。
如果你发现 bug 或不自然的声音,请提交 issue,并附上你的 Minecraft 版本、模组加载器和复现步骤。
常见问题
Sound Acoustic Physics 支持哪些 Minecraft 版本?
Sound Acoustic Physics 支持 Minecraft Java 版 1.21.11–26.2,共 3 个版本,可用的加载器:Fabric / Forge / NeoForge。下载时注意选择和你游戏版本一致的文件。
Sound Acoustic Physics 怎么安装?
先用 PCL2 或 HMCL 启动器安装对应版本的 Fabric / Forge / NeoForge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。运行环境:仅客户端。
评论
登录后评论和评分