← 博客2026-10-05

HD 美术是怎么做的

从头像、背景和地图,到机体、战斗演出与界面,介绍 HD 美术包中各类资源的制作和接入方式。

HD 美术包可以按需安装,游戏中可以随时切换 HD 和原版画面。这篇按资源类别介绍制作过程,包括试过的方法、遇到的问题,以及图做好之后如何接回游戏。下面的对比图都是左边原版(按像素放大)、右边 HD。

各类资源采用的工具不同,但有几个共同做法:

  • 构图以原版为准。 AI 重画和本地放大的结果都要配准回原图,保留原版的轮廓、位置和大小。
  • 替换发生在画面层。 游戏逻辑、存档和判定保持原样,原版与 HD 可以随时切换。
  • 部分资源在运行时生成。 窗口边框、BANPRESTO 标志和 GAME OVER 字样直接从玩家的 ROM 生成,这些图片无需随 HD 包分发。

四种接入方式

制作好的资源通过以下四种方式接入游戏:

方式 做法 用在
整张绘制 原版照常把图切成小块绘制;宿主识别出对应图片后,用一整张 HD 图替换这些小块,保持相同的绘制时刻和层次 头像、场间背景、战术地图、标题、机体与战斗精灵
贴图替换 按 RT64 渲染器的贴图哈希,把某张小贴图换成高清版。哈希可以直接从 ROM 离线计算 世界地图地表、宇宙物件、对话框与 HUD 边框、地图机体图标、战斗地面
原生模型 识别原版的 3D 显示列表,改为绘制重新制作的模型 世界地图上的舰船、地标和地点标记
原生文字 将原版图片中的文字按当前语言重新排版 标题菜单、章节标题卡、序章、结局、制作人员名单

整张绘制主要用来处理拼缝。原版的大图由几十块小贴图拼成,逐块替换容易在接缝处出现差异,合成一张绘制就能避开这个问题。

人物头像

人物头像:原版与 HD

左:原版 96×96 右:HD 768×768

更多头像:原版与 HD

另外 8 张头像,每组左原版、右 HD

  • 原版:300 张 96×96 左右的 64 色头像。
  • 生成:使用阿里云通义千问 qwen-image-3.0。每次把 4 张头像拼成 2×2,铺灰底、按像素放大 6 倍后送入模型;一共 75 次请求,花了大约 15 元。也试过绿幕背景和 3×3 拼图:前者会让模型把每格都放大,后者每格尺寸太小,效果都不合适。
  • 对齐:模型生成后,每格会有 3–10% 的缩放偏差,平移最多 7 像素。因此每格都以 32 像素的块做最小二乘仿射配准,再重采样到原图的 8 倍。
  • 抠图:轮廓限制在原版轮廓 ±1.5 个原像素以内。生成后未画到原图边框的头像有 130 张(共 300 张),按边缘颜色补齐。最终轮廓与原版的重合度(IoU)中位数为 0.991。
  • 边缘处理:早期透明像素存的是黑色,而渲染器做双线性采样时不预乘透明度,导致头像边缘出现黑边。后来将透明像素填成最近的实色,并分别缩放颜色和透明度,解决了这个问题。
  • 结果:304 张 768×768,整张绘制。

场间背景

场间背景:原版与 HD

上:整张,左为原版 320×240,右为扩展到 16:9 的 HD;下:同一处放大 5 倍,左原版、右 HD

更多场间背景:原版与 HD

另外 4 张场间背景(只取 4:3 部分),每组左原版、右 HD

  • 原版:8 张 320×240,每张有亮、暗两套调色板。
  • 生成:使用通义千问 qwen-image-3.0-pro 重画,配准到 1920×1440。暗版通过两套 ROM 调色板拟合的 17³ 颜色查找表,从亮版转换得到,误差为 1.2–2.6 级;相比之下,简单乘 0.75 的误差为 3–23 级。
  • 宽屏:再用阿里云通义万相 wanx2.1-imageedit 向两侧扩图,得到 2560×1440 的宽屏背景。
  • 结果:16 张加一张星空,整张绘制。

剧情世界地图

剧情世界地图:原版与 HD

左:原版欧洲(地中海一带) 右:HD

中亚:原版与 HD

中亚(里海一带),左原版、右 HD

宇宙:原版与 HD

宇宙区域的地球与月球,每组左原版、右 HD

  • 原版:64×64 的 4 位色地表贴图,分地球全图、欧洲、中亚、北美和宇宙。
  • 生成:用千问试画过几轮,整体观感不理想,最终四块地表都用 OpenAI 图像模型(通过 Codex)重画。先画整个区域作为底图,再按 3:2 的窗口逐块补充细节。拼接时,离窗口内边越远的像素权重越高,海岸线则按原版的陆海分布裁切。
  • 拼接修正:最初把拼图行距算成了 611,实际应为 600,由此产生了一道接缝;海岸边缘也出现过一圈紫色,分别修正了行距并清理边缘。
  • 近景:剧情定位到某个地点时,镜头会拉得很近,原图 1 像素占 19–30 个屏幕像素,因此又为 19 个常用地点单独绘制了近景窗口。
  • 结果:213 张 512×512 贴图(原版 8 倍),通过贴图替换接入。宇宙部分用千问制作了 27 张,星空背景采用整张绘制。

世界地图上的舰船、地标与标记

剧情世界地图上飞行的舰船、太空中的地标,以及标出地点的黄色菱形,原版都使用简单的 3D 模型。HD 中为它们重新建了模型。下面是 0.3.5 的实机画面:在同一时刻先截取 HD,再切换到原版截图。

舰船(一):原版与 HD

每组左为原版、右为 HD。从左到右、从上到下:古兰·加兰、戈拉翁、冈多尔、玫瑰人生号、巴鲁智、天秤座

舰船(二):原版与 HD

万年和平号、米迪亚、奥多姆拉、阿尔比恩、阿伽玛、新阿伽玛号、拉·凯拉姆

  • 舰船:13 艘舰船参照官方设定,在 Blender 中通过脚本重新建模,每艘 8 千到 2 万多个面(原版为 4 到 330 个面)。航迹改为着色器绘制的光带。
  • 名牌:天秤座、巴鲁智等模型的名牌按当前语言重新排字,上图截取的是日文界面。

地标:原版与 HD

上:阿克西斯;下:月神5号与它的名牌。左原版、右 HD

  • 地标:阿克西斯和月神5号也重新建模。连同 13 艘舰船,共 15 个模型。

地点标记:原版与 HD

标出地点的黄色菱形,左原版、右 HD

  • 地点标记:保留原版双四棱锥的外形,将棱角倒圆,换成金色反射材质;外圈的虚线环由着色器绘制。
  • 抗锯齿:这些模型和整个场景一起使用 4 倍多重采样(MSAA)绘制,减少边缘锯齿。
  • 接入:以上资源采用原生模型方式接入,HD 包使用的是重新制作的模型数据。

战术地图

战术地图:原版与 HD

第 20 张地图的城区。左:原版按像素放大 右:HD 底图

原版、HD 底图与色号图

从左到右:原版、HD 底图、色号图(按原版调色板显示)。游戏运行时用色号图和当前调色板给底图调色,让水面流动、夜间地图变色

殖民地动画帧:原版与 HD

太空殖民地的 8 帧动画,左原版、右 HD

战术地图是工作量最大的一类:158 条记录中,有 109 张主图和 22 张变体,共 131 张在用。

  • 生成:原版放大 4 倍后,大多超过千问 2048×2048 的上限,因此底图全部使用 OpenAI 图像模型绘制。先画 109 张整图,再补充 772 个细节窗口,每个窗口对应原图 384×256,按网格对齐并逐格检查;变体另画 50 个窗口,共制作了 900 多张图。
  • 水和光:原版通过调色板循环表现水面和灯光,夜战还会整体更换调色板。为保留这些变化,水和边界不直接画进底图,而是另外制作一张 4 倍的色号图:只记录原版的颜色编号,用 MMPX 像素放大。运行时根据当前调色板与参考调色板的差值给底图上色,水面、灯光和夜战配色就能随原版调色板变化。
  • 殖民地:太空殖民地使用单独的 8 帧动画,另画一张序列图。
  • 结果:131 张底图(如第 20 张为 1792×2048),各配一张色号图,整张绘制。

机体立绘

机体立绘:原版与 HD

左:原版 96×96 右:HD

更多机体立绘:原版与 HD

另外 8 台机体,每组左原版、右 HD

  • 原版:332 种机体姿势,多数为 96×96 或 128×128。
  • 放大方式:试过用千问 Pro 重画,部分机体会被版权过滤拦下,生成结果也会改动机体细节。后来在本地比较了 14 个放大模型,选用 4x-UltraSharpV2 和 4x-PixelPerfectV4 各取一半混合:两趟放大到 16 倍,再缩至 8 倍母版,透明度单独经过模型处理后清理边缘。
  • 结果:发布时使用 6 倍版本,长边不超过 1024 像素。战前确认、机体能力等页面直接使用这套图,战斗演出中也用它整帧替换原版精灵。原版有 134 个姿势采用镜像存储,通过顶点数据判断翻转方向,使 HD 图朝向与原版一致。

地图机体图标

地图机体图标:原版与 HD

左:原版 16×16 右:HD 64×64

四种阵营颜色

同一个 HD 图标的四种阵营颜色

地图上的机体图标只有 16×16,处理时希望提高辨识度,同时保留像素感。

  • 流程:MMPX 放大 2 倍 → 4x-PixelPerfectV4 → 硬量化回 32×32,只使用原版的颜色编号(在 CIELAB 色彩空间中查找最接近的颜色)→ 再用 MMPX 放大 2 倍,得到 64×64 的色号图。
  • 其他尝试:千问会改动形状,平滑重绘会失去像素感;还试过抖动、xBRZ(GPL 授权)、Scale4x 等方法,最终采用了上面的流程。
  • 阵营颜色:颜色由调色板决定,每个图标分别生成四个阵营版本,去重后为 1256 张,通过贴图替换接入。

战斗演出

战斗画面由多层资源叠成,各层的绘制方式不同,HD 的处理方式也分别设计。

战斗画面:原版与 HD

0.3.5 实机画面(神高达对大师高达,港口)。每组左原版、右 HD。上:机体使用 HD 立绘,海面和楼群使用高清贴图;下:招式特效保留原版

画面由哪几层组成

层 原版怎么画 HD 怎么处理
天空、星空 32×32 的小块精灵铺满,按 320×240 循环 保留原版
地面 3 块×3 层 3D 模型,贴图走渲染器 1419 张贴图换成 4 倍
机体 图集里的零件按零件表叠成一帧 整帧换成 HD 立绘
机体的额外图(残影、变形、换色) 同上 推导或重画,196 帧
cut-in 特写 同上 本地放大,脸太小的重画;308 帧(去重 208)
武器、道具 同上 本地放大;431 帧(去重 394)
招式特效、爆炸、速度线 精灵加调色板动画 保留原版
HP 窗、对白框的边框 贴图切片 代码重画(见下文「边框」)

机体、额外图、cut-in 和道具在原版中使用同一种结构:一帧由图集中的若干小块按零件表叠成,每块对应一个四边形,跟随节点矩阵移动和缩放。HD 根据场景、图集、调色板和帧编号识别画面,再用一整张 HD 图替换这些小块,沿用原版的位置和变换。

机体

战斗中的机体:原版与 HD

战斗中的机体特写,左原版、右 HD

  • 机体使用上文的 332 张 HD 立绘,与战前确认页共用一套资源。
  • 原版有 134 个姿势以镜像形式存储,每个零件带有翻转标记。通过零件顶点的地址识别镜像版本,使 HD 立绘沿用原版朝向。
  • 受击闪白有两种实现:原地改写调色板时,HD 图不会跟着变色;切换调色板资源时,对应的几帧无法识别,会回落到原版画面。

机体的额外图

站姿以外,机体图集中还有残影、变形中间帧、换色、浮游炮飞出等额外图。逐张与站姿对齐比对后,分为六类处理:

类别 数量 做法
直接复用站姿 6 用 HD 立绘
整体换色或发光 11 按颜色查表从 HD 立绘换色
残影或分解特效 8 从 HD 立绘推导,逐行估算横向错位
站姿加飞出的浮游炮 2 HD 立绘加上浮游炮
局部改动(站姿上补一块) 47 OpenAI 图像模型画改动的部分,其余用 HD 立绘
整张新画面 15 OpenAI 图像模型重画

推导出的额外图:原版与 HD

从 HD 立绘推导:残影(シュピーゲル高达)、整体换色(大师高达 S)、浮游炮飞出(ν 高达)。每组左原版、右 HD

  • 推导:逐像素比较原版帧和站姿。相同位置使用 HD 立绘;只改了颜色的位置,按颜色比例或查表换色;站姿中没有的新像素使用原图放大,空白处保持透明。单一色调的整体发光则使用「站姿亮度 → 目标颜色」映射。
  • 换色复查:部分按颜色比例转换的结果发糊、丢失细节,后来将其中 8 张改为颜色查表:在原版帧与站姿重叠的位置,统计每种站姿颜色最常对应的目标颜色。

重画的额外图

左:原版这一帧;中:给模型的风格参考(同配色的 HD 立绘);右:最终结果

  • 重画:62 张交给 OpenAI 图像模型处理,每张附原图、同配色的 HD 立绘和单独编写的提示词。生成后先配准,再按原帧轮廓抠成 8 倍母版。局部改动使用标记图区分:灰色区域取 HD 立绘,红色区域取生成稿,接缝羽化 1 个原像素。
  • 多帧动画:先绘制其中一帧,其余帧从这张图推导。

cut-in

本地放大的 cut-in:原版与 HD

机体和大脸特写的本地放大效果,左原版、右 HD

  • 范围:55 个特写场景、308 帧(去重 208)。每帧按零件表渲染,裁到零件范围,再使用与机体立绘相同的本地放大流程。
  • 小尺寸面部:部分画面中的脸只有 6–20 个原像素,放大模型会补出与原图不符的五官。

小尺寸面部的放大与重画对比

左:原版;中:本地放大;右:重画。下面一组的五个人物,本地放大后五官难以辨认

  • 处理方式:这里的 cut-in 各帧由图集里一幅完整的画切成零件后重新拼接,人物平移或聚拢都通过移动这些零件实现。因此先用 OpenAI 图像模型重画图集中的 10 幅整画,配准抠图后贴回 8 倍图集,再按原版零件表的叠放顺序和水平翻转重新拼出 36 帧。

图集里的整幅画与重画

图集里存的整幅画(左)与重画结果(右)

  • 细节:有一帧叠了 5 块来自别处的眼睛补丁,每块 15×7 像素;重建时先略去这些补丁,再单独补画眼睛。大脸特写经本地放大后与原图较为贴合,直接采用放大结果。

武器与道具

道具:原版与 HD

武器与道具,每组左原版、右 HD

图集中,站姿、额外图和 cut-in 以外的条目归为道具:289 个场景、431 帧(去重 394),包括步枪、光剑、盾牌、拳头等。它们采用同一套本地放大流程,与 cut-in 放在同一个包里。

地面

战斗地面贴图:原版与 HD

战斗地面贴图。左:原版 64×64 右:HD 256×256

  • 规模:424 个 3D 地面模型、1419 张贴图。
  • 离线计算哈希:贴图替换通过渲染器计算的哈希识别资源。这里按显示列表模拟贴图装入 4 KB 纹理内存的过程,包括奇数行字序交换和调色板复制四份,再按 RT64 的规则计算哈希。试点时,从实机抓取的 16 个哈希均得到复现。
  • 放大:按照贴图的环绕方式,先向外扩展 16 个像素再放大 4 倍,以处理平铺接缝。草、碎石等噪点贴图放大后会带一些笔触感,最终保留了这一效果。

打包尺寸与当前覆盖范围

  • 打包尺寸:仅用于战斗的整帧图按原版 5 倍打包。机体在演出中缩放为 80–110%,cut-in 约为 129%;默认 4 倍内部分辨率下,每个原像素约占 3.2–5.2 个屏幕像素,因此选用 5 倍作为发布尺寸,8 倍母版留在本地。
  • 保留原版的部分:天空和星空;依赖调色板动画变色的招式特效、爆炸和速度线;以及上文提到的部分受击闪白帧。招式特效等资源还需要处理动画变化,才能用 HD 资源替换。

边框、标题与剧情画面

标题 logo:原版与 HD

左:原版 右:HD

标题火焰:原版与 HD

标题画面的火焰(16 块中的 2 块),每组左原版、右 HD

  • 对话框和 HUD 边框:13 片对话框边框、17 片战斗 HUD 边框,由代码按原版设计重新绘制,从 16 像素放大到 64 像素,通过贴图替换接入。
  • 窗口边框、BANPRESTO、GAME OVER:运行时直接从玩家的 ROM 生成。这部分使用程序处理,无需随 HD 包提供图片。边框采用圆头抗锯齿线条,保留原版颜色编号,让光沿边框流动的效果继续由调色板控制。
  • 标题 logo 与火焰:使用千问生成并锁定配色,火焰制作成可无缝循环的 16 块。
  • 图片中的文字:标题菜单、133 张章节标题卡、序章、结局和制作人员名单,都改为按当前语言原生排版,替换原图中的日文。

体积

0.3.5 的 HD 包压缩后为 505 MB,解压后约 540 MB,共 6795 个文件。占用最多的是战术地图(246 MB)和贴图替换使用的 PNG(161 MB)。

  • 整张图片存为 JPEG(质量 92),需要透明的图片另存一张透明度 PNG。色号图、动画帧和贴图替换资源使用 PNG;RT64 支持的格式为 PNG 和 DDS。
  • 机体立绘从 8 倍缩至 6 倍,因为页面中的最大显示尺寸约为 1000 像素。
  • 试过 BC7 纹理压缩,但世界地图近景会出现块状痕迹,因此采用了目前的格式。抽样画质(PSNR)为:立绘 44 dB、头像 42 dB、地图 41 dB。

工具与 AI 使用情况

各类资源使用的工具汇总如下:

  • 阿里云通义千问图像模型(qwen-image-3.0 / 3.0-pro):人物头像、场间背景、宇宙物件、标题 logo 与火焰。
  • 阿里云通义万相(wanx2.1-imageedit):将场间背景扩展到 16:9。
  • OpenAI 图像模型(通过 Codex):剧情世界地图、战术地图底图,以及部分战斗 cut-in 与机体额外图。
  • 本地放大模型(4x-UltraSharpV2、4x-PixelPerfectV4,配合 MMPX 像素放大):机体立绘、地图机体图标、战斗 cut-in 与道具、战斗地面贴图,以及战术地图的色号图。这些流程以原版像素为基础进行放大。
  • 建模、程序绘制与排版:舰船、地标和地点标记在 Blender 中建模;对话框与 HUD 边框由代码绘制;窗口边框和标志在运行时从 ROM 生成;文字采用原生排版。这部分资源未使用 AI 图像模型。

AI 生成或放大的图都以原版画面为参考,制作后逐张配准回原版构图。本项目为非官方粉丝作品,原作角色与美术的权利归各自权利人所有。