关于 3d-sky-background
面向使用现有渲染器的开发者,指导构建协调的 3D 天空背景,涵盖天空表示、光照、色彩处理、状态过渡与验证。
主要功能
- 01选择程序化、全景或混合天空
- 02区分背景、环境与太阳光照
- 03处理全景映射与接缝
- 04协调色彩空间和色调映射
- 05管理白昼、黄昏与夜晚过渡
适用场景
- 01为现有 3D 场景添加天空
- 02协调反射与太阳阴影
- 03检查相机环绕时的全景表现
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mengto/ skills --skill 3d-sky-background安装后在 Claude Code 中输入/3d-sky-background确认已加载。
附带文件agents/openai.yamlREFERENCES.md
详细介绍
3D 天空背景
构建环绕世界的天空,呈现清晰可辨的地平线,并营造与同一大气环境相符的光照。
选择表现方式
检查项目的渲染器、摄像机范围、色彩管线、环境光照和现有资源。如果云层构图很重要,就使用已有的授权全景图;如果需要改变太阳位置,就使用程序化天空;也可以谨慎采用混合方案。保持项目现有的渲染后端和版本;不要为了天空另加一个渲染器。
明确区分三项职责:可见的天空背景、反射/环境光照,以及直射太阳光。仅有背景照片并不能照亮 PBR 对象。PMREM 环境不会提供能投射阴影的方向光。请参阅 PMREM 文档。
构建稳定的环绕天空
- 使用引擎的背景功能、全屏方向着色器,或禁用深度写入和雾效的内向圆顶。圆顶必须位于摄像机裁剪范围内,并随摄像机平移;摄像机旋转时,圆顶应保持世界朝向不变。
- 根据归一化的视线方向推导颜色。从淡暖色的地平线渐变到柔和的中间色带,再过渡到较冷的天顶。让下半球与地面雾霭协调,避免露出明显的硬边。
- 可见圆盘、光晕、方向光和任何天空光线渲染过程都应使用相同的太阳方向。宽阔的光晕和小型圆盘是不同的组成部分;避免产生一大团白色光斑。
- 只有在构图需要纵深时才添加远处的剪影。保持低对比度,并使其色相和明度接近地平线。
有目的地映射全景图
真正的等距柱状天空在水平方向覆盖完整的 360°,在垂直方向覆盖 180°。统一世界坐标轴约定,旋转纹理,使照片中的太阳与场景太阳匹配,并检查接缝和天顶。
宽幅风景照片只是部分全景图。记录其角度覆盖范围和地平线位置;不要不加区分地将其拉伸到球面上。Seijaku 会将部分天空图像围绕太阳对齐,并镜像补齐背面覆盖区域。这是一种针对特定构图的捷径;完整环绕时可能会看到重复的云形。摄像机不受视角限制时,优先使用完整全景图。
自定义着色器环绕经度时,接缝处的不连续可能导致纹理导数错误并产生模糊条纹。优先使用连续的采样坐标并设置纹理环绕;否则,应根据着色器版本提供修正后的梯度。测试时要环绕观察接缝,不要只检查初始视图。
保持色彩与光照协调一致
将显示参考色彩的图像标记为 sRGB,并在光照计算中保持线性空间。色调映射和输出转换只应在指定的最终阶段各执行一次。不要照搬其他项目中拟合的逆色调映射函数:Seijaku 的拟合与其自定义最终着色器及曝光设置相耦合。明确决定照片是与场景一起进行色调映射,还是通过单独的显示参考路径进行合成。
立即提供程序化渐变,然后异步加载天空资源并将其混合进去。资源加载出错时,仍应保留可用的天空。根据可见角度范围和目标显示设备选择合适的纹理分辨率;不要让超大天空图像阻碍首次交互。
在需要时生成预过滤环境并重复使用。在昼夜或季节过渡期间,若条件允许,应插值缓存环境,或在有意义的状态变化时刷新。每帧重建 PMREM 可能会成为场景的主要性能开销。释放已被替换的环境渲染目标,但不要释放仍在使用的纹理。
白天、黄昏和夜晚
使用连续权重控制地平线/天顶颜色、太阳光晕、雾的色调、曝光、月亮和星星。天空变暗后,让星星逐渐淡出。保留足够的环境光照,以便夜间仍能看清材质。缓慢地让云移动;隐藏时暂停移动,并为减少动态效果的情况保留经过设计的静态天空。
验证
- 完整环绕并进行垂直视角观察时,不会出现接缝、拉伸的云、穹顶边缘或相机平移视差。
- 太阳方向、阴影、光束和反射在预期的主视角下保持一致。
- 白天/黄昏/夜晚的变化不会导致闪烁、重复色调映射或雾效不匹配。
- 天空在图像加载前和图像加载失败时仍可用。
- 移动设备和 2× 渲染能保留地平线,并避免意外重建环境。
请阅读 REFERENCES.md,了解源代码检查和官方 API。Seijaku 的相关函数包括 makeSky、makeHills、makeStars 和其环境更新路径。