本来打算先把mod改完再发的 属实误判工期 看了看圣典里关于建筑模型的部分好像比较少 先发个心得帖 一方面当作记录一方面如果有人看可以当作教程
参考帖https://www.aoebbs.net/thread-944-1-1.html
模型的话会自己修改最好 不会也问题不大(但是至少要看完圣典)
简易建模帖 https://www.aoebbs.net/thread-1408-1-1.html
第一章(模型基础)移动至模型制作帖 https://www.aoebbs.net/thread-1374-1-1.html 不影响本贴内容完整性 后文如有提及不再重复网址
【22.3.9更新】【22.9.3更新】【22.10.14更新】【24.3.16更新】
2、主城
前排放一个效果预览 其中图一(原版)不包括镜头修改 图二(决定版)包含了镜头修改
关于帝国3建筑模型(原版/决定版)
关于帝国3建筑模型(原版/决定版)
2-1、镜头、背景板(不可编辑类)
1、镜头文件不能编辑 也就意味着要自制一个效果不错的主城目前只能看哪个国家的镜头顺眼搬过来用 当然如果是只替换主城建筑 没有什么太大的想法野心的话倒是没关系
镜头就是文件夹下的cam文件 主要是五个卡片建筑和主视角 剩下的什么作物镜头啥的看data文件夹里各自主城xml文件里的定义 见2-7 每个镜头会分成普通版和宽屏版(widescreen)这两个和分辨率挂钩 如果分辨率是以前那种1024/768的 就会使用普通版文件 反之什么1366/768、1920/1080就是宽屏文件 所以改镜头的时候一定要把两个镜头都拷过去
镜头和模型是分开的 五个卡片建筑的位置并不会影响镜头 但是毕竟镜头一定程度上决定了卡片建筑的位置 所以最好用同一组镜头和主城来修改(参考2-3) 或者自定义的建筑离镜头不远 镜头能照到 也可以大幅度修改主城模型会带来非常折磨的匹配相机的过程 除非必要 否则建议不要进行大改
2、背景板原版严格来说不是不能编辑 而是编辑了以后和原版区别会有点大 因为他的材质在3dsmax中似乎没有(类似自发光)但是毕竟是模型 要改也可以改 只是会受到雾气效果的影响 看上去灰蒙蒙的 没有原版那种透亮(主城照明文件参照圣典修改)可以调整图片亮度 但是必然会造成图片过曝等一些问题 可以配合圣典8-2进行贴图替换
背景板一般使用了多个贴图 贴图的修改属于入门操作 这里不做赘述
决定版背景板就很好办了 不但能自发光 还能做动态 参考前述模型制作贴
2-2、单体卡片建筑
单体卡片建筑比较好修改 就先放在前面来讲(更具体的往后看3-4及以后)5个建筑分别是5个单体模型 一般情况下 你拥有了一个模型 把模型放在原点 调整好比例 导出到对应的gr2文件上就能看见效果了(建筑定位见2-3)
然后关于卡片建筑和镜头的关系 卡片建筑如果你的模型放在轴上 点击的时候他自己会识别出来并且高光触发镜头 但是是有一个范围的 大概就是原来的建筑等大的一个立方体 所以模型可以偏移但是不能离太远不然无法判定出镜头
2-3、主城建筑群
主城建筑群修改的难点在于它们的原点很难找 而且比例也很难找 主要就是靠对比
主城建筑与是单体建筑区分开的 首先找到地板ground文件 然后用论坛里我分享的grnreaderX转成ms脚本 之前smd的那个方法会丢失骨骼 转好以后3ds打开
打开以后能够获得两个信息 一个是bone_main的位置一般情况就是轴心 第二个是其中的bone_xxbuilding等等骨骼用来定位单体建筑 所以要自定义单体建筑位置只要在ground文件里绑骨就行了(可以激活相机 但是相机轨迹不会变化 所以还是要用已有的相机文件)剩下一堆别的骨骼里有控制路径的节点 还有一些疑似和定制主城有关的骨骼(暂未研究)
然后就是确定建筑大小 轴心确定的情况下就很简单了 不断试就行了
老方法:首先先在游戏里找到一个够标识性的建筑群(地板或者离镜头近的建筑群都行)假设为A 然后用查看器找到这个文件A 再用空gr2把(除了道路以外 见2-5)别的都替换掉(3ds打开 直接导出gr2就是空gr2文件)
然后找一个单体建筑 改成任意一个建筑群的名字 进游戏看看他出现在哪里 那个地方就是原点的位置 找到原点以后 把A的gr2模型导出到3dsmax(不管哪种方法只要弄进去就行)然后调整一下方向、定位一下原点 这个文件我们称为假A
然后 把假A导出到不是A的别的建筑群文件里 就能看见他的位置、朝向、大小、是否翻转等等了 然后剩下就是反复修改反复导出 直到假A和A基本重合就可以了
当你找到了这样一个假A和A重合的模型时 这个模型就是定位剩下一切建筑位置和比例的基础 也是任意布局建筑、自定义主城(建模层面)的基础
2-4、水面
水面和地板根据2-3进行定位 导出的时候需要在材质中选择水体材质 具体如下图(这个水体材质仅限主城 游戏内无用)
决定版此方法也可以 同时也有新的制作方法 参考前述模型制作贴
关于帝国3建筑模型制作(长期更新)
2-5、道路(不是ground)
道路文件(pathable_area_object.gr2或者别的意思差不多的gr2)决定主城居民的行动轨迹 不能以空文件替代不然会游戏闪退
这个文件不需要附材质 但是需要改名 以中国的为例 模型改名为pathable_area_object然后直接导出就可以了 比例和原点同2-3
骨骼和路径节点见2-7
2-6、附件、装饰、火焰烟雾等特效
与圣典中关于游戏内模型的附件添加一致 需要对模型进行绑骨 再在xml中对附件进行引用(啥?你说你找不到火焰水流等引用的是啥文件?这边建议多翻翻别的xml和bar包 总会有收获的)
2-7、主城骨骼、路径节点
还好前文有提示 想起来这节本来打算写啥了事实证明不能拖更太久不然会完全记不住
如果是完全的自定义主城 主城地板(ground为名字的文件)需要进行绑骨操作才能保证效果 其中包含以下多个类型的骨骼:主城人物路径点、主城独立建筑定位点、探险家定位点(决定版)、主城装饰骨骼、主城运兵点
人物路径骨骼:决定主城内人物能否正常走动 如果不加人物会无动作乱散布 重要性最高
独立建筑定位点:决定要塞、皇宫、码头等等卡片建筑的位置以及镜头 鉴于建筑可以与主城配景建筑合而为一 且不考虑mod完整性的话可以适当去掉镜头移动 重要性次高
探险家定位点:决定版新增 决定探险家的位置 重要性低
主城装饰骨骼:决定主城装饰(如烟花、风筝等)在主城中的具体位置 重要性低
主城运兵点:决定发兵卡时士兵的行走动画 一般看不见 重要性最低
这些骨骼都需要在max当中绑定在ground为名字的gr2模型里 具体的骨骼名字可以通过查看器查看已有的ground模型的方式获得 参考https://www.aoebbs.net/thread-1136-1-1.html、https://www.aoebbs.net/thread-1152-1-1.html 如果gr2显示打不开 可在站内查找2.11.8版本gr2查看器
另外其实这些骨骼的名字在某个xml里有定义的 但是我现在忘记是哪个了目前记得主城相关的xml有art里的homecity等相关 还有data里的homecityprotounits等文件 这个是管主城内单位的 homecityprops这个是管解锁啊装饰之类的 亚王记得找asian前后缀(见2-9)
2-8、主城灯光
2-8的主城灯光指照明?
在homecity的<lightset>xxxx[注:无后缀名]</lightset>定义; 默认存放位置在,Ligetsets文件夹里面,格式是lgt,印象中好像是必须转xmb才有效
照明文件编辑可参照圣典https://www.aoebbs.net/tutorial-11-4.html的UI进行动态调整(不过仍然要你自己手动预设各种数值;决定版还删除了某些设定)。——by 羽大
感谢羽大挽救了这个我都忘了的章节翻了好半天以前的文档可算想起来是怎么个事了
决定版的话比原版多了蛮多东西的 原版灯光的lgt文件在决定版里作用有限甚至几乎看不出有些啥效果了 决定版的照明(特效相关)基本分成四个部分:lightsets里的lgt文件、实际控制灯光的luts文件 后缀名cube、控制pbr材质反射的hdri天空球refl文件、控制粒子效果的pkfx文件
其中的话 按原版rgb来调色的方案在决定版中效果不佳 最好控制色调的方式是移用cube文件 这个文件其实就是一个调色文件 类似什么达芬奇或者剪辑软件里用到的那种一样 理论上来说是可以用这些软件来生成然后自定义的不过我还没试(懒
refl文件基本没法自定义 包括游戏内地图也是会有hdri贴图的 不过修改后光照会变得很劣质 其实就是hdri读取失败 因为他需要转换格式 目前还没测试出转换的方法
pkfx文件经过查找 确定了是用popcornfx软件来生成的粒子效果 这个软件可以在官网找到新的试用版本 不过不知道帝国是属于定制还是什么 截至2022年下载的版本 无论是读取帝国的粒子 还是将软件的实例粒子放入帝国均不能成功
综上 决定版内修改光照不像原版那样便捷 还没有一个比较成熟稳定的步骤去完美实现 绝对不是我停更找的借口 如果后面找到了更方便的方法我再去更
2-9、定制主城、主城单位、主城相关
文件都在data下 这里建议提取data3下的homecity相关文件 因为比datapy多
xxprops是单位的类型、附属建筑、所需经验 原版、土著、亚洲各一个
以国家为名的xml可以修改科技 末尾可以修改路径节点(在ground.gr2中绑骨)
protounits设置村民数量、行进速度等 不区分势力 亚、欧、土都在里面设置(理论上添加主城单位在此处添加)修改单位可以通过修改xml文件来实现 就不必去绑主城单位的骨骼了 绑兵种单位的骨骼调用xml的行走动画即可
由于主城村民和游戏内单位的骨骼不同 所以将主城村民替换到游戏内的做法会导致失败(或者更改动画引用) 但是反过来游戏内单位是可以进入主城的(毕竟有运兵动画)所以只需在xml中更改引用即可更换村民模型 也即是如果有自定义主城村民模型的需要 以目前通行的人物绑骨教程进行绑骨即可实现
3、建筑相关
3-1、碰撞体积、选择框贴图
在data-protoy文件中更改建筑占用宽度 如果要新增建筑也在里面编辑 参考圣典2-1
<ObstructionRadiusX>是建筑宽度 <ObstructionRadiusZ>是建筑长度
在该建筑的xml中<selectedtexture>可以更改地面贴图
(其余条目与模型关系不大 可以自行查看并修改)
该建筑xml下<selectedtexture>条目定义选择框贴图 在下面width和height更改选择框的大小 有时候上面参数拉伸太大会导致选择框变形 可以手动修改贴图修复
3-2、废墟、脚手架
protoy里建筑条目下的<DeadReplacement>是废墟文件
如果有需要 可以在protoy里新增废墟单位 然后修改buildings-rubble下的xml文件
脚手架需要在该建筑的xml下 带有construction字样的条目定义 因为定义的是一个单独模型文件 所以有需求的时候制作一个模型放里面就行了 不需要到protoy里新增单位
3-3、建造动画
该建筑xml中会有三个阶段的建造动画定义 因为脚手架单独调用 所以只需要制作建筑物自身的构造模型就行 建造模型需要调用透明贴图 具体见4-1
在建筑xml文件底部<logic type="BuildingCompletion">的地方会定义构造动画的进度
3-4、透明贴图、玩家色贴图
原版透明贴图和玩家色贴图不能出现在同一个面上 因为贴图插件不能使用复合通道 所以玩家色和透明的部分尽量分开在不同的面上(实在不行把透明那个地方单独框出来作为一个单独的面)如果是小白不会编辑模型 就不要把透明的地方和玩家色的部分放在一起就行了
决定版可以通过detail文件进行控制 所以不存在这一限制 玩家色与漫反射可以进行叠加了 (detail文件太简单了所以没有参考贴 不过也可以参考前述决定版参考贴)
单独的透明贴图和玩家色贴图见https://www.aoebbs.net/thread-661-1-1.html 如果同一个模型同时拥有透明度和玩家色 需要参考前文模型制作帖1-5所述 把玩家色(或者透明色)部分的面单独选中然后赋予材质球 要注意材质球中透明度的下拉栏在点开别的页面之后会复原 所以要先定义玩家色 再定义透明度 可以避免插件自动回到玩家色的问题
4、建筑绑骨
4-1、骨架概述、创建
帝国3中只能读取一根独立骨骼 如果是两根独立骨骼会导致模型不显示 所以一般情况下都需要定义一根主骨 别的骨骼和主骨相连接成一条连续骨架 主骨名称一般没有要求 所以用创建出来的Bone01也可以 比较常用的有bone_main等 具体参考xml和原版建筑修改
骨骼创建见下图
关于帝国3建筑模型(主体更新完成 细节待加)
关于帝国3建筑模型(主体更新完成 细节待加)
创建的骨骼长度不限 但是也不要太长 建筑物的骨骼更多是起到一种指示作用 创建骨骼时建议在顶视图(默认在左上角)当中创建 因为骨骼的指向会决定建筑物的朝向 如果一个模型的正面与正视图相同 则骨骼默认指向正右
创建骨骼以后点击移动 并且将其起点坐标归零
建筑骨骼更详细的可以参考https://www.aoebbs.net/thread-1136-1-1.html 这个功能对建筑改模党可以说是十分及其非常友好了 不但能显示模型还能显示骨骼名称、骨骼轴向、骨骼关系等 能省去大量摸索骨骼的时间
4-2、旗帜绑骨、骨骼链接(因为最简单所以放第一个)
首先创建主骨 由于3dsmax创建骨骼的方式不是很容易将骨骼摆放到正确的位置 所以建议在旗杆的地方新建一根骨骼 指向正右 命名为bone_flag_civ
旗帜骨骼创建好后如下图所示
关于帝国3建筑模型(主体更新完成 细节待加)
4-3、城门绑骨(原版方法)(由于决定版已经支持自制动画 因此城门(以及舰船的收放帆)可以将原本上下开合的动画制作为左右开合 故将次节划分为原版与决定版 决定版方法待日后补充)
城门绑骨有两个(或者是三个)要注意的地方
第一个是骨骼不需要用上面的方法来链接 直接如图链接就行(长度仅供参考 左边是主骨 右边是门的骨骼 命名为bone_door)
关于帝国3建筑模型(主体更新完成 细节待加)
第二个是 门和门框要单独分开成两个物体(见1-5) 门框就按照正常位置摆放在地面上 但是门需要摆放在地面以下的位置(因为门和门框摆在一起门会飞到天上去) 如图
关于帝国3建筑模型(主体更新完成 细节待加)
第三个是 因为隔太久了我有点忘记模型和骨骼的命名会不会有影响了
(一般情况下模型的名字无影响 骨骼的名字有些会有有些没有) 我这里一共是四个物体 门、门框以及主骨和门骨 名字如图 不确定的话直接完全按游戏里的来命名
关于帝国3建筑模型(主体更新完成 细节待加)
——————————————————————————————————————————————————————————————————————————————————
至此 一个小白也能做的基本的建筑模型就已经做完了 破坏动画和倒塌动画需要有一定的模型编辑基础 所以如果是小白 建议把建筑文件夹中的death和damage两个gr2模型文件用上面做好的模型替换即可
——————————————————————————————————————————————————————————————————————————————————
22.10.03更新后文内容预览(翻到的以前老视频 倒塌动画错位未调整 图中所示为原版效果):关于帝国3建筑模型(原版/决定版)
4-4、原版破坏动画(简单其实简单 就是拆分模型很复杂 模型小白酌情阅览) )
破坏动画和倒塌动画需要把模型拆分成碎片 碎片越多效果越好
确切来说就是个体力活 以孔庙为例 原版孔庙的破坏动画拆了15个部件 倒塌动画拆了80个部件……当然自己弄用不了这么多 我做的两个动画加上只有9个部件
拆分部件的时候要注意留一个比较大的整体模型作为倒塌动画的基础 比如这个孔庙
关于帝国3建筑模型(主体更新完成 细节待加)
拆分好碎片以后 分组导出 然后给碎片改名 最大的这个主体名字无所谓 其余碎片名字参照xml最顶端的定义(如debris_1A之类的)来命名 碎片要放在建筑的原位上而不是原点 并且需要缩放的时候要和建筑主体一起缩放
每一个碎片骨骼要放在碎片自己的中心 碎片骨骼的朝向似乎对飞行方向有影响 骨骼名字要和碎片的名字对应 比如碎片叫debris_xx 那碎片骨骼就叫bone_debris_xx
在xml文件当中定义的碎片名字会有1A、1B、2A、2B等等 依照名字前面的顺序来分成1组2组 当把碎片骨骼建立好之后 需要在主骨骼bone_main上拉出骨骼(城门那样连着)并且命名为boneimpact01(2组就是boneimpact02 以此类推)这个我们称组骨骼
组骨骼的方向没有要求(似乎会对碎片飞行方向有影响)接下来就是把
碎片骨骼依照数字分组分别按旗帜绑骨的方法链接到
组骨骼上(1A就连01 2A就连02)
但是我之前把2A 2B 2C三个骨骼都链接到1A上了 也能飞 有点迷
这样破坏动画就完成了 导出的时候需要在mesh层级下关闭骨骼的mesh 如图
关于帝国3建筑模型(主体更新完成 细节待加)
关于帝国3建筑模型(主体更新完成 细节待加)
4-5、原版倒塌动画
倒塌动画是目前唯一一个不能自定义骨骼位置的建筑动画 即 倒塌动画的碎片和骨骼不能像破坏动画一样可以随意指定 倒塌动画是写在动画文件(death_anim.gr2)里的 所以每一个碎片、骨骼位置都是固定的 我参考的是孔庙的倒塌动画 找了四个位置接近、放在一起可以看作一个整体的碎片 分别作为左上、左下、右上、右下 所以模型第一步首先就是拆分成对应的四个部件(也可以拆得更多 前提是骨骼放在一起看上去比较整体即可)
而且正因为碎片写在动画里 所以主骨(BONE_MAIN 注意名字)的位置不一定是在原点 碎片骨骼的朝向、位置最好保持正右、链接在主骨上 如图(左边是主骨 右边是四个碎片骨骼重合 看上去像是一根骨骼 所有骨骼指向正右 下方是主骨的位置坐标)
倒塌骨架做好以后建议单独保存一份骨骼文件作为模板使用
倒塌骨架越小越好 最好为一个点 如果过大会导致碎片变形以及位置偏移(图上似乎能看得见骨骼 其实全景图里骨骼大概只有千分之一左右的大小)
关于帝国3建筑模型(主体更新完成 细节待加)
四个碎片的名字以及骨骼名字需要与动画文件对应 我参考的孔庙文件编号为:04左上 06右上 18左下 07右下 比如左上碎片起名为Object04 骨骼为对应的bone_Object04
绑骨之后导出就可以了 要注意的是虽然骨骼位置是确定的 但是模型绑骨的时候是可以改变位置的 所以碎片为了更好的效果不一定要放在原位 可以进行移动 如图
关于帝国3建筑模型(主体更新完成 细节待加)
4-6、决定版破坏动画+倒塌动画
决定版的倒塌动画使用了一个很聪明的方式 即破坏动画与倒塌动画合并为damage文件 大幅降低了建筑动画制作的工程量 但是由于物理引擎的更新 使得决定版的破坏效果没有了原版放烟花那样的震撼 总体感觉软趴趴的 并且也使得原版的破坏动画(注意与倒塌动画区分)在决定版中存在问题无法正常播放(见4-7)
注意:决定版建筑动画的骨骼都进行了重新制作 与xml当中的文件名称已经完全不同 因此不能看见xml中有各项骨骼就想当然在决定版中进行制作
决定版依然支持原版的gr2倒塌动画(不是破坏动画)播放 所以对于倒塌动画 也可以按原版的制作方法全部做完然后连同原版的xml一起放进去
下面讲一下决定版建筑动画怎么做(改xml的过程不说了 请自行对比原版决定版 主要就是把deathmodel换成damaged 把deathanim删掉之类的工作)
骨骼名称获取:用gr2查看器打开要修改的决定版建筑的原dagame文件 下方菜单中找到mesh list并任意右键一个组件view in detail 在里面可以看见其所绑定的骨骼及名称(也可以用记事本打开hkt文件 但是大部分是乱码 不方便查找 好处是不用手打)
然后 拆碎片 绑骨 流程同原版碎片绑骨 记得留一个底座模型 设置主骨为base 将底座绑在base上 这就是最后才会消失的废墟模型 碎片骨骼的名称对破坏效果有影响 且两个建筑之间似乎不能通用 所以骨骼制作最好和原建筑相对应
4-7、决定版破坏动画2(研究及思考记录)
在上文内容尚未研究成功之时 本人曾结合多个mod思考如何绕过决定版动画并还原效果 最终思考出两个替代方案 然而均以失败告终(或是无法复现 或是效果不尽人意)此处仅记录思考研究过程
第一个方案是使用原版方法制作gr2 然后用原版xml替换新版xml(该案例是由本人在决定版中读取自由之战战舰模型发现 但是由于自战新版已经采用全新的制作流程 且已经使用上微软官方的制作工具 因此用max无法复现 碎片信息记录如下)
使用原版流程制作时 无论是更换骨骼名称 或是将决定版别的建筑gr2拉过来替换 都无法还原破坏动画(无帝国使用的havok没办法分析hkt文件)
221025最新收获 倒塌动画需要配合dmg文件进行制作 dmg文件内定义的是碎片的相关信息
221124经实测,原版倒塌动画在de中仍起作用,但是运行效果有点奇怪,以原版亚洲领事馆为例,如果该单位(如领事馆)使用的是原本的模型(如领事馆),则受到攻击时看不见明显的破坏动画。如果将模型(如领事馆)替换到另外一个单位上(如城镇中心),则攻击至余三分之二血量时可看见明显的破坏动画,初步推测是与单位血量,即承受攻击次数相关联。具体相关语句尚未发现。
第二个方案 由于在xml中对于模型logic=destruction下 p=xxx其实是对于血量百分比的定义 因此可以手动将p设置为不同的血量 并据此读取不同的模型与动画 结合max中的动力学 实现对建筑破坏的分阶段破坏过程还原 缺点是无法与实际游戏中的受击过程相匹配(毕竟是预制动画)
5、其他(后记)
关于帝国3建筑制作 由于本贴更新周期过长 导致已经忘记了本来本部分应该写啥 依据之前留存的提纲 本节应该讨论一下制作时需注意的一些 比较主观的、非技术层面上的问题
帝国3由于是3d游戏 在制作建筑的时候 其比例通常与现实相接近 但是又由于是rts 制作时不能做得过大 因此一个基本大小(如住房)的单体房屋一般以能放下一张床且只够放下一张床为多见 在建筑需要体量但是又无法以正常比例进行铺开的情况下 可以将建筑整体拔高 比例以1.25为适中 这样视觉上整栋房子显得更大了 但是占地面积其实并没有实际增加
另外 帝国原版与决定版在风格上有些微的区别 制作时不能完全以写实为核心 鉴于大部分制作者仅停留于制作贴图这一步骤 风格化便成为最需要注意的因素
再另
希望各位制作者在制作贴图时记得把亮度调低 不然每个模型都是发白的 很影响观感或者见本人另外一贴 其中有模型发白的解决方案