本帖最后由 dablive 于 2022-4-17 16:01 编辑
本来打算先把mod改完再发的 属实误判工期 看了看圣典里关于建筑模型的部分好像比较少 先发个心得帖 一方面当作记录一方面如果有人看可以当作教程首先放个参考帖https://www.aoebbs.net/forum.php ... =%E8%A7%86%E9%A2%91
模型的话会自己修改最好 不会也问题不大(但是至少要看完圣典)
下面开始一些具体说明
1、模型基础(导入、设置坐标轴、贴图、透明度这些参考圣典里的内容 不展开细说)
1-1、模型贴图
模型贴图一般分为漫反射贴图(决定颜色)、法线贴图(决定凹凸 就是颜色蓝不蓝红不红的那个图片) 漫反射贴图按照圣典当中给出的贴图教程贴就好 法线贴图由于使用插件导出时一般会与高光挂钩 所以可以通过修改高光的部分来模拟金属材质或者高亮材质
具体差别如下(左边没有添加法线贴图 右边是添加法线贴图)
关于简单法线贴图的制作 首先要求需要拥有一张漫反射贴图 如果你的模型不止一张贴图而是好几张贴图的话 见1-2 法线制作需要到百度上搜索并下载crazy bump(具体用法顺手百度 不用担心太难 完全傻瓜级操作)这个软件体积比较小 也可以使用materialize 但是相对要麻烦一点 而且也比较容易卡 获得的法线贴图要和漫反射贴图一样处理成tga格式再转ddt 在tga格式下 修改图片的alpha通道 这个通道会在3dsmax的age3材质插件中被当成高光贴图来使用(没有这个3dsmax的去翻一下资源区) 法线贴图的alpha通道中 黑色部分是哑光 白色部分是高光 高光度依照黑白色梯度改变(高光效果是否正常显示与模型导出时的缩放大小有关(就离谱)模型缩放比例最好不要过大或过小 在1200左右比较好 否则导出后一定几率会高光错误) 法线贴图在下图红色框的部分进行添加 步骤与漫反射贴图一样 那个30那个参数可以不用管
然后 在导出模型的时候 如下列图片所示进行设置并导出
进游戏检查 可能会出现以下两种情况: 第一种是凹凸反了 这个是因为法线y通道反了 在制作的时候可以选择翻转y通道 如果不会也可以在ps里面将绿色图层反色 第二种情况是模型左右对称的部分左右一黑一白 一边是凸出来的部分到了另一边就变成凹下去 这个的原因就比较复杂 总体来说就是两边由于建模的时候的一些操作(比如复制)导致法线面向反了 也就导致不正常的一半是反着读取的贴图 这一情况要看建模软件 我个人使用的是su 可以通过导出obj再导入su然后用插件删除背面材质的方法进行解决 如果你是小白……不用查了我已经帮你们查过了 没找到啥有用的解决方法
1-2、模型减面与贴图烘焙(方法源于B站up主只剩一瓶辣椒酱的视频(BV1yC4y1t7Fq 第5p)) 主要针对当你在网上下载了一个模型 面数可能会很大 同时贴图很散乱、包含多个贴图文件 一个一个处理会很麻烦的这么一个情况 强烈建议建模小白熟练掌握所以自己能建模就建模吧 省很多麻烦 (之前展开以后发现篇幅太长所以删掉了 具体步骤见视频) 另外法线方向会决定烘焙成功与否 成功的烘焙需要模型正面朝外 见1-3 然后贴图uv在生成的时候要注意贴图大小 由于是贴图烘焙 所以会有很多重复贴图 在保证清晰的情况下建议设置大小为1024*1024
1-3、法线方向(不是1-1的法线贴图) 区分法线是否正确(模型正面朝外)可以在3dsmax中打开模型 如果模型各部分(各面)正常显示就是正确 如果存在透明现象 需要把模型转到背后才能看见那一部分面的话 就是法线反了 依如下步骤处理 (需要先选中模型再点)
这会让整个模型的法线都翻转过来 但是如果你的模型只有一部分面需要修改 就参考这个 选中单独的面再去修改(见1-5)
1-4、模型平滑 关于模型减面后有一种手法可以让低模看上去和高模一样柔顺 就是软边 比如原版的颐和园 3ds中操作如下 以新建立方体为例
(勾选面1和面2之后再操作 这一步图上忘记写了)
就可以看见边缘被柔化了 在制作一些曲面或者转折的时候比较有用 之后正常导出 游戏中就能看见软边效果了
1-5、模型拆分、合并
虽然很简单但是还是提一下说不定有用呢因为模型group和绑骨的流程有时候容易绕晕 所以单开一节模型基础课来尽量简化思路
如图
从上往下三个红框 需要像第一个红框里的这种可编辑网格或者多边形(mesh、poly)才有下面的几个框 如果是自己建的什么box啊teapot啊(圣典教程茶壶) 需要转换以后才能看见下面的选项(转换见1-4节末)
第二个框里是按类型选择 从左往右是点、线、面、形、体 选好以后赋贴图或者上修改器啥的都比较精准
第三个框attach是把别的物体合并进来 另一个detach是把物体分离出去 要注意的是合并进来以后材质会跟随主模型 需要用第二个框里的选择工具选好然后单独赋材质球
【22.3.9更新】
2、主城
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进行定位 导出的时候需要在材质中选择水体材质 具体如下图(这个水体材质仅限主城 游戏内无用)
2-5、道路(不是ground)
道路文件(pathable_area_object.gr2或者别的意思差不多的gr2)决定主城居民的行动轨迹 不能以空文件替代不然会游戏弹出
这个文件不需要附材质 但是需要改名 以中国的为例 模型改名为pathable_area_object然后直接导出就可以了 比例和原点同2-3
骨骼和路径节点见2-7
2-6、附件、装饰、火焰烟雾等特效
(日后更新)
2-7、定制主城、主城单位、主城相关(不完整)
文件都在data下 这里建议提取data3下的homecity相关文件 因为比datapy多
xxprops是单位的类型、附属建筑、所需经验 原版、土著、亚洲各一个
以国家为名的xml可以修改科技 末尾可以修改路径节点(在ground.gr2中绑骨)
protounits设置村民数量、行进速度等 不区分势力 亚、欧、土都在里面设置(理论上添加主城单位在此处添加)修改单位可以通过修改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、透明贴图、玩家色贴图
透明贴图和玩家色贴图不能出现在同一个面上 因为贴图插件不能使用复合通道 所以玩家色和透明的部分尽量分开在不同的面上(实在不行把透明那个地方单独框出来作为一个单独的面)如果是小白不会编辑模型 就不要把透明的地方和玩家色的部分放在一起就行了
单独的透明贴图和玩家色贴图见https://www.aoebbs.net/forum.php ... 9%E5%AE%B6%E8%89%B2 如果同一个模型同时拥有透明度和玩家色 需要参考前文1-5所述 把玩家色(或者透明色)部分的面单独选中然后赋予材质球 要注意材质球中透明度的下拉栏在点开别的页面之后会复原 所以要先定义玩家色 再定义透明度 可以避免插件自动回到玩家色的问题
4、建筑绑骨
4-1、骨架概述、创建
帝国3中只能读取一根独立骨骼 如果是两根独立骨骼会导致模型不显示 所以一般情况下都需要定义一根主骨 别的骨骼和主骨相连接成一条连续骨架 主骨名称一般没有要求 所以用创建出来的Bone01也可以 比较常用的有bone_main等 具体参考xml和原版建筑修改
骨骼创建见下图
创建的骨骼长度不限 但是也不要太长 建筑物的骨骼更多是起到一种指示作用 创建骨骼时建议在顶视图(默认在左上角)当中创建 因为骨骼的指向会决定建筑物的朝向 如果一个模型的正面与正视图相同 则骨骼默认指向正右
创建骨骼以后点击移动 并且将其起点坐标归零
建筑骨骼更详细的可以参考https://www.aoebbs.net/thread-1136-1-1.html 这个功能对建筑改模党可以说是十分及其非常友好了 不但能显示模型还能显示骨骼名称、骨骼轴向、骨骼关系等 能省去大量摸索骨骼的时间
4-2、旗帜绑骨、骨骼链接(因为最简单所以放第一个)
首先创建主骨 由于3dsmax创建骨骼的方式不是很容易将骨骼摆放到正确的位置 所以建议在旗杆的地方新建一根骨骼 指向正右 命名为bone_flag_civ
旗帜骨骼创建好后如下图所示
4-3、城门绑骨
城门绑骨有两个(或者是三个)要注意的地方
第一个是骨骼不需要用上面的方法来链接 直接如图链接就行(长度仅供参考 左边是主骨 右边是门的骨骼 命名为bone_door)
第二个是 门和门框要单独分开成两个物体(见1-5) 门框就按照正常位置摆放在地面上 但是门需要摆放在地面以下的位置(因为门和门框摆在一起门会飞到天上去) 如图
第三个是 因为隔太久了我有点忘记模型和骨骼的命名会不会有影响了  (一般情况下模型的名字无影响 骨骼的名字有些会有有些没有) 我这里一共是四个物体 门、门框以及主骨和门骨 名字如图 不确定的话直接完全按游戏里的来命名
至此 一个小白也能做的基本的建筑模型就已经做完了 破坏动画和倒塌动画需要有一定的模型编辑基础 所以如果是小白 建议把建筑文件夹中的death和damage两个gr2模型文件用上面做好的模型替换即可
4-4、破坏动画(简单其实简单 就是拆分模型很复杂 模型小白酌情阅览) )
破坏动画和倒塌动画需要把模型拆分成碎片 碎片越多效果越好 确切来说就是个体力活 以孔庙为例 原版孔庙的破坏动画拆了15个部件 倒塌动画拆了80个部件…… 当然自己弄用不了这么多 我做的两个动画加上只有9个部件
拆分部件的时候要注意留一个比较大的整体模型作为倒塌动画的基础 比如这个孔庙
拆分好碎片以后 分组导出 然后给碎片改名 最大的这个主体名字无所谓 其余碎片名字参照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 如图
4-5、倒塌动画(原版)(修正中)
倒塌动画是目前唯一一个不能自定义骨骼位置的建筑动画 即 倒塌动画的碎片和骨骼不能像破坏动画一样可以随意指定 倒塌动画是写在动画文件(death_anim.gr2)里的 所以每一个碎片、骨骼位置都是固定的 我参考的是孔庙的倒塌动画 找了四个位置接近、放在一起可以看作一个整体的碎片 分别作为左上、左下、右上、右下 所以模型第一步首先就是拆分成对应的四个部件(也可以拆得更多 前提是骨骼放在一起看上去比较整体即可)
而且正因为碎片写在动画里 所以主骨(BONE_MAIN 注意名字)的位置不一定是在原点 碎片骨骼的朝向、位置最好保持正右、链接在主骨上 如图(左边是主骨 右边是四个碎片骨骼重合 看上去像是一根骨骼 所有骨骼指向正右 下方是主骨的位置坐标)
倒塌骨架做好以后建议单独保存一份骨骼文件作为模板使用
倒塌骨架越小越好 最好为一个点 如果过大会导致碎片变形以及位置偏移(图上似乎能看得见骨骼 其实全景图里骨骼大概只有千分之一左右的大小)
四个碎片的名字以及骨骼名字需要与动画文件对应 我参考的孔庙文件编号为:04左上 06右上 18左下 07右下 比如左上碎片起名为Object04 骨骼为对应的bone_Object04
绑骨之后导出就可以了 要注意的是虽然骨骼位置是确定的 但是模型绑骨的时候是可以改变位置的 所以碎片为了更好的效果不一定要放在原位 可以进行移动 如图
4-6、倒塌动画(决定版)
决定版的倒塌动画不得不说使用了一个很聪明的方式 但是同时也带来了非常让人头大的问题 决定版摒弃了原版使用gr2动画进行倒塌动画演算的方式 转而将倒塌动画与破坏动画结合在一起 大幅降低了建筑动画制作的工程量 但是带来的问题就是它所使用的物理引擎 使得原版的破坏动画(注意与倒塌动画区分)在决定版中无法播放 无论是更换骨骼名称抑或是将决定版别的建筑gr2拉过来代替 都无法还原破坏动画(而且手边也没有havok没办法分析hkt文件) 并且破坏动画与倒塌动画的骨骼名称都重新进行了制作 与xml当中的文件已经完全不同
但是决定版依然支持原版的gr2动画播放 所以也可以按原版的制作方法全部做完然后连同原版的xml一起放进去
下面讲一下决定版建筑倒塌动画怎么做 改xml的过程不说了 请自行对比原版决定版 主要就是把deathmodel换成damaged 把deathanim删掉之类的工作
骨骼名称获取:用记事本打开hkt文件 会乱码 但是里面的骨骼名字不会 这个目的主要是方便复制(也可以用gr2 viewer打开 但是骨骼名字就得自己手打了)
然后 拆碎片 绑骨 记得留一个底座模型 绑在base上 这就是废墟模型 碎片骨骼的名称目前还没发现通用的 所以一套骨骼只能和原建筑对应
5、建筑特效、其他 (日后更新)
|