13 12
发新话题
打印

War3模型制作高级实例教程--教你做高级自定义模型

War3模型制作高级实例教程--教你做高级自定义模型

此教程出自u9网
[color="Blue"]7878990整理


[color="Red"]

教你做高级自定义模型


1
最终效果:


2
spartan-117的模型和材质都来自于halo,最初我们只有这样的一个spartan-117模型,已经有国外的玩家为他制作了材质,不过仔细观察,你会发现它的材质非常复杂,由很多贴图构成,这样我们是无法直接用到wc3中的,wc3中的模型只能拥有一个diffuse贴图,那么我们只能求助于3dsmax的贴图烘培功能,我们利用现在已经做好的模型直接渲染出表面效果(包括各种高光,反射)然后将这层“外表”烘培成一个单独的贴图,再用于模型。
下图显示了原模型复杂的材质,而且还是一个多重材质,这样的材质是不可能被wc3承认的。      


3
接下来的就是对模型材质做大量的修改啦,以得到图和材质参数,以得到最好的渲染效果。在一番调节后,就可以进行贴图烘培了,为了得到更真实的效果,我增加了一个sky light并用max自带的light tracer渲染。


4
打开烘焙对话框


5
先选中spartran-117的模型,如图设置烘培参数。这里我们只需要改动两个地方,一个是mapping coordinates下的object要勾选 use existing,这样我们就可以使用模型自己的UV坐标来烘培而不需要系统去自动分割。另外一个是点击add按钮增加一个completemap并将size更改为512。


6
点击render按钮就可以得到烘焙结果了,如图


7
将这张图保存好,然后使用backfromfive工具将这个在3dsmax5以上版本打开的场景导出,以便3dsmax5使用。如果你不会用这个工具,也可以把模型导出成3ds格式,在3dsmax5中导入3ds就可以了,我们现在仅仅需要那个烘培好的贴图和这个模型而已。(暴雪为魔兽3写的3dsmax开发工具只能在3dsmax4,5版本上运行)


8
启动安装有war3arttools(第一期教程里有下载地址)的3dsmax5,运行backfromfive创建的脚本或者导入spartan-117的3ds模型。打开材质编辑器,指定一个warcraft III 材质,并在diffuse通道使用刚才烘培的那个贴图,再把此材质赋予给模型。


9
这时你会发现spartan-117的头盔以及身体上有几处没有贴图,这个时因为它的头盔和你几个没有贴图的地方有其余的ID号,由于wc3不支持多重材质,所以必须对其进行修改,我时将他们都detach下来,然后重修修改uv的坐标,再赋予这个材质就可以了,大家也可以把材质ID更改,然后修正一下uv坐标,使头盔部分与烘培贴图中黄色的部分对齐,当然还有更简单的办法,将面罩分离后直接赋予一个新的warcraft III材质,但是这个材质必须使用一个纯黄色的贴图以在wc3中得到颜色效果,记住贴图必须要是64X64 128X128 256X256 512X512的尺寸。


10
经过简单的修改model基本成行了


11
下面的部分就是本文的重点,制作动画,并定义动画。由于war3arttools不支持character studio的骨骼,在动画是需要对连接的大量box作正向动画(FK)以充当骨骼,自然工作效率低下而且很难
制作出高水准的角色动画。不过去年初我就找到了比较好的解决办法,以让我们能使用cs的先进功能,不过仍然由于最后要对每块骨骼更改控制器而显得比较麻烦。还好前几天有了时间就写了个脚本将一些烦琐的工作自动化,现在工作简化了不少,过去需要数小时的工作也许现在仅仅需要5分钟...................
先对模型创建一个骨架,war3arttools对骨骼的名称有特殊的要求,这样在游戏中可以实现一些特殊功能,比如道具的附着。所以对cs骨骼该名显得很重要,不过先不用管这个,最后使用脚本能轻松搞定它。不过骨骼构造就一定的考究了,我建议大家象我这样搭建2足骨骼。可以考虑增加一个骨盆.............(太多的骨骼对与后面的皮肤连接将会很不方便,而现在这个骨架符合暴雪的风格)


12
剩下的便是动画,在wc3中动画是这么规定的。比如stand,attack都因该有一段或者几段循环动画,而walk,dead这些动作需要一段循环动画,这些动画片断都必须在trackview中标示出来,怎么标示我们后面会讲。我们要作的就是制作这些循环动画。我们不必考虑这些动画间的衔接,wc3会自动衔接他们的。在这个例子中我只会完成stand和walk这两段最基础的动画,相信学会了制作原理,自然触类旁通了。首先来看stand,这里我做得比较简单,只需要在10帧的范围内,保持这个模型不动就可以了,当然你可以给模型加上呼吸等等的动作来使动画看上去更生动...........现在骨架是站立不动的,我们将让现在这个姿势作为stand的动作,打开运动编辑面版,选中所有的骨骼然后点击keyframing下的set key在第0帧和第10帧之间分别创建一个关键帧


13
然后使用general卷展栏下的save segment按钮保存当前的动画


14
在保存对话框中一定要勾选gengerate a keyframe per。这样在0到10帧的范围内,每帧都会创建关键。


15
刚才制作的这段小动画不仅仅是为了stand,更要为骨骼的定型,必须要这么一段动画来将骨骼固定住,如果骨骼在第0帧相对于它的初是位置(这里的初始位置指指定了皮肤连接后)有那么一点点的变动都将造成皮肤连接的失败。所以即便你要另外制作stand动画,这个步骤也必不可少。保存好后我们可以制作walk的动画段啦,虽然叫walk,不过我还没发现魔兽中有什么单位是在walk,都是在run的。接下来我们要利用现有的动作文件拼合一段run的动作到现在的场景中,在3dsmax5中我们只有求助于cs的动作流模式啦,我在3dsmax自带的动作库里找到了一段比较合适的跑步循环,这段动作文件将用于制作模型的跑步。(这也就是使用cs在wc3模型开发上的好处,可以快速高效地将这些动作元素组合起来)打开这个跑步文件观察了一下,符合我们制作的要求,于是准备进入动作流模式衔接动画。


16
在验收跑步的bip后,打开动作流编辑器


17
点击motion flow卷展栏下的show graph按钮,打开编辑对话框。


18
在这个对话框中加入刚才保存的那个stand和我们选中的用于walk的动作文件。(先通过create clip按钮创建两个空白的clip到窗口中,然后右击这些clip打开bip导入对话框,接下来导入“stand”和“疾跑“两个动作文件即可。


19
点击motion flow script下的define script按钮创建一个新的连接脚本


20
然后回到剪辑片断对话框中,分别点击stand和疾跑,这样在stand和疾跑之间就建立了连接。


21
不过系统为我们自动生成了两断动画之间的过渡,我们并不需要这个过渡,仅仅是要他们连接在一起并且方向一致就可以了,于是选中script列表中的stand然后点击motion flow script卷展栏下的edit transition打开过渡编辑器。


22
把对话框里的参数按照下图设置。这样就不会在两段动画间产生过渡动画啦。


23
回到视窗播放动画观察一下,发现过渡动画已经消除,不过两个动画间的衔接角度不太正确,目前疾跑比stand的朝向要左偏离了大概20多度。下面把视窗播放动画的时间设置为10帧到28帧,这样动画播放会始终在“疾跑”这个片断的范围类循环,我们在正前方一边观察模型的动作一边调节过渡编辑器里的angle参数,直到在视窗中疾跑的朝向超前为止,现在angle的角度为26度。


24
将播放动画的时间调回原来的设置,再播放动画一下,可以看到两段动画已经很好地衔接到一起而且互不相扰。好了按照我上面说的方法,我们还可以先预制一些动画片断,如attack,dead,spell等等,然后通过动作流模式将他们完美地衔接到一起。接下来我准备把现在这段动画的第1帧到第10帧定义为stand动画片断,第11帧到第28帧定义为walk动画片断(千万不要把第0帧定义到动画片断中,这个是暴雪的规定)。


25
在定义动画片断前,我们还有一个重要的工作要作,那就是将cs的骨骼完全坍缩成普通的几何体,而它的动画将继承到3dsmax的标准控制器上,这个工作必须借助外部插件才能实现,我使用了一个叫snapshot的插件完成这个工作。它可以将任何3dsmax的物体的动画转换为3dsmax标准控制器控制的动画,cs的骨骼系统也不例外。下载这个插件,将它的文件拷贝到plugin文件夹里,我们可以在工具面版找到它(utility)。打开snapshot keys工具,通过它我们将cs骨骼转换为标准动画物体。


26
选中所有的bip物体,然后点击create keys按钮在指定的动画范围内转换。(我们可以把step time改成5,这样动画的数据量不至于太大,不过关键帧间隔过大,会造成一些动画细节的损失,更重要的是会使一些旋转在一个帧内超过90度,这是wc3不支持的,出现这些情况都会降低我们动画的质量,所以在文件可以接受 的范围内适当更改这个值)


27
动画已经转换完毕,现在是清理骨骼的时候了。目前场景中还存在一些对我们无用的骨骼,比如Footsteps,手指,脚趾,骨盆等等,这些骨骼是不需要的,但是在cs未转换时我们又无法去处,现在可以将这些都删除掉,直到符合我最开始推荐的那种骨骼样式为止。完全删除后播放动画可以看到动画仍然存在,现在所存在的骨架已经可以部分地被wc3支持了。


28
为什么说部分了,因为这些骨骼转换后的控制器并不是wc3支持的TCB控制器,而且命名也有很大的问题,当然手动完成这些工作很重要不过实在是非常烦琐,所以我写了个小脚本自动完成这些工作。转到工具面版(utility),然后打开maxscript,点击run script,然后选择我提供的那个叫wc3 convertor.ms的脚本,会弹出这个对话框。


29
很简单,点击那个唯一的按钮依次将场景中所有的骨骼拾取一遍就可以自动完成控制器的转换和骨骼的改名。

30
到添加轨迹片断的时候了,这个是唯一的办法让wc3知道哪段动画是walk,哪断动画是stand。打开track view。


31
选择objects轨道


32
然后使用tracks>note track>add命令来增加一个notes轨道


33
刚才我说了,让frame1 到 frame10为stand,frame11到frame28为walk,那么我们分别在第1,9,10,28帧的地方在notes轨道上创建一个keys(通过右键菜单里的add keys命令实现),然后分别右击这些keys,打开编辑器,在第1和9帧的key里输入"stand"(包括引号),第10,28帧的key里输入"walk" 340


34
好了,现在wc3已经能够识别我们制作的动画段啦,接下来定义骨骼的属性,打开工具面版里的user property editior。


35
选中场景中所有的骨骼,然后将geomertry property更改为bone


36
所有骨骼的工作就完成了,接下来处理皮肤。皮肤制作相对于我们平时的蒙皮要简单很多,由于wc3不支持一块皮肤受多重骨骼影响,所以骨骼和皮肤之间不惜是一对一的关系,而且这些互不影响的皮肤都是分离的单独的物体。在皮肤之间结合的地方必须是无缝的(第0帧),这样在游戏中wc3会自动连接这些皮肤。我们的工作就是将这个完整的spartan-117的模型分解为多个独立的皮肤,大家使用mesh里的detach命令就可以啦,最后我把模型分解成这样的几部分,一对应我们制作的骨骼(以不同颜色区分)


37
可以看到模型被分解成了16块,正好对应到16块骨骼上,下面使用连接工具,在第0帧把这些皮肤连接到他们对应的骨骼上,然后再选中所有的皮肤,进入刚才修改骨骼属性的那个user property editior编辑器,把皮肤属性改成mesh,还要把mesh properties卷展栏下的connected勾上。


38
继续编辑材质,打开材质编辑器,新建一个warcraftIII材质,将diffuse贴图设置为我们最先烘培好的那个贴图文件。然后选择所有的皮肤把这个材质赋予给它们。(当然也可以在模型被分解前把材质赋予给它们,detach后UV坐标仍然会保留)在烘培材质的时候我们已经解决了多重ID的问题,所以这里我们能观察到所有皮肤都赋予了材质效果,回放一下动画,发现皮肤接缝的地方全部都裂开啦,没关系,到wc3里就好啦。


39
好在暴雪考虑得比较周全,在war3arttools里已经内置了一个预览插件,这个插件可以让我们不导出模型到游戏就可以直接光看模型在游戏中得实际效果,非常方便。转到工具面版,打开warcraft III preview,什么都不用改,直接点击preview model按钮,就可以预览spartan-117的英姿啦......................(在预览中可以按下X,P,L等键来控制预览的效果;+,-键控制动画片断之间的切换,还有很多具体的控制参数有需要的话请参看reference..........................)


40
预览后效果比较满意,关系预览对话框,然后使用file菜单下的export命令,在导出格式上选择*,mdl,导出整个模型.........至此,整个3dsmax部分的工作就告一段落。最后需要去wc3的地图编辑器把这个模型加入地图里就ok啦。在接着继续wc3地图编辑器部分的教程前,再给大家提供一个我写的脚本工具,这个脚本工具可以让你导出顶点动画或者简单的动力学动画,比如布料的模拟,原理就是把所有的triangle face都detach,然后将它们的动画记录下来。(其实我个人认为这个用途不大,虽然可以快书制作不如旗帜之类的动画,不过dynamic动画的循环仍然让你恼火,写这个脚本主要是为满足一下wc3campaign上的几个朋友的需求)

41
好了3dsmax部分的工作算是全部完成啦,接下来吧模型导入到worldeditor里。运行warcraft3根目录下的worldedit地图编辑器。


42
运行物品输入管理器(热键是F12)


43
使用ctrl+I,打开文件导入对话框,然后重复这个操作分别把我们刚刚导出的两个文件分别导入we里(一个*.mdx的模型文件,一个是*.blp的材质文件)。导入好后如图。


44
现在双击这两个导入了的文件,还要对其进行修改,将它们各自的路径都改成如图所示的那样(也就是文件名前不要有其它的内容)


45
然后退出导入管理器,打开物体编辑器(热键是F6)


46在左边右键菜单中点击“新的自定义单位”创建一个自定义单位,我创建了一个以human农民为基础的自定义单位,然后找到更改模型属性的地方,如图


47打开它,然后选择我们刚才导入的模型就可以啦


48
然后大家还可以继续更改它的一些属性,我修改了名字和移动速度,然后放几个这样的单位到地图上,保存读图测试一下就可以看到我们制作的spartan战士啦。


好累,终于写完啦,希望大家喜欢...............sleeping
附件: 您所在的用户组无法下载或查看附件
Alone for a while I\'ve been searching through the dark,For traces of the love you left inside my lonely heart,To weave by picking up the pieces that remain,Melodies of life - love\'s lost refain.

TOP

太好了,很详细,有没有图片大一点的?每张图都要另开一个窗口很麻烦啊。

TOP

太好了,非常详细。有没有图大一点的,每张图都另开窗口太麻烦了。

TOP

ddddd

TOP

感谢搂主阿!

TOP

最近兴起想学做模型.....顶!!!!(赚钱下工具...)

TOP

学习学习~~~

TOP

LZ辛苦你拉```
我会好好学习的``

TOP

想死的谁有wc3 convertor.ms这个脚本啊??

TOP

我也没有...
就手动修改吧.

TOP

 13 12
发新话题