上一篇:合并&导出篇下
经过前两篇,我们终于将多件衣服合并成一件,并且成功的导出覆盖了原版的服装
现在我们只剩下最后一步了
因为我们合并了
首先要确定你的模型用的.xml文件是哪个:
用Nifskope打开你合并完的.nif,展开左侧的部件一栏就能看到这个文件
可以看到我的这个用的是arm.xml
如果没有的话,那就打开原服装mod的.nif,挑一个复制上去(最好用的是和你这个碰撞区块所在的同一个.xml)
既然知道了我们所用的.xml(后称主.xml),那就找到另外的.xml(副.xml)并把它们合并起来就行了
.xml文件一般所在的位置:服装mod文件夹——meshes——依次打开
就能看到多个.xml了
我这里有三个,我们合并模型的时候都用到了他们的物理部件
在这里我的主.xml就是上图看到的arm.xml了,先打开它(主.xml),再打开另一个skirt.xml,剩下的low.xml我们最后再合并
左‘主.xml',右'副.xml'
是不是感到眼花缭乱?
别急,这里面什么意思你都不需要弄懂,只要跟着我学会把它们分开,然后复制粘贴一部分就行了
下面正式开始操作:
1通用声明(一般不管):
弃
首先是最开头的这一部分,相当于是编程语言的头文件,
2碰撞箱声明(替换):
一般的格式为:
以<per-triangle-shape name ="xxx">作为开头
······
以<per-triangle-shape>作为结尾
上图这一部分是对.nif里的碰撞箱,也就是第一篇说的’碰撞区块‘的声明(在第一篇我们说了尽量留下体积最大的碰撞箱,这样对于所有smp物理部件都能起到效果)
可以在.nif里查看,一般碰撞箱的名字都会带'box'或者'collision'
碰撞箱的声明只能有一个,主.xml里的碰撞箱一定要跟.nif里的是同一个,如果不是,那就替换掉
但是我们主.xml里自带的就是’boxarm‘,和.nif里用的是同一个,所以这里我就不需要操作了
3物理骨骼声明(添加):
下一部分的骨骼声明分成多组,除了第一组,格式一般为下图
框起来的为一组
在开始之前,还记得上一篇为了解决裙子和手臂的骨骼冲突,而把裙子的骨骼名字将‘coco’改成'c‘了吗,那么在复制粘贴这些骨骼之前我们先把这些名字也改了
快捷键ctrl+F——选择替换——打上要替换的名字——全部替换
全部替换
替换后的骨骼名
之后就可以开始复制粘贴了
操作如下:
将副.xml里的这些后面带数字比如'01'的骨骼,全部复制到主.xml同样是'01'骨骼的后面,
如图
从副部件到主部件
然后重复,直到把所有骨骼都复制到主.xml中带有相同数字的骨骼后面
假设:如果副.xml的骨骼最高数字比主.xml的高,比如副.xml有'15'而主部件最高只有'14',那么就要把整个骨骼声明复制到主部件
把整组’15'复制到主.xml的'14'后面
4骨骼间限制声明(添加):
接下来这部分处理方法跟前面的骨骼声明类似,但是更直接更简单粗暴
骨骼间限制的代码有两种,一种是'lnB’,一种是'lnLerp'。
这一大堆就是骨骼限制说明了,只是看着很唬人
骨骼限制代码分两种,一种是上图的‘lnB’,一种是‘lnLerp’,如下图
’lnB‘
'lnB'后接着的一般就是‘lnLerp’了
而一个.xml文件可以存在多个'lnB'和多个'lnLerp',所以我们只要把'lnB‘这一整串复制到主.xml的’lnB‘后面就行了,’lnLerp‘也是同样操作。
对’lnLerp‘同操作
5smp部件模型声明(添加):
这个更加的简单粗暴
上面这一堆以<per-vertex-shape name = xxxx>开头的就是模型声明了
因为一个.xml可以有很多个,我们直接把所有<per ~~~ "xxxx">一起复制到最后就行了
一直复制到</per-vertex-shape>,也就是</system>的上面
然后粘贴到主.xml的相同位置,也就是最后</system>上方就行了
那么不出意外的话.xml就这么改完了,但是我们有三个.xml,所以把剩下的也按同一个套路的做一遍。
(剩下的这个没改过他的骨骼名字,直接复制就行了)
6smp部件和碰撞箱的连接:
我们刚刚添加的smp部件没有经过修改还不能跟当前碰撞箱产生物理碰撞。
先回到主文件开头查看一下我们碰撞箱的标签
上图可以看到,碰撞箱标签为aa2,第二个红框中的意思是可以与标签为bb2的物理部件产生碰撞。
下图就是原本就存在的物理部件,可以看到它的标签正好是bb2,可以与aa2产生碰撞
那我们对其余的物理部件照着改就行了
最后记得保存退出,文件位置也不用动(.nif里的就是目前的路径)。
进游戏看看效果
所有物理部件都有效果了
NICE!!
我们第一个服装替换就这样完成了
总结一下这几篇教程的内容吧
准备:制作一个空mod,用BAE打开meshes0.bsa并把里面的服装meshes并解压到空mod中
第一步:将多个.nif文件拖入outfitstudio中进行合并
第二步:将所有模型的部位(partitions)改成替换的原版服装部位
第三步:导入参照、映射所有
第四步:导出,导出时记得输出文件名和文件夹跟要替换的原版服装对应(其他的为了方便重新打开项目作修改,可以选择同一个shapeDataFolder和sliderset)
第五步:打开导出的.nif看看有没有骨骼错位, 如果有,先在副.nif中重命名这些骨骼,然后再拖入主.nif,修改完后替换掉原来的.nif,再用outfit studio拖入其他部件进行合并
第六步:将多个.xml文件合并,如果前面哪个部件改过了骨骼名,记得重新替换一下骨骼名再合并文件
第七步:打开Bodyslide,找到你的这个替换服装名字,点击建立(build)
最后:进游戏看看效果
再补充几点:
前面我们替换的只是人物穿上的模型,但是在背包里或者掉落物模型还是原版的,那么我们就也把原版服装对应的gnd也替换掉就行了(可以用OS像前面一样创建一个新项目,或者直接把mod服装的gnd拖进meshes文件夹里覆盖掉就行了,如果mod服装没有gnd,那随便一个部件的.nif也是可以用来替换的)
至于第一人称手模,如果服装mod里也有1stXXXXXXX.nif,那跟gnd一样直接替换掉原版就行了,如果没有那只能将就一下了:)(因为我大部分时间都是第三人称,所以对这个不挑,如果想要的人多我可以试着学一下,重新发个补充贴)
如果替换完服装后打开游戏直接闪退的话,这是个很正常的事情,我就遇到过两种情况
如何排查闪退:很麻烦但是也很管用,那就是在outfitstudio中一个一个的删部件,刷完bs进游戏。直到删掉哪个部件就不闪退了。一种情况是带发光材质合并完后会导致闪退,我们只要用.nifskope打开他然后删掉发光的材质就行了。另一种情况是某个碰撞箱,我不知道什么原理,删掉它就行了。
删掉这个BSLightingShaderProperty,一般在下方能看到他的颜色是很亮的
那么我们的教程到这里就结束。
如果有什么这方面的问题想问的可以来找我,或者有什么服装想要合并+替换的,也可以找我试着帮忙,但是鉴于本人还是在读学生,因为时间原因可能不能处理掉所有请求,但是我会记录下来后面再发个补充贴之类的。
点点关注+收藏,说不定你就是下一个mod大神
指路:
准备篇/合并&替换篇上/合并&替换篇下