ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

VCMI 生物 Mod 开发指南:生物图形的 3D/AI 渲染、.def 动画工具链与战场/地图绘制规范

VCMI 生物 Mod 开发指南:生物图形的 3D/AI 渲染、.def 动画工具链与战场/地图绘制规范 游戏开发【免费下载链接】vcmiOpen-source engine for Heroes of Might and Magic III项目地址https://gitcode.com/gh_mirrors/vc/vcmi点击查看免费下载本篇围绕 VCMI 官方 Modder 指南 Creature_Help.md 展开系统讲解如何为一个生物战斗中作战的单位准备完整的图形与音频资源从.def动画文件的转换工具、战场精灵的 3D 渲染与 AI 生图工作流到冒险地图精灵的透视与阴影绘制技巧。读完之后你将掌握一个可复制的生物美术生产管线并能将产出的资源正确挂接到 VCMI 的 JSON 生物配置见 Creature_Format.md与 JSON 动画描述见 Animation_Format.md中。.def 动画文件的处理工具与直接图片方案.def是 Heroes of Might and Magic III 的自定义动画容器格式VCMI 完整支持该格式同时也支持用 JSON 描述直接引用现代图片文件targa、png 等 VCMI 图片加载器支持的所有格式。因此你有两条资源生产路线路线一沿用 .def 工作流。官方指南建议下载两个社区工具原文给出的下载链接指向 SourceForge 的 grayface-misc 项目此处不再重复外链DefPreview将.def文件转换为.bmp图片序列用于查看、修改或作为重绘底稿H3DefTool将.bmp图片序列转换回.def文件重新打包成游戏可读取的动画。路线二JSON 直接引用图片官方推荐。VCMI 允许为任意.def动画提供一个同名.json替代文件直接列出图片帧。相比.def这种格式支持单独覆盖动画中的某几帧例如图标集里只换一张图使用现代图形格式targa、png 等完全不需要二进制工具只需用文本编辑器 图片即可。仓库文档明确说明大多数现有 Mod 都是用.def文件编写的但更推荐使用直接图片。JSON 动画文件的格式定义见 Animation_Format.md其中每个sequences/images条目都支持generateShadow0 不生成1 普通阴影2 斜切阴影用于冒险地图和generateOverlay0 无1 描边两个可选字段可由引擎自动为帧生成阴影与轮廓——这正好配合本文后续章节手动的阴影绘制需求。一个真实的使用示例可以参见仓库内置配置 castle.jsonpikeman的战斗动画直接指向CPKMAN.DEF冒险地图攻击帧则使用AvWattak.def:0:0这种文件:组:帧语法引用静态帧说明.def与#组:帧语法在当前引擎中都是常规用法。第一步先克隆一个已有生物并让它跑通在开始绘制任何新动画之前官方指南强调了一条工作顺序先复制一个现有生物确保你能够独立克隆它并让其正常工作而不引入任何新内容。如果克隆出来的生物都跑不起来不要浪费时间画新动画——管线必须先通。一个功能完整、可玩playable的生物需要的完整资源清单详见 Creature_Format.md 的 Required data 一节类别资源数量动画战斗动画1 个.def文件动画投射物动画仅远程兵种1 个.def文件动画冒险地图动画1 个.def文件图片小头像英雄交换窗口用1 张图片大头像英雄窗口用1 张声音生物音效集attack/defend/killed/move/shoot/wince/startMoving/endMoving最多 8 个对应的 JSON 配置中graphics节点承载上述动画与图片引用animation、map、iconSmall、iconLarge、mapAttackFromLeft/Right等sound节点承载 8 个具名音效。以 castle.json 中的pikeman为例它的graphics.animation为CPKMAN.DEFsound节点给出attack/defend/killed/move/wince五个具体 wav 文件名。克隆验证阶段你可以逐一确认这些字段是否都指向有效资源。战场动画渲染光照与阴影规则从官方指南给出的战场渲染约束看太阳永远在正上方zenith阴影永远在生物后方。原因是战场生物精灵可能被水平镜像mirrored显示因此阴影不能画在某一侧原游戏没有强规则但通常阴影高度约为生物高度的一半twice less higher战场的观察仰角elevation angle官方并不知道确切值只能以现有 H3 素材为参照。这些规则直接决定了 3D 场景里灯光的位置和精灵的裁剪方式。3D 渲染工作流指南推荐使用Blender等 3D 软件渲染生物并给出了两类起点起点一使用带骨骼rigged的免费 3D 模型。原文列出了 9 个 CC0/free-licensed 的角色模型Fantasy Bandit、Monster-4、Crypt Fiend、Solus the Knight、Ancient Earth Golem、Shadow Golem、Earth Golem、Kong 2021 Rig、Shani均托管于 CGTrader此处不重复外链它们覆盖了人类、恶魔、石像鬼、巨猿、女性角色等多种生物原型可以直接绑定动作后渲染。起点二从单张图片生成 3D 模型。可以使用Stable Fast 3D或Unique3D这类图生 3D 服务原文指向 Hugging Face 托管的 Space不重复外链。在Blender中的具体操作步骤创建.blend项目并导入生成的模型文件为物体添加Principled BSDF材质在Shader Editor视图中创建Color Attribute将Color Attribute的 Color 输出连接到Principled BSDF的Base color输入。这样可以避免模型表面没有 UV 贴图时的灰色塑料感。指南还给了两个进阶技巧细节增强对原图裁剪一个局部细节单独生成该细节的 3D 模型两个模型都导入Blender后熔melt在一起弥补低面数模型丢失的细节透明背景输出渲染时选择 PNG RGBA 并关闭背景Film→Filter→Transparent避免生物精灵带上难看的深色边框。之后在GIMP中通过Layer→Transparency→Alpha threshold对透明度做阈值处理把生物与青色alpha 边界区域正确分离。帧率说明游戏全局帧率为 10 帧/秒但你可以按更高采样渲染动画再在生物.json配置里调整播放速度。Creature_Format.md 中对应的参数是graphics.animationTimewalk移动动画时间因子、idle待机动画时间H3 生物恒为 10、attack远程攻击动画时间对射击与施法生效不影响近战以及timeBetweenFidgets待机动画触发间隔。AI 渲染工作流指南同时给出一条AI 生图管线适合没有 3D 建模能力的创作者各工具原文均为 Hugging Face Space不重复外链主姿态生成用Flux类文生图模型生成生物的主表现图待机微动动画用SVDStable Video Diffusion在姿态基础上加随机微动。经验法则是待机动画中生物位移通常不超过 1 个像素——原因是避免屏上动画过密并保证与其他动画之间的衔接始终平滑seamless姿态控制用ControlNet或OpenPose控制姿态。对特定动画推荐Cinemo它支持描述性 prompt但分辨率较小动画衔接让动画首尾帧一致。可以用ToonCrafter按 prompt 直接绘制序列的首帧和末帧分辨率/质量提升模板图通常需要提分辨率使用SUPIR超分多张精灵的一致性如果两张精灵需要保持一致把它们贴进同一张图里一次性超分paste them in a single image and upscale at once。战斗音效指南推荐使用Tango 2音频生成模型制作生物音效并指出其质量优于Stable Audio。生成的音效对应生物sound节点的具名槽位attack近战攻击、defend防御姿态被攻击、killed被击杀、move移动循环、shoot射击仅远程、wince非防御姿态受击、startMoving/endMoving开始/结束移动或传送。冒险地图生物渲染冒险地图adventure map的渲染规则与战场不同官方不知道确切的观察仰角但45° 仰角是个不错的选择光照方向建议45° 仰角 45° 方位角地图生物不用消失点透视绘制而是等距isometric渲染。在Blender中可以获取正交渲染设置原文指向 Blender 官方问答的某条答案不重复外链地图上的循环动画通常可以直接取战场动画里的Mouse Over鼠标悬停动画组来用如果你同时创作生物及其升级版本两者在地图上朝向往往不一致需要分别处理视角变换地图视角比战场更高。要改变战场精灵的视角可以用Zero 1-to-3类视角生成模型也可以用MotionCtrl SVD可控制相机运动方向做更高分辨率的视角变换有 3D 软件的话更高质量的做法是把图片转成 3D 模型后从另一个角度重新渲染Stable Fast 3D原文还指向了TripoSR项目讨论区中关于从渲染结果恢复材质的一条评论不重复外链。阴影绘制技巧圆锥投影法原游戏对地图阴影方向没有强规则——不同建筑的阴影方向并不一致。指南给出了一个可操作的圆锥投影作图法核心思路是把对象近似为一个垂直圆锥求出锥顶影子的落点再向外推阴影轮廓把对象近似为垂直圆锥 为对象像素‍⬛ 为待画阴影区‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛标出锥顶及其在地面的投影点‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛在左侧画一个直角三角形‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛三角形的方块顶点即锥顶影子在地面的投影‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛据此画出其余阴影‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛‍⬛渲染成果如何进入引擎生物动画组渲染完成后帧序列要按 Animation_Format.md 定义的动画组group组织。每个.def文件或 JSON 动画都包含多个组VCMI 对各组的用途有明确约定基础动画组用途[0]Movement移动[1]Mouse over随机待机动作、鼠标悬停时播放[2]Idle不行动时连续播放的基础动画[3]Hitted受击[4]Defence防御姿态近战受击[5]Death死亡[6]Death (ranged)被远程攻击击杀时的替代死亡动画转身动画[7] Turn left转向观者方向的前半段、[8] Turn right后半段、[9]/[10]H3 文件中有、VCMI 未使用。近战攻击[11] Attack (up)、[12] Attack (front)、[13] Attack (down)。远程攻击[14] Shooting (up)、[15] Shooting (front)、[16] Shooting (down)。特殊动画[17]/[18]/[19] Special (up/front/down)在未找到专用施法或群体攻击动画时作为回退。H3 附加动画[20] Movement start、[21] Movement end。VCMI 扩展动画[22] Dead死亡后持续状态缺失时取 Death 组最后一帧、[23] Dead (ranged)、[24] Resurrection复活缺失时取 Death 组的逆序播放。施法动画[30]/[31]/[32] Cast (up/front/down)。群体攻击[40]/[41]/[42] Group Attack (up/front/down)用于龙息、九头蛇等多目标攻击生物。传送动画[50] Teleportation start原位置播放缺失时用 movement start 代替、[51] Teleportation end目标位置播放缺失时用 movement end 代替。用 JSON 直接引用图片时只需在sequences里按组号列出帧文件即可注意该文档指出JSON 声明的组会完整替换原组即使原动画帧数更长。另外从 Readme.md 的文件布局约定看Mod 内的动画与图片集统一放在Content/Sprites/目录下生物 JSON 中graphics.animation/graphics.map引用的文件名会按此解析。小结生物创作检查清单先克隆一个现有生物如 castle.json 中的pikeman确认克隆体独立运行正常准备三类动画战斗、投射物、地图 两幅头像 最多 8 个音效战斗精灵正上方光源、阴影在后、阴影高度约为生物一半、RGBA 透明输出 GIMP 阈值去边地图精灵45° 仰角、等距/正交投影、阴影用圆锥投影法帧率可按高于 10 f/s 渲染再用animationTime调节播放速度动画帧按上表动画组编号组织.def或 JSON 二选一推荐 JSON 直接图片在生物 JSON 中补齐graphics、sound节点后放进 Mod 的Content/目录验证。如果你在更大的框架 Mod例如兵种族 Mod见 Faction_Help.md中添加生物以上资源要求同样适用只是生物 JSON 需要同时注册到所属 faction 的兵种列表里。赞分享游戏开发【免费下载链接】vcmiOpen-source engine for Heroes of Might and Magic III项目地址https://gitcode.com/gh_mirrors/vc/vcmi点击查看免费下载相关推荐Toonflow 3D 动画渲染风格场景图生成约束手册都市场景提示词规范与实战指南Toonflow 3D 动画渲染风格场景图生成约束手册都市场景提示词规范与实战指南 本文档系统拆解 Toonflow 开源 AI 短剧创作工具中 3D_ani人工智能大模型AI 应用AI Agent媒体生成后端桌面应用VCMI 生物配置格式详解Creature JSON 字段、图形动画与音效资产全解析VCMI 生物配置格式详解Creature JSON 字段、图形动画与音效资产全解析 本文为 VCMIHeroes of Might and Magic I游戏开发CANN/ops-nn批归一化梯度算子BatchNormalizationGrad 产品支持情况 | 产品 | 是否支持 | | | : :| |Ascend 950PR/Ascend 950DT|人工智能算子库深度学习CANNAscend上一篇写好游戏Prompt的8个技巧让OpenGame生成更专业的Web游戏下一篇ClawPanel的Agent与记忆管理图解多Agent创建、身份编辑与记忆ZIP导出创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进