文章开头,我给大家讲一个故事:从前有一坨屎,它的名字叫MilkShape3D。
至于为什么这么说,我后文会解释。接下来我们直接切入正题:
CS1.6作为一款老牌经典游戏,它当中的模型还是很具有利用价值。现在一些比较专业的模型网站上面有许多优秀的模型,但当中有一些没有绑定过动画,还有一些甚至是要收费,普通编程爱好者获取起来就会相对麻烦,而CS1.6本身就有很多不错的模型(附带动画),是一笔很宝贵的财富。CS1.6的模型放在根目录下的cstrike\model中。
但是CS1.6模型格式并不是我们平时熟悉的maya或者max格式,而是对于大部分人还是比较陌生的mdl格式。mdl格式其实相当于一个压缩包,里面汇聚了贴图、模型、动作等等。要解压mdl,首先要下载解压工具,这里我使用的是一款叫做HLMV的软件,我的版本是1.3.5,还是比较新的,百度一下就可以下载。
接下来我们就要选中想要导出的模型,比如v_ak47.mdl(这里顺便提一下,人物模型没什么好多说,枪支模型当中v代表从我们的视角看出去的模型,就是含有手臂的那个,w代表敌人手里拿着那把枪时显示的模型,最后一个p模型代表枪被扔在地上是显示的模型)。
打开之后就像下面一样
接下来选择工具→配置工具,把那两个路径改到和你下载下来之后那两个文件的路径一致。那两个文件就在plugins文件夹里面。
改完之后选择工具→拆开模型,好像要填路径什么的,那就是你要解压到的路径。解压完之后到指定文件夹就可以看到如下文件
(上图中的mdl是我直接复制过来的,各位无视就行了)接下来我来给大家很快地讲解一下这些文件是干什么的。图片就是贴图(它格式其实有问题的,之后再说),smd文件就是一种模型格式,右键记事本打开可以看到骨骼信息,这里我们不展开,因为不需要知道那么多。smd文件有两类,一类是模型smd,另一类是动作smd,同一组骨骼对应的模型smd一般只有一个,而动作smd就可以有很多个。上面列表中lhand,rhand,f_ak47_template就是模型smd,而其他的诸如draw,shoot都是动作smd。两者必须要配合才能生效。qc文件是控制这些动作的(比如播放快慢,播放音效),这里我们用不到。
到了这一步,其实已经差不多了。我们可以准备导入3dsmax了,当然3dsmax本身是不认识smd,需要装一个插件,可以在http://www.chaosincarnate.net/cannonfodder/cftools.htm上下载到。
下载后把对应的文件移到对应的目录下,打开3dsmax(作者是2012版,因为只有2012版以前的才能导出.x文件)。选择导入,这里记住要先导入模型smd然后再导入动作smd,否则第一帧会显示成模型smd,动作就不连贯了。分别把lhand,rhand,f_ak47_template导入,接下来就可以导入动作smd了,这里我导入的是reload,接下来拖动时间轴就可以看动画了。另外讲一下贴图问题,当你导入模型smd时它会问我们要tga格式的贴图,我们只要在ps里将那些bmp另存为成tga格式,它问你要的时候选中对应的就可以了,这个相信大家都会。
最后说一下,为什么milkshape是一坨屎。milkshape看上去也能解压mdl文件,但解压出来的v模型手臂位置完全是错误的,害我折腾了好几天,还以为smd导入还有什么特别的算法在里面,强烈不推荐大家使用。
教程当中如有不足之处,欢迎批评指正;如有疑问,可以留言,作者会尽力帮助大家。