开题碎碎念
大家好啊,这里是号卧龙字孔明的诸葛不太亮。
最近入坑做mod的人越来越多了,距离SB发售也只有一个半月了,老实说本来想开个制作mod的视频教程系列的坑,但如果SB文件机制什么的又变了,还不如出了再搞比较好。
不过今天要说的也不是这个,今天主要说说该怎么搞武器的的部件隐藏(变形)效果。主要是我怕后面做教程我会忘一些东西,而且恰好刚刚做完一个系列的变形武器mod(没错就是阁螳螂),所以干脆先写在这儿当个参考,如果对你有帮助的话我也十分荣幸。
废话不说了,开题!
一般变形(机制简介)
首先要指明的一点是,这里所说的部件隐藏(变形)的变形二字,并不同于一般意义上的变形。
一般意义上的变形,大家应该都很明白,mhr中的很多武器都自带变形的效果。典型的比如重弩系和弓箭系,基本都有纳刀折叠拔刀展开的变形效果,这也是重弩被称为“折叠太刀”的原因。
再比如太刀系的祸镰瓦尔纳乌斯,纳刀时刀身会呈现鸟嘴(啊不,乌鸦嘴)的形态,而拔刀时鸟嘴会张开呈现镰刀的形态。
这类“一般意义上的变形”,其实是通过在变形处添加一个变形骨骼来实现效果的。我们仍然拿这把太刀举例,在Blender中可以看到这把太刀的模型如下:
其中橙色线条圈起来的就是武器本身,而黄色线条的四棱锥则是骨骼,它们的名字如图所示。可以看到现在它呈现的是拔刀下的镰刀形态,那么通过横向旋转“_j002_drv”这根骨骼,便可以变形到纳刀下的鸟嘴形态,如下图。
同理,重弩啊弓啊也都是如此,在折叠处有骨骼在控制着它们的旋转。不过这篇教程的重点并不在这里。
部件隐藏(机制简介)
那么部件隐藏(变形)和一般变形的区别在哪儿呢?
这里我拿迅龙太刀举例,眼尖的童鞋应该会发现,这把太刀在纳刀和拔刀态下呈现的形态是不同的。
拔刀态下刀身前端会张开一个小副翼,而在纳刀态下是没有这个副翼的。这时可能会有童鞋认为,是纳刀时副翼收在刀鞘内所以才看不到的。那么我们把它的刀身和刀鞘模型全部提取出来,再看一看效果:
可以看到在模型全部显示的状态下,副翼是会穿过刀鞘的,并不是被遮挡而看不到。
那么唯一的解释就是,副翼在纳刀态下被隐藏了,而在拔刀态下又显示了回来,视觉上形成了一个副翼“折叠”的效果。
除此之外,眼尖的童鞋可能还会发现,这把太刀的模型下面还有一个大尖刺,在纳刀和拔刀态的截图中均没有出现:
实际上如果玩过这把太刀你就会知道,这个大尖刺是在成功开刃后才“弹出”的:
为什么叫“弹出”呢?因为它也是通过部件隐藏呈现的变形效果。在Blender中可以看到,大尖刺和无气刃值下覆盖刀身的尖刺是同一个东西(如下图两个部件),只是角度和细节不同。
这样就很直观了,在无气刃值时,显示的是尖刺1,隐藏了尖刺2;而在成功开刃后,尖刺1被隐藏,显示的是尖刺2,视觉上形成了一个尖刺“弹出”的效果。
那么我们把这把太刀的部件隐藏逻辑再整体理一遍。在Blender中,这把太刀被分为了4个部件(之后以数字代称),如下图所示:
其中1在纳刀、拔刀和开刃时都会常驻显示,毕竟它是基底;而2在纳刀时隐藏,拔刀和开刃时则显示;3和4这对儿就是一个未开刃时显示,另一个开刃时显示。这样一系列的隐藏+显示就实现了游玩时武器的变形效果。顺带一提这把太刀的刀鞘就只有一个部件,所以没有什么特别的机制。
那么到这里你应该明白一般变形和部件隐藏的区别了。前者是依靠骨骼的旋转、移动等来实现变形的效果,而后者是通过隐藏一部分显示另一部分来实现变形的效果。当然,这二者也可以结合起来,通过给带隐藏机制的部件加上变形的骨骼权重,可以让变形的视觉效果更加自然,这一点接下来也会再提到。
部件隐藏(另一个例子)
知道了部件隐藏的机制,这里再延伸一个例子,是带有折叠变形的弓箭之一的泥翁龙弓箭。为什么是这把弓箭呢,说来也巧,当时在做一个魔法弓的mod,歪打正着就选择了这把弓箭去绑定模型,歪打正着就发现了它代带有部件隐藏的机制,这帮我制作mod省去了不少的麻烦。
回到正题,我们先来看看泥翁龙弓箭在游戏中的效果。
额,抱歉,放错图了,mod没下掉(
好了这回放对了。眼尖的童鞋可能会发现,泥翁龙弓箭在纳刀时并没有显示弓弦,而拔刀则会显示。这并不是什么弓弦被压缩到很小导致看不到,实际上它也是通过部件隐藏实现的变形效果。
我们将泥翁龙弓箭的模型提取出来,在Blender中可以看到,它被分为了3个部件(之后以数字代称),如下图所示:
其中1在纳刀和拔刀时都会常驻显示,因为它带有握把,相当于基底;而2在纳刀时隐藏,拔刀时才显示,这就是纳刀时看不到弓弦的原因;而3需要特别说明一下,泥翁龙弓箭的纳刀折叠并不是2旋转一下就完事儿,因为2除了弓弦还带有上半部分的弓身,纳刀时会一并隐藏,所以设置了3这个部件让它纳刀时显示,这样视觉上形成了“折叠”的效果。也就是说你在纳刀和拔刀时看到的上半部分的弓身,其实并不是同一个部件。
除此之外,我们还可以看到,这把弓箭也给3这个带有隐藏机制的部件,涂上了变形的骨骼权重,如下图:
当你旋转"_j002"这根骨骼时,2和3会一起跟着旋转。你可以想象一下场景,比如现在是拔刀态,2显示而3隐藏。那么我按下了纳刀键,此时二者一起开始旋转,但你看不到3。旋转到某一个位置时,2突然隐藏而3变为显示,二者继续旋转,但你看不到2,直到纳刀完毕。拔刀则是相反的流程。不过这是我猜想的流程,实际生效的原理可能并不是这样。
所以这把弓箭的2和3都可以说是一般变形和部件隐藏的结合产物。
也就是说,一般变形和部件隐藏可以结合起来,通过给带隐藏机制的部件加上变形的骨骼权重,可以让变形的视觉效果更加自然(我又说了一遍是吧)。
部件隐藏(实践)
既然知道了泥翁龙弓箭有这个机制,那我们来实践一下,看看利用它来绑定模型制作mod是怎样的效果。
这次举的例子是我刚做过的阁螳螂弓箭mod。很明显,这玩意儿在纳刀和拔刀态下完全是两个东西。
用blender导入阁螳螂弓箭的MOD3文件,可以看到它被分为了2个部件(此处为了方便展示清除了多余的空部件),如下图所示:
那么想要实现这个“变形”效果很简单,只需要将1绑定到泥翁龙弓箭的3,将2绑定到泥翁龙弓箭的2即可。也就是1在纳刀时显示拔刀时隐藏,2在纳刀时隐藏拔刀时显示,视觉上形成了“变形”的效果。
做到这步时,可别忘了将泥翁龙弓箭的1缩放为0哦,让部件1全程隐藏,因为我们只需要后两个部件而已。绑定后的模型如下图:
导出后安装mod,就可以实现阁螳螂弓箭的“变形”效果啦。同理,如果你想做一个带有变形或部件隐藏机制的弓箭mod,也可以直接绑定泥翁龙弓箭的模型,再修改pfb文件的id来替换其他的弓箭外观。
各类带部件隐藏机制的武器分享
此处分享几个带部件隐藏机制的武器,方便制作此类型的武器外观mod,依旧都可以修改pfb文件的id来替换其他的武器外观。
大剑:蛇翼龙大剑(纳刀、拔刀均有隐藏部件)
斩斧:泥翁龙斩斧(纳刀、拔刀、变形均有隐藏部件)
双刀:水母雨伞(纳刀、拔刀均有隐藏部件)
太刀:迅龙太刀(纳刀、开刃有隐藏部件,拔刀没有)
盾斧:迅龙盾斧(剑没有隐藏部件,盾变形有隐藏部件,纳刀、拔刀没有)
操虫棍:铁刺刀(纳刀、拔刀均有隐藏部件)
大锤:炎火(百龙)大锤or奇怪龙大锤(纳刀、拔刀没有隐藏部件,前者满蓄变形有,后者只要蓄力就有。也有方法让锤子实现纳刀、拔刀隐藏部件。)
狩猎笛:目前只看到一个冰牙龙狩猎笛在演奏时有变形效果,其他的大概没有。不过依旧有方法让笛子实现部件隐藏,这是接下来要讲的。
长枪:雷狼龙长枪(枪在纳刀、拔刀时均有隐藏部件,盾没有,但可以将盾绑定枪的模型导出,再修改文件的名称替换盾牌)
铳枪:百龙铳枪(纳刀、拔刀均有隐藏部件)
片手剑:泡狐龙片手剑(剑在纳刀、拔刀时均有隐藏部件,盾没有,但可以将盾绑定剑的模型导出,再修改文件的名称替换盾牌)
轻弩:泡狐龙轻弩(纳刀、拔刀均有隐藏部件)
重弩:七星天炮(纳刀、拔刀均有隐藏部件)
弓箭:泥翁龙弓箭(纳刀、拔刀均有隐藏部件)
这些武器模型的哪几个部件带有隐藏机制,又是在何时隐藏何时显示,就留给你们自己去试验了,也算是亲自研究了一回。
部件隐藏(原理)
那么到底是什么东西在控制着这些部件的隐藏与显示呢?下面就来说说原理,不过依旧是在可操作且尽量简单易懂的范围内讲,不会深入,但仅此也足够你制作mod了,因为上面给出的武器大部分都具有纳刀、拔刀隐藏部件。我们只需稍微了解原理来解决没有这个机制的武器。
如果你经常在踩蘑菇(包括狩技)下载mod,你应该会发现很多mod作者都会特意标注,当你想替换其他武器时,请修改pfb文件的id,否则部件的隐藏和显示会出问题。
这就相当于直接告诉你了,部件隐藏是由pfb文件控制的。
什么是pfb文件?pfb文件是在natives\STM\player\prefab\路径下的pfb.17文件,也就是prefab的缩写。通过翻译我们可以简单把它理解成某个物体的“预设”文件,也就是决定物体在游戏中该如何呈现给玩家。
上图中我们经常打交道的就是mod和weapon子路径下的pfb文件,其中mod是人物防具的pfb文件,而weapon则是武器的pfb文件。显然,想要窥得其中的玄机,需要我们打开它,进入它,然后。。。(抱歉,想歪了)
打开它需要用到010 editor以及RE_RSZ模板,模板请到零酱的解包资源贴寻找。(https://www.caimogu.cc/post/77016.html)
这里仍然拿泥翁龙弓箭举例,它的武器id是053,相应的pfb文件id也是053,如下图。
我们使用010 editor打开它,并运行RE_RSZ模板,逐级展开模板结果后,就可以看到它的玄机了,如下图。
从模板结果来看,它引用了很多与该武器相关的文件,比如泥翁龙弓箭的模型文件(.mesh)、材质规定文件(.mdf)、动画容器文件(.motbank)、音效资产文件(.wcc我也不知道怎么翻译),还有一些布尔值和骨骼的定义。不过今天的重点不是这些,而是下图的部件管理部分。
这里所引用的.user文件直接规定了该武器的部件隐藏,可以看到泥翁龙弓箭引用了weapon/Bow/Gimmick/PartsGimmick/路径下的Bow_PartsGmk001.user文件,所以它拥有前面所说的部件隐藏机制。顺便一提,Gimmick可以翻译为“机关”,很符合这个机制。
作为对比,我们再随便打开一个不带部件隐藏机制的弓箭的pfb文件,比如迅龙弓箭014的pfb文件:
可以看到在部件管理这一项它只是置了一个true的布尔值,并没有引用Gmk文件,所以迅龙弓箭并没有部件隐藏机制,只是简单的纳刀旋转折叠而已。
事实上如果你打开它引用的这个文件路径,会发现弓箭有且仅有一个部件管理文件,也就是Bow_PartsGmk001.user文件。也就是说弓箭系武器,要么带有部件隐藏机制(具体点儿说也就是部件1常驻显示,2纳刀隐藏拔刀显示,3纳刀显示拔刀隐藏),要么就干脆没有。
其他武器你也可以参考这个思路来研究它们的pfb文件和Gmk文件,看看它们到底有什么不同。比如大锤的Gmk002和Gmk003分别对应了百龙大锤和奇怪龙大锤的部件隐藏机制,但隐藏机制却不同。
使不带部件隐藏的武器实现部件隐藏效果
前面分享的时候提到过,炎火(百龙)大锤虽有部件隐藏的机制,但它却是在满蓄时才变形,不属于纳刀、拔刀时的部件隐藏。(这里拿错成了百龙大锤,不过和炎火大锤是一样的)
从提取的模型来看,它同样被分为了3个部件(之后以数字代称),如下图所示:
只是这次隐藏机制不太一样,1是常驻显示,而2在纳刀、拔刀时都显示,满蓄时隐藏;相反3在拔刀时隐藏满蓄时显示,视觉上形成了满蓄时刀片“弹出”的效果。当然,这也是由大锤的Gmk002文件规定的机制。
那么如果我想做一个纳刀和拔刀带部件隐藏机制的大锤mod,该怎么办呢?比如阁螳螂大锤mod,纳刀和拔刀也明显不是一个东西。
这时候最好把思维放开,可以大胆假设大胆尝试。既然泥翁龙弓箭有3个部件,而这把炎火大锤也有3个部件,那我让炎火大锤的pfb文件引用弓箭的Gmk001文件,会不会实现纳刀和拔刀的部件隐藏呢?那就试一试。
首先打开炎火大锤050的pfb文件,运行RE_RSZ模板,可以看到它的部件管理一项引用的是大锤的Gmk002文件。
那么我们要修改的就是它了。如果你觉得不好修改这一串路径的16进制文件,这里有一个偷鸡的方法:首先将弓箭的Gmk001文件复制出来,放到大锤的Gmk文件路径下,这样它们的基础路径是一致的。
然后将弓箭的Gmk001文件改名为和锤子的Gmk文件一样的格式,最后一位数字可以保持001,或者改成004、005随你喜欢,这里我改成了004。
最后在炎火大锤的pfb文件内,将Gmk002的数字2改为4,这样路径都不用变,只改一位数字,即可让炎火大锤引用弓箭的Gmk001文件。注意整个pfb文件内有两处数据写入了Gmk文件,修改的时候也都要改。善用搜索功能,可以帮你定位它们的位置。
修改完毕后,左上角保存,安装mod,来看看炎火大锤现在的效果如何。
可以看到成功实现了纳刀和拔刀的部件隐藏。原本弹出的刀片也就是部件3在纳刀时显示而拔刀时隐藏,收拢的刀片也就是部件2在纳刀时隐藏而拔刀时显示。同时,满蓄的变形也消失不见了。
这样一来,想要制作类似阁螳螂大锤的mod,就可以按照阁螳螂弓箭mod一样,将纳刀形态和拔刀形态分别绑定炎火大锤的部件3和2,即可实现效果。同样记得将部件1缩放为0,让它全程隐藏,因为我们只需要后两个部件。
狩猎笛也可以如法炮制,比如我的阁螳螂狩猎笛mod,也是让冰牙龙狩猎笛的pfb文件引用弓箭的Gmk001文件从而实现这个拔刀变形的效果。
在使用这个方法时,需要注意的有两点:其一,你所选择绑定的武器模型最好包含3个及以上的部件,最好是刚好3个,因为泥翁龙弓箭就是3个部件,而你引用的是弓箭的Gmk001文件,所以超过3个或者少于3个会形成什么效果我还不知道;其二,这3个部件的名字最好是统一的格式,比如泥翁龙弓箭的3个部件都是以Bow_053命名,而炎火大锤的3个部件也都是以Ham_050命名。我尝试过给带有Twoside命名的武器引用弓箭的Gmk001文件,但并未按照预期生效,所以最好遵守一定的规则使用。
而实际上也只有大锤和狩猎笛需要这个方法来实现效果,其他我分享的武器基本都自带纳刀、拔刀部件隐藏机制。个别带有盾牌的武器也可以将盾牌绑定剑/枪的模型再修改pfb文件的id替换盾牌,比如阁螳螂片手剑和阁螳螂长枪mod都是这么做的,关于这部分的讲解不在这篇教程的内容里。各位可以去我的阁螳螂武器合集贴里查看武器变形的效果。(https://www.caimogu.cc/post/164608.html)
结语
这篇教程的内容都是我自己研究出来的,基于本人接触mod制作并没有多长时间,可能某些地方会不完善。so如果你有意见或建议,可以尽情提,我理解的了就把它加到教程里,理解不了那就属于我自己的问题了(我才不会告诉你我还没研究Gmk文件的生效原理就来写教程呢)
另外这篇专栏B站同步更新,也可以去B站关注俺捏,俺的B站id:不太亮的诸葛亮。