【教学02篇】【车辆模型替换】PC的坦克世界MOD教室 [zt]
浏览(335 + ) 作者: clq 发表于 2023-10-18 23:37:57
编辑
关键字:
https://www.bilibili.com/read/cv1831058/?spm_id_from=333.999.collection.opus.click
----------------------------------------------------------------
【教学02篇】【车辆模型替换】PC的坦克世界MOD教室
2019年01月07日 18:111889浏览 · 23喜欢 · 65评论
APTXPC
粉丝:226文章:11
已关注
B站版专用前言
想要无脑快速替换模型的同学请直接到本文评论区的置顶评论的楼中楼内下载我自己写的模型替换软件,想要精细替换的请百度搜索“坦克世界通用模型加载器”,或者在本站搜索用户ATACMS,这是加载器的原作者,就是我教程里常提的a大。
b站网页版专栏文章只能修改3次,因此本文的后续更新都不会同步更新网页版。在wot贴图要求非常严格的今天,本文的网页版有许多地方已经严重过时,不适合继续阅读,因此请务必到本文评论区下载离线版,.请务必到本文评论区下载离线版,.请务必到本文评论区下载已经更新了最新内容的离线版,网页版请不要再看了,会误导你的。
本系列教程旨在尝试教会大家如何去制作和研究坦克世界的mod,我希望的这个“教会”不仅仅是知道“如何做到”,而是知道“为什么可以这么做”。
本系列教程分为网站版(比如你现在正在阅读的就是网站版)和离线版。
由于b站的排版等问题,强烈推荐各位到评论区下载离线版阅读,离线版不仅排版更好,而且更新更加及时(网站版的内容可能落后于离线版)。
你现在看到的是2.0版本的“【车辆模型替换篇】”。
评论区的离线版下载地址还包含了教程中用到的一些软件和资料等。
虽然有些重复,但还是再强调一下吧,本系列教程不是特别吃游戏版本号,如果你从本系列教程中学会了“为什么可以这么做”,那么游戏别说更新到1.0版本,就是更新到5.0你也能应付自如(网上现在很多12年的教程的思想拿过来依然可以用在9.22甚至1.0系列版本,可谓新旧版本两开花)。
0 前言
观看本篇前请确保已经阅读并读懂本系列教程前面几篇的内容,本文会默认你已经读过并且理解了前文的知识,如果你是缺乏知识的新手,推荐先去阅读前面的教程,否则可能大幅增大本文的理解难度。
本文面向mod新手,难免啰嗦,有基础的同学可以只阅读文中标蓝和标红的文字节省时间,当然通过目录快速查找也是可以的(目录可以点击)。
如标题所言,本文会告诉你如何将A车的外观变成B车。当然,你可以选择“百变涂装”类软件实现简单的一键替换,或者可以用一些简单粗暴的办法快速替换。但软件并非尽善尽美,暴力替换也存在隐患。本文会通过系统教学让你真正学会模型替换。此外本篇的内容对于未来的教程也是必不可少的前置知识。
本教学采用的游戏版本为国服0.9.22.0.1版本,文中的具体操作内容可能随着游戏更新逐渐失效,但理念可能依然有效,请合理取舍。
不要无脑全信所有内容,毕竟我也不是什么官方人员,部分理解可能存在偏差甚至错误,发现有错请理智看待,另外恳请指正。
为了排版效果缩小了部分图片,但图片的原始清晰度没有压缩,看不清图片的时候把文档放大就清晰了。
最后依然感谢A大,T神,V大等人无私的科普教学,正是有了你们的先驱研究,才有了本文。
1 车辆模型基本理论
1.1 模型文件目录结构
根据基础篇的叙述,找到车辆模型文件的存储路径对大家来说应该不成问题,如图:
“vehicles_level_xx”系列文件中存储的都是与车辆模型相关的文件,按等级区分,而旧版客户端中则是按照国籍区分,也许wg哪天心血来潮又会改成其他区分方式。
“shared_content_sandbox”和“shared_content”这两个文件里面也有部分车辆模型和贴图文件,缺失文件可到这里找。
shaders文件内保存了所有渲染器,想要更换渲染器的话都可以在这里找,渲染器的定义可百度先看一下,更具体的以后再说。
scripts文件中保存了车辆配置文件。
然后你现在回过头去看基础篇,不难发现我们的例子是德国的3001p坦克,这是一辆6级坦克,故模型存储是“vehicles_level_06.pkg”和“vehicles_level_06_hd.pkg”这两个文件中。打开后目录依次为“车辆”-“国籍”-“坦克型号”,最终看到如下目录:
collision_client文件夹:客户端碰撞模型保存目录。
Normal文件夹:坦克正常状态模型保存目录。
Crash文件夹:坦克被击毁的模型保存目录。
Track文件夹:分节履带目录,高清车专属,非高清车没有。
Normal,Crash以及collision_client文件夹组织方式相似度很高,一起说。这类文件夹内都有多个以“lod”开头的文件夹,每个lod文件夹中都保存了一组车辆模型文件,其中lod0的模型一定最完整。
从lod0开始,lod后面的数字越大,说明里面保存的模型文件的精度越低。之所以搞这么多组不同精度的模型是为了减轻电脑负担,当你近距离观察坦克时,你能清楚的看见坦克的每一个细节,这时调用lod0也就是精细度最高的模型文件进行显示;而当你距离坦克很远的时候,你看不清这些细节,也就没有必要渲染这么高精度的模型了,要知道模型越精致,渲染时对电脑的压力就越大。因此这是一种优化手段。
碰撞类模型由于不是为了显示而是用于物理计算的,因此不需要区分lod,也就没有lod文件夹而直接存储模型文件。
打开任意一个lod文件夹就能看到模型文件了,如下图:
很容易看出这些文件是三个一组,通过文件名的翻译很容易知道每组文件属于该车哪个部分的模型。
1.2 模型文件的构成
WOT的车辆模型分为外观模型和碰撞模型。外观模型就是我们在游戏画面中看到的模型;碰撞模型则是一个透明的模型,该模型是实际的车辆模型,车辆的真实大小,装甲分布等信息都保存在该模型上,它负责与物理引擎交互。可以这么理解,外观模型相当于皮包公司,空有其表,外观模型模型的改变不能改变车辆真实的情况。
下图红圈处是一个储物箱,你能在游戏中看到这个物件,但如果从图片的角度对其开火,炮弹会直接穿过它,这就是只有外观模型而没有碰撞模型的例子。
外观模型又细分为正常模型和击毁模型两类,因此加上碰撞模型共有三类模型(按照基础篇我陈述的机制以及实际考察可知,碰撞模型实际上又分为客户端碰撞模型和服务端碰撞模型)。
这三类模型中每类都由一组小模型组成,一辆车共有车体,炮塔,炮管以及悬挂(底盘)四组小模型,每组小模型又有一个或者多个模型包(如一辆车可能有多杆火炮),每个模型包由三个文件组成。
三个文件分别为Visual文件,primitives文件以及model文件。
Model:引导文件,负责指示模型本体位置和控制lod显示情况;
Primitives:模型本体文件;
Visual:同名的Primitives文件的专属配置文件,内含相应模块的装配位置,渲染器使用情况及贴图参数三类信息。
下图就是一组车体的模型包:
2012年多玩论坛的terryzxc(简称T神)画过一个车辆模块组成图,他使用IS-7这辆苏联10级坦克作为例子。图片如下,我相信看过了基础篇和我本篇前面介绍的同学都能看懂:
1.3 标清时代与高清时代的模型变革
1.到目前为止,可能大家发现了一些违和感,比如我一口一个“primitives”文件,T神的组成图也是如此。但我的实战图片中却是后缀为“primitives_processed”的文件。这是由于游戏更新,所有车辆配置文件的后缀名均发生了改动,primitives变成了primitives_processed,visual 变成了visual_processed,而旧版文件可通过改名的方式直接兼容新版本。注意,因为系统只认新的后缀名,故改名只是为了让系统识别,实际上文件还是旧版的,不过不影响使用就是了,简而言之,改了名字的你还是你。而为了方便,文中有时候会省略“_processed”后缀进行叙述。
2.对于所有车来说,不管你是否属于高清车,相应的悬挂模型“Chassis.primitives”中都包含了悬挂模型以及两条履带模型,这也是T神称该模块为“底盘”的理由。
当车辆高清化后,分节履带作为一个新的模块加入高清车的模型组成部分,这就是“Track”文件夹。也就是说高清车实际有五个模块。而在T神活跃的年代,高清车并没有出世,全是标清车,因此他的组成图中没有分节履带的部分。那么这个意思是高清车的“底盘”模块就彻底分家为悬挂和履带两部分了么?NO,为了照顾低配玩家,“底盘”这一模块被保留,当你在游戏启动器中选择高清画质后,所有高清车的“底盘”模型也就是“Chassis.primitives”文件中的履带会被屏蔽,系统会使用分节履带模块进行替代,非高清画质则反之,根据A大的说法,超过lod0的距离后会强制使用原来的标清履带以节省电脑资源。
至于分节履带的知识和对“Track”文件夹的探索也留到以后再说。
PS:截止9.20.1.2版本,即使使用高清客户端,分节履带也只会在lod0生效时启用。
1.4 贴图的构成
后缀名为“.dds”的文件都是贴图,贴图的知识留到涂装制作篇再详解,本篇中只需要知道这些文件都是贴图就好。
2 车辆换模基本理论
2.1 模型替换的定义
所谓车辆换模,就是把一辆车的外观模型的部分或者全部换成其他车辆的模型,换模的最小单位是模型包。
2.2 模型替换注意事项
1.模型可以全部替换,如A车整个换成B车;也可以部分替换,如只把A车的炮塔换成B车的,其他部分依然用A车的原装模型。
2.同理,可以把A车炮塔换成B车炮塔,然后把A车车体换成C车车体,换模完成后的A车将变成三辆车组成的新车。
3.换模技术仅能做到外观替换,碰撞模型无法改动。所以不要想着我把小车的模型换成大车就能在游戏中更容易的打中该车(就是基础篇提到的WOT游戏机制的应用)。
4.换模会导致所有被替换的车辆都换成同样的模型,想要单独替换的需要研究脚本或者使用A大的本车模型通用加载器。
2.3 模型装配详细流程介绍
回到基础篇阅读那个详细流程,里面就是相关知识。阅读时注意结合本篇前文的知识去理解(尤其结合T神的组成图)。
2.4 模型替换切入点
看完详细流程后,我需要你认真思考一下,你能从该流程中想出几种替换方案。
我这里给出几种方案:
方案1:修改车辆配置文件中保存的模型引导文件路径。
方案2:修改引导文件中保存的模型文件路径。
方案3:直接替换模型文件。
其中方案2可以衍生为控制lod达到在不同观察距离下加载不同模型与贴图的效果。
3 准备一个演示用实例
在我们制作组翻拍少战的过程中有一个实际的替换案例,摄制组要求技术部准备一个能够将苏联的“ms-1”坦克替换为一辆全新的组合坦克的mod。该坦克由M4谢尔曼的底盘、白板炮塔、白板炮以及M4A3E8谢尔曼的车体组成。本篇接下来的部分将会分别使用之前提到的几种方案完成替换,实际操作使用的游戏版本为0.9.20.1.2。
下面两图中前一张是替换前的图,后一张是替换后的图(我这里用了一个少战mod所以替换后显示的是特殊涂装):
PS:模型替换在实战中基本只使用一个方案,之所以要了解其他的方案是因为这对之后的模型修改与制作的学习有很重要的帮助,所以不要觉得无用就跳过。
4 模型文件替换法
4.1 替换流程简述
1.提取相关车辆模型文件。
2.按照mod要求组织文件目录结构。
3.精简无用文件。
4.替换关键模型文件。
4.2 提取车辆模组
首先从替换要求中获取一些有用的信息。被替换的车辆是ms-1,你可以通过百度之类的办法确定这辆车的国籍和游戏等级。本例中ms-1是苏联车,等级为一级;同理,M4谢尔曼是5级美国车,M4A3E8是美国6级车。
接下来根据基础篇以及本篇前面的知识去提取文件,分别在:
??\World_of_Tanks\res\packages\vehicles_level_01.pkg\vehicles\russian\R11_MS-1\
??\World_of_Tanks\res\packages\vehicles_level_05.pkg\vehicles\american\A05_M4_Sherman\
??\World_of_Tanks\res\packages\vehicles_level_06.pkg\vehicles\american\A06_M4A3E8_Sherman\
这三处路径下找到三辆车的模型文件。我强调一下,hd系列文件只有贴图,对于模型替换用处不大,换模时不需要去提取。
4.3 组织目录结构
实际上本小节的内容在基础篇已提过,等价路径原则,因此这里我直接给结果,下图是组织完毕后的mod目录:
PS:温馨提示,做研究前记得清空mod目录以防万一,另外也方便打包。
4.4 替换关键模型文件
按照需求,这次我们要对ms-1的所有模块进行替换。而替换只能动外观模型,故“collision_client”文件夹不做更改,改动“normal”文件夹和“crash”文件夹(当然如果你实际需求不同也可以只动其中一个文件夹内的文件)。
我们先从车体替换开始。进到“R11_MS-1\normal\lod0”内,接着打开“A06_M4A3E8_Sherman\normal\lod0”。按照理论将后者lod0内的“hull.visual_processed”和“hull.primitives_processed”文件复制到前者的lod0文件夹内覆盖,两个文件不能少,前面说过一个是模型本体,一个是配套的模型配置文件。
可是我从
“vehicles_level_06.pkg\vehicles\american\A06_M4A3E8_Sherman\”路径下却提取不到这组“hull”文件。于是我们按照前文的理论在“shared_content_sandbox.pkg”文件中提取到了相关文件,完成了替换。
这只是替换完成了一部分,不过你已经可以打开游戏检查一下成果。如果一切顺利,你将会看到当ms-1处于正常状态且观察距离在lod0范围内(具体是多少观察范围之后再说)时车体模型已经变成了我们想要的车体,如下图所示:
但当你观察范围超过lod0的距离后会变成这样:
可以看到车体模型已经恢复了原车模型。而如果将该车击毁,那么模型会无视观察距离始终显示原车的击毁模型。至于头飞上天的问题我们之后再来探讨,当前暂且放下。
为了解决远距离模型恢复问题,你需要将lod1,lod2等等文件夹内的hull系列文件都替换,而击毁模型的修改则需要对“crash”文件夹也再来同样的对位替换。全部完成后车体部分才算完事。
车体换完后别着急松气,还有悬挂、炮塔、火炮都要做同样类型的处理,仅仅一个lod就这么多文件:
这要是换完的话一趟下来得累的够呛,所以该方法到此为止,不再继续进行。
PS:温馨提示,对模型文件进行替换后不需要重启游戏,只需切换到另一辆车后再切换回被替换车辆就能直接看到效果,很方便(A大也就是atacms搞了个插件可以按F5生效,有兴趣可以试试)。
5 引导文件替换法
该方法只需要替换后缀名为“.model”的文件就行,比如上一章换车体,替换“hull.model”这一个文件的效果等同于替换“hull.visual_processed”和“hull.primitives_processed”两个文件。这样一来总共就能少换一半的文件。如下图所示,一个lod文件夹内只需要这些文件就ok了:
这还没完,之前都是从文件外部上下手,逐个替换,现在我们从文件内容入手,即对lod0目录下的“chassis.model”文件尝试采用xml文件的处理方式打开,得到如下内容:
上图中最关键的是第9行到第11行。
第9行的意思是超出当前lod的显示范围后下一个要使用的lod模型的路径,在本例中超出lod0的显示范围后要调用lod1的hull模型显示。
第10行的意思是超过多少距离后显示下一个lod,本例中的意思是观察距离超过32米就会显示lod1的模型组。
第11行的意思是当前lod调用的模型组文件名,本例中就是“hull”系列模型组文件。
PS:第9和第11行的路径中不需要填写文件后缀名,当前版本默认是“.model”,也就是指向的文件你得加后缀,不能省。
PS2:lod的显示距离有承接性。每个lod的启用距离是上一个lod的结束距离后一米,而结束距离是第10行的那个距离值,单位固定是“米”。比如本例中lod1的显示距离是33米到64米。另外lod0的开始显示距离默认是0米。
PS3:9~11行在部分model文件中可能分开或乱序排列,因为按照基础篇的原理这三个标签都是平级的,故可以这么做。
让我们来将上面的知识用于实战:修改第10行的距离参数,比如改为1000,这样lod1及后面的lod就相当于失效了,因此lod1以及其他lod目录就不再需要替换;而直接删掉第9和第10行也能达到同样的效果,两个办法都行。
使用这种改进型办法后要处理的文件更少,替换工作也更简单。
这还没完,既然11行能控制要显示的模型路径,那么完全可以不进行.model文件的替换而直接对其内容进行修改:把路径换成要替换的模块的路径,然后删除第9和11行就能完成替换,这样就又少了替换.model文件的步骤。这时甚至已经不再需要提取另外两辆车的模型文件,只需要知道他们的路径就行,下图就是操作结果:
这么一套组合拳下来,最终我们做车辆替换的流程就简单了很多。
6 小结
6.1 两种方案的对比
前面两章我们讲了两种替换办法,这两种办法是一种演进关系,接下来的第三个方法则会是更高层次的进化。但在开始讲解新方法前我们需要先整理一下思路并解决一些积累的问题。
首先是模型文件替换法的流程:
1.提取相关车辆的完整模组。
2.按照mod要求组织文件目录结构。
3.精简无用文件。
4.替换关键模型文件。
然后是引导文件修改法:
1.提取被替换车辆完整模型文件,获取替换模型路径。
2.组织mod目录。
3.精简无用文件。
4.修改每个模块的引导文件内容。
看上去步骤似乎没有少,但仔细分析一下:
第一步减少了提取的文件数量,只需要提取被替换车的而不是所有车辆的模型文件。
第四步不再需要繁琐的替换大量的文件,只需要分别对normal和crash目录内的lod文件夹下的几个.model文件进行修改即可。这样大幅减少工作量的同时也减少了重复替换出错的概率,另外做成的替换mod也更小,文件更简洁。
6.2 解决历史遗留问题
如果你跟随前文进行实际操作的话,在替换火炮模型时一定遇到一个问题。如下图,左边是M4谢尔曼,右边是ms-1。看出问题了么,首先我需要在左边“gun_xx”系列文件中找到M4的白板炮,然后分别修改ms-1的gun_01.model和gun_09.model文件中的相关内容来完成替换,可我不知道哪个编号的火炮才是谢尔曼的白板炮:
M4谢尔曼的火炮模型有7组,难不成要一个个试?
我相信看到上图的你一定是:
不止如此,当替换到底盘模型的时候,你还会发现:
合着搞了半天这两方法都是逗比啊!别激动,这两个方案虽然用在模型替换上有问题,但当你研究到模型的修改甚至自创模型时他们的原理就能用得上了。因此我建议还没有实际操作,只是看我教程纸上谈兵的同学最好真正的用这两个方法换一下模型,当然只换一个车体模型就好。
7 配置文件替换法
这个方法也是目前“百变涂装”软件所使用的换模方案,可见其优越性。
事先说明,由于我是针对性研究,因此部分细节参数并没有做认真了解,而这些细节参数可能会导致换模结果有细微的问题(比如换模后的履带在地面留下的印记还是换模前的),如果有兴趣可以自己研究,反正思路都一样,自己去试试就行。或者你等我推出文档解析文件也可以,前提是你等得到那一天。
7.1 配置文件目录解析
之前提到过这个配置文件,其内保存了一辆车几乎所有重要的参数,这类非常重要的文件保存在:
\World_of_Tanks\res\packages\scripts.pkg\scripts\item_defs\vehicles\
内,和车辆模型文件一样按照车辆国籍分类存放。值得注意的是车辆模型文件配置文件存储目录的目录名有差别,比如模型文件中俄国车存放在“russian”文件夹中,而配置文件这边的文件夹是“ussr”。
另外在各自国家的文件夹中查找配置文件也有规律,比如下图:
右边是ms-1的模型文件目录名,注意前面的编号是“R11”,而左边的配置文件中该车的编号也以同样的字符串开头。这R11是该车在游戏中的唯一编号(ID),不会有重复的,认准这个id就好找了。
PS:有些文件的文件名中带有“_bot”,这是专门用于PVE模式的电脑车辆准备的配置文件,另外“_training”也是一个道理。
找到配置文件后按惯例提取并按等价路径复制原则在mod文件夹内炮制相同目录结构,最后对xml文件解密来完成准备工作。
7.2 配置文件内容分析
打开文件后映入眼帘的东西可能让一些人马上产生退却的想法。是的,下图中我们可以看到这个文件共有491行,而且一堆看不懂的东西,似乎十分要命:
不要虚,回想一下我们在基础篇学习的xml知识。首先摸清整体结构。
得益于第三方软件的强大,我们将二级节点都折叠起来(一级节点也就是根节点“root”不要折,因为再折就没有了,2333):
这样一来就结构就很清晰了,上图显示出主要的标签是16个,也就是有16个大类。通过百度翻译,我相信所有人都能直观的明白其中大部分标签名称的含义,因此取舍也就简单了很多。根据换模理论,我们主要关注车体,底盘,炮塔和火炮模型就行。因此上图的标签中第8行开始的hull标签,第76行开始的chassis标签以及第327行开始的turrets0标签成为我们关注的焦点。
啊咧咧?车体(hull),悬挂(chassis),炮塔(turrets0)的相关标签都有了,火炮的呢?2333,火炮的模型由于直接和炮塔相关(白板炮塔和完全体炮塔即使用同一型号的火炮也会使用两个单独的模型,互不相关),因此火炮标签都是内置在对应的炮塔标签中。
7.3 替换实战
7.3.1 车体模型替换
如下图所示,hull标签下共13个子标签:
通过翻译或者前文的知识不难锁定第37行的“models”就是关键,展开该标签后看到如下内容:
有没有眼前一亮呢,这些不就是刚才修改的“.model”文件的路径么!没错,我们要改的就是这里,我们改成下图的即可:
第38行是正常状态下车体模型的引导文件路径,39行是击毁模型的引导文件路径,而40行是弹药架殉爆时的引导文件路径。
OK,这个时候你就可以重启游戏查看效果了。
PS:配置文件修改法最大的缺陷就是每次改完都得重启游戏才能生效,估计这是WG为了防止出错而故意为之的结果。
另外还有个值得注意的地方,类似第55~58行的hitTester标签在整个配置文件中有多处,这是碰撞模型的路径,分客户端和服务器的,我们本地客户端就只有客户端的模型,服务器的模型不在本地(防作弊设计)。这个hitTester标签不要动,因为目前我没发现修改此处能实现任何实际效果,反而失败会导致游戏崩溃,233。
7.3.2 炮塔模型替换
炮塔的替换自然是看“turrets0”标签了。机灵的同学会马上问“有没有‘turrets1’标签呢?”答案是肯定的,这是为多炮塔预留的。而在9.20.1.2版本中新增了一个特殊模式,其中就有多炮塔坦克,它的第二个炮塔标签就是“turrets1”。不过目前尚未发现能直接添加新标签来让单炮塔车支持多炮塔的办法,想要实现只能写脚本插件。
回归正题,按照惯例利用第三方软件和手动调整让标签变成如下显示:
在“turrets0”标签内可以看到一个叫“T-18_mod”的标签,这是炮台的编号,这同样是全游戏唯一的,不可更改的id。如果turrets0内有多个可选的炮塔的话,就会有多个与“T-18_mod”平级的标签;另外在WG的原始xml文件中排在上面的那个炮塔编号标签一般指的是白板炮塔,下面是改进炮塔。比如M4谢尔曼的标签情况如下图:
D51066是白板炮塔,D51072是完全体炮塔。
展开“T-18_mod”标签会看到22个子标签,如下图所示:
有了车体替换的经验,我相信各位一定能马上定位到第391行:
按照需求“ms-1的炮塔换成M4谢尔曼的白板炮塔”,我们首先在M4的xml文档中找到同样的地方,如下图:
然后和ms-1的xml文档进行对位替换就行。
PS:一般来说“turret_01.model”是白板炮塔,“turret_02”是完全体,如果未来出现3个可选炮塔那官方的命名可能是“xx_03”。
PS2:如果ms-1有多个可选炮塔甚至于ms-1是一辆多炮塔车的话,你需要根据上面的原理继续替换剩余的models标签,当然你可以不换,或者玩花活,比如白板炮塔换成A车,完全体炮塔换成B车,甚至于把炮塔模块换到车体模块上,自己去试试看看有什么效果。
PS3(选读):本节开头提到的“turrets0”的命名方式是一个很好的编程习惯,官方在多年前已经考虑了多炮塔的可能性,于是没有采用“turrets”而是“turrets0”的命名,这样当多炮塔来临时就不再需要对程序代码和500多辆坦克的配置文件进行调整,只需要在拥有多炮塔的车辆上增加“turrets1”、“turrets2”等标签就好。这种规范化,预留“接口”的思路对于打算做脚本插件的同学来说是很好的学习例子。
7.3.3 火炮模型替换
再重复一个重要的知识点:从xml的组织格式可以看出“gun”标签是从属于“turrets?”的“xx型号炮塔”标签下的,故整个xml文件的组织方式是:该车有多少处炮塔——每一处有哪些炮塔——每个炮塔有哪些火炮;这在ms-1中对应的标签与子标签是:————。因此在实际的对位模型中即使是同一个型号的火炮,安装在不同炮塔上时WG会针对每个炮塔单独做一个模型。也就是说为了保证程序的规范性,即使多个炮塔上使用的某一型号火炮的模型完全一致,WG也会在文件上进行区分,比如分成“gun_01”和“gun_05”两组文件。
复习完知识后按照惯例先理清文件结构,我这里使用IE浏览器来进行这个步骤以方便解说:
可以明显看到该炮塔所属的火炮模型有两组,对应游戏中完全体炮塔的两杆火炮,xml从上到下的排列顺序对应了游戏中从下到上的顺序:
然后就是老一套的东西了,具体的火炮型号下有12个子标签:
我都懒得说了,上图一看就应该知道改哪里。而之前那两种方案中受人诟病的“换火炮得一个个试”现在也已不是问题,比如上图中明显看出“37mm 哈奇开斯”这杆炮在完全体炮塔上的火炮模型是Gun_05,同理去找M4的白板炮塔上的白板炮,按照前面的理论一点问题都没有:
1.找到M4白板炮塔标签“D51066”(本例中游戏内炮塔名字与xml的名字正好完全相同)。
2.查找其子标签“guns”。
3.从游戏中可得知白板炮型号是“75mm M3L/37”;
4.在xml中按顺序找对应型号的标签。
5.最后找到“models”子标签。
6.复制相关内容替换ms-1对应标签(ms-1有两门炮,要换两处)。
7.完成。
PS:和换炮塔一样,如果你是个懒鬼,那么在本例中完全可以只更换ms-1的白板炮,只要实战的时候不在游戏中将ms-1切换为完全体火炮就行了。
7.3.4 悬挂模型替换
本节也可叫底盘模型替换。从下图可以看出ms-1只有一组悬挂:
因此chassis标签下只有一个子标签T-18Bis,惯例先理清结构:
打开T-18Bis标签并整理后你会看到所有模块中最多的子标签数,一共35个,以至于我需要用两张图才能全部列清楚。这里面详细的定义了悬挂的参数,如该车有几个轮子,每个轮子的运动模型名称是什么,轮子半径是多少,履带贴图的名称,有多少个履带运动节点等等,复杂且详尽,这些参数和对应的悬挂模型包的内容必须一致,错一个细节都会导致游戏在加载时崩溃。如果你要学习模型制作,这些标签的内容都必须搞清楚(换模不需要搞清)。所以前两个方案在悬挂替换上失败的根本原因是模型内容与配置文件的参数不一致:
对于换模来说上面的两图只需要关注下面的那张就行。
注意,截止“9.20.1.2”版本,即使有多个悬挂的坦克,其所有悬挂使用的模型都是同一个,所以配置文件中与换模相关的参数全部一致,因此在换模时用哪一个悬挂的参数都行。
比如下图的M4谢尔曼,可以看到有T41和T42两个悬挂:
使用对比软件对比后发现主要内容没有任何区别。下图就是对比结果,左侧的略缩列表中显示只有开始和结尾两处有不同(红圈标识),而中间大片区域完全一致。而有区别的地方要么是“悬挂价格”等和换模不相关的参数,要么就是由于某些平级标签排列顺序不同导致对比软件误报的“差异”。
下面正式开始换模,先处理106行的models标签,略过不表。
接下来进行参数替换,也就是让配置文件的参数符合要替换的模型内容。对本例来说,如下图所示,ms-1的悬挂参数从111行到328行的所有标签中只有189和190行的“hullPosition”和“hitTester”两个标签不能动,此外全都要对位换成M4标签的内容。
如果你是个懒人,不需要这么精细的替换,那么可以只换如下标签:traces,tracks,wheels,drivingWheels,groundNodes,splineDesc以及trackNodes标签。其他的标签不换一般不会有大的问题(但肯定有小问题比如履带溅起的尘土效果大小,车辆履带印记的效果差异等)。
8 进阶处理
至此替换就全部结束了,不出意外的话,安装mod后你应该能在客户端中看到ms-1已被替换成一辆由M4A3E8的车体,M4的悬挂,M4的白板炮塔以及M4的白板炮组成的全新合成车。
然而本例的顺利替换并不代表所有车都能完全照搬这个套路。
8.1 悬挂替换进阶处理
在标清车时代不存在分节履带,悬挂也不是“独立悬挂”系统,因此所有标清车的配置文件中悬挂标签只有traces,tracks,wheels,drivingWheels这四个。高清车专属的分节履带标签“splineDesc”和独立悬挂相关的“groundNodes”和“trackNodes”标签在标清车配置文件中都不存在。
所以在使用标清车悬挂时必须要删掉这两个高清车专属的标签,否则游戏必然崩溃。
另外,截止9.20.1.2版本,即便是高清车也可以在配置文件中去掉这两个专属标签,但这样做会失去独立悬挂和分节履带的效果。
综上所述,如果你是超超超级懒人,悬挂的替换只需要换掉traces,tracks,wheels,drivingWheels这四个标签,然后删掉“splineDesc”,“groundNodes”以及“trackNodes”标签就完事。
8.2 其他模块修正
和悬挂一样,其他模块也存在特殊标签,比如车体模型专属的“exhaust”标签:
通过翻译可知该标签负责管理车辆尾气效果。上图中71行表示使用的尾气类型,72行则以空格为间隔,依次标出该车体上每一处尾气节点的名字。若该标签设置不对,轻则导致尾气的颜色和大小不对,重则致使尾气效果完全缺失。
之前没提到这些标签是因为截止9.20.1.2版本,这些标签内容的错误不会导致游戏崩溃,我称其为非致命性节点;而会导致游戏崩溃的标签我称为致命性节点,比如悬挂替换要处理的那几个标签。
这类标签除了在悬挂模块上出现外,也偶尔在其他模块上有“亮相”,这些标签本意是WG为了让车辆效果更加真实而针对某些车辆加入的。比如苏联8级金币车252K型,该车原装火炮模型能实现一个特殊效果。而为了实现该效果,此车配置文件中的火炮部分新增了一个名为“drivenJoints”的标签,该标签属于致命性节点。正如给标清车添加了高清车专属的悬挂标签会导致游戏崩溃一样,在替换中如果将252k的火炮模型换成没有该特殊效果的火炮模型且不去掉这个标签,游戏就会崩溃。
最麻烦的是,WG并不像悬挂参数错误那样把这个错误写到日志文件中,这导致的结果是游戏崩溃了却不知道原因。
针对这类新标签的问题,有这样一个通用的解决办法,以252k为例(当时的情况是将252k整车换成玛蒂尔达纯白板车后崩溃):
1.查看日志文件。本例中该步骤失败,日志文件无记述。
2.依次替换单个模块以确认问题源。整体替换失败且没有错误信息,所以只能分别尝试单独替换悬挂,车体以及炮塔模块,发现均未出错。直到单独替换火炮后游戏崩溃,这样就确定了问题源是火炮。
3.从模型配置文件中找出特殊节点。先找到被替换模型的配置文件,也就是252k的火炮配置文件“gun_01.visual_processed”,对其使用xml文档的处理方式打开并整理,得到6个子标签:
我们的目光关注在第二行的“node”标签上,该标签翻译为“节点”(所以知道我为啥叫“致命/非致命性节点”了吧)。展开此节点,再整理一下,我们会看到又有很多名为“node”的子节点,如图:
每一组“node”标签下至少都会有一个“identifier”和一个“transform标签”。我们的目光聚焦在“identifier”上,找一找有没有其他模型的配置文件中没有见过的节点名称(这种特殊节点很稀有,大部分车都没有,故当你对车辆模型的配置文件有一定了解后基本一眼就能发现),最终找到上图所示的名为“joint1”的非常规节点,我们将该节点名也就是“joint1”复制到252k的车辆配置文件中进行文本匹配搜索,很快找到下图的内容:
从图中可以看出:
A.“joint1”标签下属于“drivenJoints”标签;
B.“drivenJoints”标签定义了一个“master”标签;
C.“master”标签指向“gun”节点也就是火炮模块;
D.“gun”节点有一个“slaves”标签叫“joint1”。
把上面的ABCD整合一下,就是“有一个新效果名叫‘drivenJoints’,它在‘火炮’模块中起作用,该效果依赖‘joint1’节点实现,节点的某些关键参数保存在‘table’下”。
4.删掉问题标签。删掉“drivenJoints”标签即可。
5.同样的原理补齐待替换模块的专属标签。在此处的意思是去查看玛蒂尔达的火炮模型配置文件,如果发现专属节点则去玛蒂尔达的车辆配置文件中找到相应标签并丢进252k的车辆配置文件中。
PS:这种处理方式和标清车悬挂换成高清车其实是一个原理。
PS2:本例中252k只有一门火炮所以不会搞错,火炮多的时候请注意被替换的是哪个模型,不要本来被替换的是完全体炮而你却去看白板炮的参数和模型配置文件最后查不出错误就搞笑了。
8.3 模型错位调整
有时在替换成功后会出现类似这样的问题:
可以看到炮塔及火炮都偏离了车体,此类错误的解决办法由于涉及到一整个体系的问题,我打算在下一篇文章中进行解析。
PS:此处的例子故意放大了错误严重程度,实际一般没这么离谱且只有组合替换才会出现此类问题。
9 配置文件替换法总结
1.获取相关车辆的配置文件。
2.模型路径替换。替换四个模块的“models”标签;
3.参数替换。悬挂还需额外替换traces,tracks,wheels,drivingWheels,trackNodes,groundNodes以及splineDesc标签,其中后三个标签只有高清车才有,标清车请去掉。非悬挂部分请根据崩溃情况进一步确定要替换或删除的标签。
4.模块节点坐标错位调整。修改相应的visual文件的坐标值即可。
10 后记
为了照顾各个层次的同学,我已尽力将文章写的通俗易懂以至于基础好的同学应该会觉得我非常啰嗦了。
本篇用到的教学实例的替换成品mod已经归类到网盘中,有需要的同学可以自己翻找一下,就在本篇文档外的其他文件夹中。
WG的模型组织方式这么多年来一直没改过,所以只要我们学会了思路,他怎么改都不怕。
依然感谢A大,T神的启蒙指导。
恩,有缘再见啦,拜拜。
教学 坦克世界 wot 坦克世界mod 车辆模型替换 车辆换模
投诉或建议
65评论
送你一场万人LIVE!乐迷搭子招募中>>
按热度排序
按时间排序
表情
APTXPC
UP
置顶离线版下载地址请看我第一篇教程的评论区。因为百度云和谐严重,就不单独在每个教程下都提供了。
下载地址失效联系我恢复。
另外顺便做一下宣传:坦克世界少女与战车还原制作组长期招募人才,您可以先通过在本网站搜索“WOT少战还原制作组”来了解我们的往期作品。如果您有兴趣,可以加QQ群336858151,进入组内当一名普通的演员亦或尝试参与到核心制作中。
关于核心制作,我们既需要熟悉AE的后期人员和了解坦克世界MOD机制的大佬,也需要能够指挥拍摄的导演和进行游戏镜头录制的摄像师。如果您十分感兴趣但缺乏技术,组内可以考虑免费培训。
本招募长期有效(除非WOT完蛋了)。
想参与核心制作的同学,进群申请理由写“找APTXPC”,进群后直接找我就行。
╮( ̄▽ ̄)╭
2020-07-26 18:33回复
APTXPC
UP
我自己写的模型替换软件,用以替代百变涂装:
下载链接:https://pan.baidu.com/s/1n2fMn2fiXXS4JfvwVsM--Q
提取码:0205
链接失效找我补。
2020-08-26 21:486回复
99A2-
问下怎么替换队友模型不替换敌方模型啊?
2023-06-09 11:40回复
APTXPC
UP
需要写代码控制,可以问一下atacms,b站有他的号
2023-06-09 17:56回复
99A2-回复 @APTXPC :问了他没回我
2023-06-09 19:05回复
APTXPC
UP
回复 @99A2- :不行你去群里艾特他
2023-06-09 19:22回复
99A2-回复 @APTXPC :群号多少[喜极而泣]
2023-06-09 19:47回复
APTXPC
UP
回复 @99A2- :置顶评论里的那个[笑哭]
2023-06-09 19:51回复
99A2-回复 @APTXPC :加了
2023-06-09 19:59回复
freemoe
因为原来所使用的是GUP的组合mod包,但是在回坑亚服之后发现无法使用了,不过我在原本的mod文件夹里找到了wotmod的压缩文件),一直看着教程提取了所有的包中的所有的内容,并摸到了这里,在将各种文件转移至res_mod的时候出现了闪退的问题,经过排查发现,名为scripts的文件放入mod文件夹后始终闪退,移除scripts后,可以成功进入游戏,但是关于车上的贴图有重叠的现象,就比如安康鱼的图标会与原来模型的黑十字标准重叠,显得非常不好看,把scripts恢复至res_mod之后还是在读取游戏(亚服登录账号之前)闪退,检查python.log日志发现没有任何关于今天的记录,然后我返回去检查pkg中的scripts文件夹内容,没有问题,这个时候利用安全模式进入没有问题。啊,我要死了,希望大佬可以再给一些提示[灵魂出窍]
2019-10-24 18:28回复
APTXPC
UP
懒人用这玩意儿:链接:http://pan.baidu.com/s/1mh8SPS0 密码:o34a
打开后在“其他少战mod”里有国徽屏蔽mod。
2019-10-24 21:151回复
APTXPC
UP
2.我不知道你是否是所有wotmod的script文件夹都解压出来了,针对少战的mod来说,script文件夹内无非两个东西,一个是车辆xml配置文件,另一类是一些脚本插件,实现某些功能的,比如能自动识别军神的车辆并将该车的成员头像和名字换成动漫的。但由于游戏不断更新,当游戏的一些代码修改后,这些依赖游戏代码的功能性脚本就无法使用,表现就是发生异常,轻则闪退,重则崩溃。所以当你一刀切拿掉script以后就能用了。
2019-10-24 21:011回复
APTXPC
UP
3.你可以试试只保留“scripts\item_defs\vehicles\”文件夹及其里面的内容,其他的script都做掉,兴许能进去。还是进不了那就是车辆xml配置文件过时了,需要修复一下,修复教程的通用原理我写好了,但一直没发,属于06篇,这两周我找个周末发一下,但是基础的前置知识至少需要看01和02篇。
2019-10-24 21:071回复
共11条回复, 点击查看
铁皮缝合怪
大佬,为什么我替换模型无效啊?按照你的顺序替换的[大哭]
2020-04-09 11:14回复
APTXPC
UP
方便的话可以加个QQ,我直接给你弄,或者辅助你都可以
2020-04-09 19:37回复
铁皮缝合怪回复 @aptx2018 :不用了谢谢(・∀・),我弄好了,现在这个版本有两个部分分开储存
2020-04-09 19:47回复
APTXPC
UP
回复 @格林堡垒_RAIJIN :👌
2020-04-09 20:42回复
犹大的誓约AX
我是想把酋秃的模型替换成95酋,但是百变涂装好久不更我就只能自己动手了。然而虽然替换成功了但是一旦视角拉进就会贴图错误糊成一片,不知道怎么解决
2020-03-13 12:08回复
APTXPC
UP
1x版本?百变涂装升级到最新了么?视角拉进有问题得看你是用什么方式替换的
2020-03-13 19:411回复
APTXPC
UP
回复 @犹大的誓约AX :不好意思,b站今天才推送消息。这种直接覆盖的方式我基本不用,贴图错误的话可能是lod模型对应关系有问题,或者你还有其他mod干扰。这样,你把95和秃的车辆文件夹名称告诉我,我给你换一个
2020-03-28 13:03回复
犹大的誓约AX2.6.2也识别不了
我是直接把res/package/vehicle里的95酋模型解压出来、文件夹名改成酋秃相应然后直接丢在res_mods/1.8.0.1了(不过collision没覆盖)
2020-03-13 19:49回复
悼唁
大佬你好 我是最近才想起来还有百变涂装这个东西的 我想用百变涂装的方法去修改xml来替换模型 但是我去找了游戏内的配置文件发现scripts里的xml文件已经不在了 是wg不再往这里放配置文件了吗 请问现在的xml文件位置在哪里?
2020-06-27 01:43回复
悼唁回复 @何爹 :可以使用 但是游戏本身的文件位置已经换了 需要手动读取一下模型
2020-07-17 19:211回复
悼唁回复 @APTXPC :大佬我想问一下 现在有什么皮肤网站吗 3d模型类的和痛车类的 自从转到亚服后根本找不到皮肤站 阿斯兰的太少了
2020-06-27 22:06回复
APTXPC
UP
回复 @悼唁 :我有空翻翻收藏夹,平时不太关心这个。
2020-06-28 08:25回复
共15条回复, 点击查看
Sispuellamagica
大佬,怎么把模型换回去。。我虎王换虎王换回去会变成模型不能改的白板啊
2020-08-27 19:07回复
APTXPC
UP
回复 @那跨越时光的旅人 :加了,老地址。
2020-08-29 11:45回复
Sispuellamagica回复 @APTXPC :谢谢大佬[tv_点赞]
2020-08-27 23:54回复
APTXPC
UP
mod目录下删掉相关文件
2020-08-27 21:14回复
共4条回复, 点击查看
天下倒数第一ssaw
刚好用到,看见有人在贴吧说你有教程
2022-05-10 09:39回复
APTXPC
UP
有用就好[doge]
2022-05-10 10:25回复
T-183
大佬 怎么避免替换时的涂装问题啊,比如替换5A为麒麟5A,替换成功后的麒麟5A上还有原来5A的涂装,不想要这个涂装显示但是还是想要涂装的隐蔽效果 怎么破
2020-08-25 23:51回复
APTXPC
UP
最正规的替换是连带模型都换掉的方式,不会存在替换后还有原始模型涂装的问题,你是怎么换的模型,换了哪些地方,详细说一下
2020-08-26 00:141回复
愿世界不再傲慢
感谢.
2021-06-09 18:50回复
APTXPC
UP
不客气~
2021-06-10 08:321回复
陶葛葛
只想替换下两个车的模型 写太多反而看不懂了
2020-03-05 01:43回复
APTXPC
UP
前言说了,想快速上手,不想深入研究的请使用现成的换模软件“百变涂装”完成一键替换。我这个教程不是完全的应用型教学,没有基础的同学想跳着看或者看一遍就看懂然后马上实践是不行的。这玩意儿不难但是复杂。
2020-03-05 08:511回复
镜学家-深见
现在战舰世界把primitives文件加密成geometry格式了,不知道你们坦克世界也是这样吗[doge]
2022-11-26 00:05回复
APTXPC
UP
没有
2022-11-26 10:23回复
镜学家-深见回复 @APTXPC :难绷[辣眼睛]
2022-11-26 13:40回复
APTXPC
UP
回复 @镜学家-深见 :我乱猜有可能不是加密,而是一种新的封装格式,只是没有合适的解包工具。
2022-11-26 19:07回复
镜学家-深见回复 @APTXPC :是这样滴捏,现在有从primitives和visual封装到geometry的工具,但是没有geometry[笑哭]解包到primitives和visual的[辣眼睛]
2022-11-26 19:38回复
镜学家-深见回复 @APTXPC :geometry格式解包后失去了visual的父子级信息单单只是模型了,而且里面还夹杂了低模不知道为什么[辣眼睛]
2022-11-26 19:40回复
APTXPC
UP
回复 @镜学家-深见 :哦哦~
2022-11-26 20:45回复
NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.