在线把 equirectangular 全景图转换成 cubemap 面——直接在你的浏览器里完成,无需注册,无需上传。
把全景图拖到这里
或点击选择 · JPG / PNG / WebP · 最大 50 MB
手头没有全景图?
全景图始终留在您的设备上。所有转换都在浏览器中通过 Canvas 本地完成——无上传、无服务器、无需账号。
选择匹配你工作流的命名规范:Unity 预设直接按 Skybox/6 Sided 材质自身的插槽命名(front/back/left/right/up/down),文件名和插槽名一对一,拖进去就对;px/nx/py/ny/pz/nz 适用于 Three.js 以及大多数通用工具;OpenGL 教程通常用 pos_x/neg_x 风格命名。
与 Photoshop 脚本或付费工具不同,这是一个免账号的免费工具。由 Panorama Generator 出品,服务于全景图到游戏引擎的完整工作流。
一键下载包含全部 6 个面的 ZIP,或按需单独下载某几个面。
输出 512×512、1024×1024 或 2048×2048 cubemap 面。移动端和老 GPU 选小尺寸;源图分辨率够高时选大尺寸。
上传全景图后直接拖拽查看完整球面,转换前提早发现构图或接缝问题——不离开页面。
拖拽或选择一张 2:1 equirectangular 全景图(JPG/PNG/WebP),文件保留在本地设备上。
通过内嵌的 360° 查看器确认上传的场景是否正确。
选择面尺寸(512/1024/2048)和命名规范,点击“转换”。equirectangular 转 cubemap 的计算在浏览器里 2-3 秒内完成。
获取按引擎命名的全部 6 个面,可直接拖入 Unity 的 6-Sided 天空盒材质,或 Three.js 的 CubeTextureLoader。
Cubemap 是一组六张正方形图片,组成想象中围绕观察者的一个盒子的六个面。它承载的是与 equirectangular 全景图相同的 360° 场景,只是投影方式从球面换成了立方体。
当你的目标是 Unity 内置管线的旧版天空盒、不支持高精度全景采样的移动端 GPU,或 Three.js 的 CubeTextureLoader 时,就需要做一次 equirectangular 转 cubemap 的转换——这些场景都要六个独立的面。如果你的引擎可以直接使用 equirectangular(URP/HDRP、现代 WebGL,或 Unreal——它会在导入 .hdr 全景图时自动展开成 TextureCube,供 HDRI Backdrop 使用),那可能完全不需要转换。完整的格式选择决策树,参见天空盒格式详解。
| 对比项 | Cubemap | Equirectangular |
|---|---|---|
| 布局 | 六张正方形图片,每面一张 | 一张 2:1 图片,像世界地图 |
| 极点畸变 | 没有极点奇异性,只有轻微的边角拉伸 | 天顶和天底的像素被严重拉伸 |
| GPU 采样 | 不支持全景采样的 GPU 也能用 | 需要高精度全景采样 |
| 典型使用场景 | Unity 旧版天空盒、Three.js CubeTextureLoader | URP/HDRP、现代 WebGL、Unreal、360° 查看器 |
| 最适合 | 把 cubemap 天空盒交付给引擎 | 单文件存储、编辑与预览 |
新建一个 Material,把 shader 设为 Skybox/6 Sided。用 Unity 命名预设导出,然后把每张 PNG 拖进同名的插槽(Front、Back、Left、Right、Up、Down),最后在 Lighting → Environment 里指派这个材质。小提示:Unity 的插槽标签本身已经消化了它的轴向怪癖,你只要按名字对上就行。也可以直接导入原始全景图,把 Texture Shape 设为 Cube,再配 Skybox/Cubemap 材质。
Unreal 不支持把 6 张独立图片拼成 cubemap——跳过转换,直接导入 2:1 源全景图(最好是 .hdr):UE 会在导入时把它展开成 TextureCube,可直接用于 HDRI Backdrop 或天空球材质。6 个面只留给那些真正接收单张面贴图的引擎和库。
const loader = new THREE.CubeTextureLoader(); const texture = loader.load(['px.png','nx.png','py.png','ny.png','pz.png','nz.png']); scene.background = texture; 用 Three.js 预设导出,6 个文件的顺序正好是 CubeTextureLoader 期望的 [px, nx, py, ny, pz, nz]。
下面每一种 cube map 命名方案描述的都是同样的六个面——不同的只是文件名。
| 面(你看到的画面) | Three.js / 通用 | Unity 6-Sided 插槽 | OpenGL |
|---|---|---|---|
| 视角右侧 | px | left | pos_x |
| 视角左侧 | nx | right | neg_x |
| 上方 | py | up | pos_y |
| 下方 | ny | down | neg_y |
| 正前方(中心) | pz | front | pos_z |
| 后方 | nz | back | neg_z |
Unity 那一列的错位是故意的——文件名对应的是它所属的材质插槽,而不是坐标轴,因为 Unity 的 Left [+X] 插槽装的其实是右手边的画面。把文件名对上插槽名,天空盒方向就是对的。
上传预览还能识别 posx/negx 这类命名(来自 three.js 官方示例素材)以及 right/left/top/bottom/front/back 这类命名(常见于其他转换工具)。
cubemap 内外颠倒或镜像通常意味着面装错了插槽。用你引擎对应的命名预设重新导出一次 panorama 转 cubemap,相信 Unity 的插槽标签而不是坐标轴名称,再到预览标签页里核实一遍。
天空盒朝向不对,靠的是水平旋转滑杆而不是重新导出。转换前把它调到 0-360° 之间的任意角度,让你想要的地标或主光源落在 cubemap 的正面。
cubemap 面模糊,意味着你设置的面尺寸超过了源全景图的纵向分辨率。把面尺寸设为不超过源图高度,或者用 AI Skybox 生成器 生成更高分辨率的源图。
用我们的 AI Skybox 生成器 30 秒生成一张。提示词驱动,输出 2:1 equirectangular,可以直接在本转换器里变成 cubemap 天空盒。
不会——你的图片从不会被上传。从图片到 cubemap 的转换 100% 在浏览器里通过 Canvas 完成,我们看不到你的文件。
Equirectangular(也叫 sphere map 或球面全景图)是一整张图片(2:1 比例,类似世界地图)。Cubemap 是同一场景展开成想象中一个盒子的 6 个正方形面。现代引擎通常可以直接使用 equirectangular,但旧版管线和移动端 GPU 仍然需要 cubemap。详见天空盒格式指南。
Unity 的 Skybox/6 Sided 天空盒选 Unity 预设,Three.js 和大多数通用工具选 px/nx/py/ny/pz/nz,OpenGL 项目选 pos_x/neg_x 预设。Unity 预设是按材质自身那 6 个 Inspector 插槽命名文件的——包括它反直觉的标注方式:名为 Left [+X] 的插槽装的其实是你面朝正前方时位于右手边的那个面,Right [-X] 装的是左手边的那个面——所以你只要把每个文件拖进同名插槽即可。Unreal 用户完全不需要 cubemap 面:Unreal Engine 没有官方途径导入 6 张独立面贴图,而是在导入 equirectangular 全景图(最好是 .hdr)时直接展开成 TextureCube。命名规范可随时重新导出切换,无需重新上传。
1024 px 是桌面端和现代移动 VR 的安全默认值。旧移动端 GPU 或需节省内存时选 512。仅当源图分辨率非常高(如 8192×4096)且目标引擎支持时才选 2048。输出面尺寸不能超过源图的垂直分辨率。
本页面的转换器只支持 JPG、PNG 和 WebP 格式。如果你的文件是 .hdr 或 .exr,请使用专门的 HDRI 转 Cubemap 转换器——它会完整保留浮点数据,导出用于 IBL 光照的真正 HDR cubemap 面。
在本页的「预览 Cubemap」标签页上传 6 个面,就能在线查看 cubemap——它们会被拼接成一个可交互的 360° 球体,方便你检查面朝向、发现接缝问题。如果要把这些面合并回一张 2:1 的 equirectangular 全景图,使用 Cubemap 转全景图工具。
如果源全景图本身不能无缝循环(左边缘 ≠ 右边缘),cubemap 在面边界处就会出现同样的断裂。Skybox 生成器 生成的 AI 全景图已做接缝修正;相机拍摄的全景图通常也能正常循环;拼接合成的全景图则可能存在问题。
水平旋转滑块可以在转换前改变 cubemap 朝向的方向。它会改变全景图中哪段经度落在每个立方体面上,这样你就能把某栋建筑、地平线特征或光源精确放到正面,而无需在 Photoshop 里重新编辑源图。