首轮完整导出

首轮实现了十三组、82 帧和分层导出,但格式通过之后仍发现体态、双手和挥剑问题。最终交付使用后来的完整动画、固定地面投影阴影与预生成描边。

后续采用的模型与动画见完整动画

**截至 2026-09-09:**兵种 mod 为 0.12.1 0.12.2,已安装十四种墓园兵种。本文数字保留各次交付版本的含义;最新进展见黑暗骑士与骨龙动画

工具在 h3-art-pipeline 维护;模型和完整 mod 留在本地。工具迁移与复现

历史记录

历史原文与修订记录(展开阅读)

以下完整保留本次整理前的原文、图片和删除线。这里的“当前”“尚未完成”和“下一步”均指各段写作或标注时的状态;旧版本号、旧工具路径与试稿不能作为现行操作说明。

0.12.0 时的状态说明,现用补丁版本见正文:

**截至 2026-09-09:**兵种 mod 为 0.12.0,已安装十四种墓园兵种。本文数字保留各次交付版本的含义;最新进展见黑暗骑士与骨龙动画

**截至 2026-09-09:**兵种 mod 为 0.11.1,已安装十种墓园兵种。本文涉及的安装数字按各次交付版本注明;最近一次扩展见吸血鬼与蝙蝠形态

2026-09-09 工具迁移: 后续代码在 h3-art-pipeline 维护,原 tools/creature-art/tools/town-art/ 对应新仓库的 creature-art/town-art/。本文的旧路径和 PR 链接保留作历史记录。迁移与复现说明

2026-09-09 更新: 本文的图片、姿势和测量保留为当时试稿,不能视为当前游戏版本。后续替换见完整动画,当前八兵种安装状态见尸巫交付

第一个兵种走完了全流程,验证器零错误零警告:

CSKELE: 13 group(s), 82 frame(s), 246 file(s) copied
1 creature(s): 0 error(s), 0 warning(s)

十三个动画组、八十二帧——和原版帧数完全一致。每帧三层(本体、地面阴影、白色描边), 共用一张 450×400 画布,脚落在 y=267,待机循环的地面线一动不动。

三层是怎么出来的

引擎要三张图,不是一张。英雄无敌 3 把阴影和归属旗帜编码在保留的调色板索引里, 重绘没有调色板,只能分别提供。

阴影用 Cycles 的 shadow catcher:地面放一块平面,把生物对相机隐藏,透明胶片上 就只剩阴影写进 alpha——正好是引擎要的那一层。

2026-09-09 更新:这是当时的实现。当前安装包改用固定地面的二维投影阴影,并提前生成描边;见阴影更新

描边把所有材质换成平白色自发光,关掉太阳光,渲出来就是没有明暗的纯剪影。

阴影这层踩了个坑。shadow catcher 会在全画面留下一层极淡的采样噪点,几千分之一的 alpha, 肉眼完全看不见——但它把这一层的包围盒撑满了整张画布。而下游每一步都在量包围盒。 渲完把接近透明的像素钳到零,阴影的包围盒从 450×400 缩回脚下的 86×41。

差点交不出去的一组

十三组渲完,验证器直接报错:

ERROR  1x: missing required group 0 (MOVING)

我写了待机、三个方向的攻击、受击、防御、死亡、转身、悬停高亮——唯独漏了走路。 而 MOVING 是引擎硬性要求的组(BattleAnimationClasses.cpp 里直接 assert), 缺了整个 mod 就是废的。

有意思的是 Meshy 绑骨的时候附赠了走路和跑步动画,我却没用——因为其余十一组都得自己写, 就一路写下去,忘了还有个现成的。补了个八帧走路循环,加上引擎会在移动前后播的 MOVE_START / MOVE_END 两组两帧。

现在长这样

四个动画组,渲染与原版逐帧对照
每组上排渲染、下排原版:走路、待机、正面攻击、死亡。

结构上全对了:尺寸、锚点、帧数、图层、地面线稳定性,验证器认。

美术上还差得远。骨头的明暗对比比原版弱一截,剑的角度不对——原版是横过身前指向后下方, 我这个指向前下方。那是姿势问题,剑绑在手上,能改。

下一步

先把剑的角度和打光调对,然后上木精灵和法师。这两个会引出新问题:木精灵是射手, 要 SHOOT_* 三组还要投射物;法师要施法动作。

2026-09-09 更新:推进顺序后来改为先修骷髅,再补完整墓园兵种。新版骷髅动作已替换本篇早期输出;木精灵和法师没有在这阶段制作。

代码在 PR #10