全景图(Panorama)
基本信息
| 属性 | 值 |
|---|---|
| 源码类 | lumien.custommainmenu.configuration.elements.Panorama(继承 Element) |
| 配置位置 | 顶层 other → panorama(GuiConfig.loadOthers,GuiConfig.java:155-173) |
| 绘制入口 | GuiCustom.renderSkybox / drawPanorama(GuiCustom.java:332-434) |
| 立方体面数 | 固定 6(Panorama.java:26) |
可配置项
| 字段 | 必填 | 类型 | 默认值 | 说明 |
|---|---|---|---|---|
images |
是 | 字符串 | — | 必须含 %c 占位符,逐面替换为 0–5 |
blur |
是 | bool | — | 是否做全景模糊 |
gradient |
是 | bool | — | 是否在全景上叠天空渐变 |
animate |
否 | bool | true |
关闭后固定停在 position |
position |
否 | int | 0 |
关闭动画时的固定朝向 |
animationSpeed |
否 | int | 1 |
每 tick 累加到 panoramaTimer 的角度步进 |
synced |
否 | bool | false |
与主菜单共享同一份 panoramaTimer |
⚠️ blur 与 gradient 是无判空的硬读(GuiConfig.java:159-160),缺失即崩。images 会先过 getStringPlease,所以写成 JSON 数组会在每次加载时随机取一个。
六个面如何展开
构造函数把 images 里的 %c 依次替换成 0~5 并各自解析为贴图(Panorama.java:25-29)。drawPanorama 的渲染顺序(GuiCustom.java:394-410)与原版 PanoramaRenderer 一致:
| 面序号 | 旋转 | 对应方位 |
|---|---|---|
| 0 | 无 | 前 |
| 1 | +90° 绕 Z |
右 |
| 2 | 180° 绕 Z |
后 |
| 3 | -90° 绕 Z |
左 |
| 4 | +90° 绕 X |
上 |
| 5 | -90° 绕 X |
下 |
场景按 8×8 = 64 个方块平铺(GuiCustom.java:377-378),每面 alpha 为 255/(k+1) 制造纵深。
动画与同步
updateScreen 中(GuiCustom.java:441-453):
synced = true时,读主菜单的panoramaTimer,再把算出的值写回主菜单,其他界面因此与主菜单共用同一视角。synced = false时按自身配置累加或固定。- ⚠️ 同步路径同样直接解引用
getGUI("mainmenu")(GuiCustom.java:443),若mainmenu未定义则空指针(见背景里同一条链路)。
模糊与渐变
blur = true时在renderSkybox末尾连调 6 次rotateAndBlurSkybox(GuiCustom.java:336-342),每次把 256×256 离屏纹理回拷并做 3 遍偏移混合。gradient = true时额外画两层drawGradientRect(GuiCustom.java:189-192),颜色常量-2130706433(0x80FFFFFF)与16777215。
相关条目
- 背景(Background) - 与本条目互斥的平铺背景方案
- 配置文件格式 -
other段的整体结构