Unity AI 生成 Cubemap:一条免费的替代路径

2026/07/28

一句话总结

Unity AI Assistant 可以通过 Create > Rendering > Generate Cubemap 用文字提示词生成 Cubemap,输出的其实是一张 equirectangular 全景图,你再把它指定为 skybox。这条路径效果不错,但每次生成都会消耗 Unity AI 点数。如果你只是需要一张 skybox,而不是非要在编辑器内用 AI 工作流不可,其实可以免费拿到同样能直接导入引擎的结果:在浏览器里生成一张 2:1 的 equirectangular 全景图,再转换成六个按你的工作流命名的立方体面。

生成全景图 →

全景图转 Cubemap →

Unity AI Assistant 的 Generate Cubemap 到底做了什么

Unity 的 AI Assistant,入口是 Create > Rendering > Generate Cubemap,本质上是一个文字生成图像的功能,而不是格式转换工具。你输入描述场景的提示词——比如"一片黄昏中氛围压抑的外星峡谷"——还可以选填负面提示词,让模型避开不想要的伪影或元素。接着你可以选择模型风格,比如 Cinematic 或 Cartoon,并用数量滑块一次生成多个变体,方便你比较结果再决定用哪一个。选中满意的结果后,Unity 会直接把它作为 Cubemap 资产,供你放进 Skybox Material。用这个功能生成 Cubemap 会消耗 Unity AI 点数。

为什么输出是 equirectangular,而不是六个文件

虽然菜单项叫"Generate Cubemap",Unity 实际生成的资产其实是 equirectangular——一张 2:1 的全景图,而不是六个独立的立方体面。这不是命名上的疏漏,而是一种合理的中间格式选择。生成式图像模型是在扁平的 2D 图像上训练和运行的,一个 360°×180° 的环境天然会先映射到一张矩形画布上,再谈立方体面的事——equirectangular 让一张生成图就能描述整个球面,而不必绑定到某个引擎具体的面布局上。"先 equirectangular,再拆成立方体面"这种做法也不是 Unity AI 功能独有的:360° 摄影和 CG 环境贴图早在任何 AI 工具出现之前,就一直沿用这种先铺平、后处理的惯例。这也正是为什么"equirectangular 转 Cubemap"这个独立转换步骤,无论源图是怎么生成的,一直是整个行业长期存在的真实需求。

免费的替代方案:先生成,再转换

如果你真正需要的是"一张 skybox",而不是"非用 Unity 编辑器内的 AI 面板不可",那么完全可以免费走同样的 equirectangular 转 Cubemap 流程,不花一个 AI 点数。先到 Skybox Generator:用自然语言描述你的场景,它会在浏览器里生成一张无缝拼接的 2:1 equirectangular 全景图,无需安装,也没有点数计时器在你反复调整提示词时不停扣费。拿到满意的全景图后,把它送进 Cubemap Generator,它会把 equirectangular 图像切分成六个正方形面,并按与你目标引擎工作流匹配的命名约定打包。整条流程都在浏览器端运行——两步之间不会把你生成的内容上传到服务器。对独立开发者或小团队来说,这套流程产出的资产在功能上和 Unity AI 功能生成的完全一样,只是不花点数,而且在真正定稿前你可以更自由地反复试。因为生成全景图和转换是两个独立步骤,你还可以把这张 equirectangular 源图留存下来——以后如果同一个场景要用在查看器、别的引擎,或者另一个需要 2:1 输入而不是六面的平台上,都能直接复用。

给 Unity 用对面命名

不管你的六个面是用哪个工具生成的,命名正确都是最容易出错的一步——尽管 Unity 本身并不强制要求任何命名规则。Unity 的 6-Sided Skybox Material 是通过 Inspector 里的六个贴图槽分别指定六张贴图的,你完全可以手动把手头的文件一一接上去。Unreal 则根本不在这个话题里:它没有官方途径导入 6 张独立的面贴图,所以 Unreal 用户应该跳过拆面这一步,直接导入 equirectangular 源图——UE 会在导入 2:1 的 .hdr 时把它展开成 TextureCube,可直接用于 HDRI Backdrop 或天空球材质。你实际遵循的其实是社区和工具链约定,为的是让批量导出和复用更方便。pxnxpynypznz——正负 X、Y、Z,分别对应右、左、上、下、前、后——是 Unity 和 Three.js 工作流里常见的写法。rightlefttopbottomfrontback 则是大多数独立转换工具和较老的天空盒素材包常用的写法,其中 front 指全景图的正中,right 指往右转 90° 的那一段。Unity 在此之上还叠了一层自己的怪癖:Skybox/6 Sided 材质那六个插槽标注为 Front [+Z]、Back [-Z]、Left [+X]、Right [-X]、Up [+Y]、Down [-Y]——而 Unity 称作 Left 的那个插槽其实是 +X 轴,也就是你面朝正前方时位于右手边的那个面。Cubemap Generator 已经替你消化了这一层:导出的文件是按 Unity 的插槽名而不是按轴向命名的,所以你把 left.png 放进 Left 插槽,按名字一一对上即可,完全不用去推敲 X 的正负号。把两套约定搞混——比如把转换工具风格的一套面接到按轴向命名布局的贴图槽里——不会报错,skybox 依然会渲染出来,但各面之间会出现旋转或镜像错位,导致接缝明显、地平线对不齐。这类问题很隐蔽,经常被误判成贴图导入设置的问题,而不是面指定错了。不管面是哪个工具生成的,稳妥的习惯是把每个面单独当作普通贴图加载,先确认方向再组装最终的 skybox Material——多花一分钟,就能排除掉一整类 bug。Cubemap Generator 让你在导出时直接选择想要的命名约定:front/back/left/right/up/down 按名字对上 Unity 的 6-Sided 插槽,px/nx/py/ny/pz/nz 面向 Three.js 的 CubeTextureLoader 和大多数通用工具,pos_x/neg_x 风格则用于 OpenGL 系的管线。

什么时候 Unity AI 仍是更好的选择

以上都不意味着免费的浏览器路径全面更优——它只是把一个更窄的问题解决得很好。如果你是在编辑器内做更大范围的迭代——一边调灯光,一边实时对照场景的雾效和后处理效果,不断生成一个又一个变体而不离开 Unity——那么 AI Assistant 面板紧密的编辑器集成就值得花这些点数。它还带有 Unity 官方的支持渠道和文档,如果你所在的团队需要一个可问责的供应商关系,而不是尽力而为的社区工具,这一点很重要。而且如果团队本来就分配了一笔 AI 点数预算、又没怎么用掉,把它花在生成 Cubemap 上也是合理的——反正这笔预算你已经付过钱了。浏览器路径最适合的场景,是成本是主要约束,或者你需要一张能在多个引擎间复用的可移植 equirectangular 源图——而不是编辑器内的迭代速度才是你真正在意的东西。把两条路径看作互补而不是对立更合适:先在编辑器外低成本地打样,等确定了想要的方向,再进 Unity 的 AI 面板精修。

反过来:Cubemap 转回全景图

有时方向是反过来的:你接手一个项目,手头只有立方体面贴图——从来没保存过源 equirectangular 图——却需要把环境当成一张全景图来编辑,或者挪到查看器、网站,或另一个需要 2:1 输入的引擎里用。我们的 Cubemap 转全景图工具 直接在浏览器里把六个面重新组合成一张 equirectangular 全景图,所以你不会被困在单向流程里——不管你手头是哪种格式,都能转到另一种。

相关阅读

Panorama AI

Panorama AI

Unity AI 生成 Cubemap:一条免费的替代路径