游戏达人
- 贡献度
- 377
- 金元
- 5870
- 积分
- 2115
- 精华
- 2
- 注册时间
- 2006-3-12
|
2.1.导入模型
先准备好需要导入的文件。做衣服需要先导入骨架和身体,做武器最好先导入一把同类武器做为大小和方向上的参考。当然你要从零开始建骨蒙皮再导出也是可能的,但是没必要自找麻烦吧。
w写过中文的制武器教程,所以本文以衣服为例了。导入身体和骨架,需要准备的文件包括msh,mmh,phy,mao和对应的dds(或tga)。原版游戏的这些文件都压缩在erf中,文件位置参考1.2节。不过本人推荐基于nb身体来制衣改衣,因为原版的身体比较粗糙而且有内衣……
从游戏目录的modelhierarchies.erf中解压出hf_arm_nud_0.msh和hf_arm_nuda_0.phy,从nb的文件夹里找到hf_arm_nud_0.msh文件,把这三个文件复制到同一个文件夹中,这样人类女性身体的模型文件和骨骼蒙皮信息就齐了,但是还没有材质。既然用的模型msh来自nb,那材质贴图也选用nb的,到刚才msh文件的同一文件夹下找到hf_arm_nuda.mao,以及4个HF_100_?.dds文件,都复制到刚才模型所在的文件夹,这样材质与贴图就齐了。
四个贴图文件,_d,_n,_s,_t分别对应diffuse,normal,specular,tint贴图。这个本节最后讲mao的时候再说。而关于模型文件的命名,此处以hf_arm_nud_0.msh为例,h=human,f=female,arm=armor,nud=裸体,全部加起来就是人类女性身体裸体的模型。注意鞋子和手套对应名称为boo和glv。以此类推,精灵男性手部模型为em_glv_nud_0.msh。e=elf,m=male。
2.1(a).转化为FBX导入(3dsmax2010)
这是最老式的导入方法,也是在2010年2月前唯一的导入方法。个人不推荐制衣者用此法导入。制武器就无所谓了。
此法流程为将mmh,msh,phy文件转换为fbx文件,然后使用3dsmax2010版本直接导入fbx文件即可。文件转换方法参考此帖:
http://3dmgame.chnren.com/bbs/showtopic-1305306.html
将那篇文中的转换步骤倒过来即可。注意,fbx的导入导出需要3dsmax2010以上版本。对于较低的版本,也可将fbx转为obj或3ds来导入,但是会丢失所有骨骼蒙皮信息,所以我前面说过,这个老方法不适合制衣,但制作武器则无所谓,因为武器无需蒙皮。
上面的看看也就罢了。后面的内容将全部基于下一种导入方法。
2.1(b).使用Eshme的导入插件(3dsmax2010,2009测试可用,8,9应该也无问题)
这人是《上古卷轴》ec身形的作者……咳,扯远了……不像该作者的导出插件,此导入插件乃是神物!至少在这个年代是如此。本人二套衣服,d网的amy套装,都是使用此物导入的骨骼与身体作为基础。
在出现更新更强的导入插件之前,推荐任何导入流程都通过该插件来进行,可至此处下载:
http://www.dragonagenexus.com/downloads/file.php?id=895
本人暂用4.10版本,简述安装方法如下:
(1).将DAOImporter.mcr复制到3dsmaxuimacroscripts文件夹下
(2).将4个bmp文件复制到3dsmaxuiicons文件夹下(按钮图标而已,此步可省略)
(3).开3dsmax,选Customize->Customize User Interface
(4).弹出来的窗口中选到toolbars,点击new新建个空的工具栏,名字随意。见下图:
(5).见上图,在category下拉框中选tools,然后在下面的action窗口中找到"Dragon Age:
Origins Model Importer"。选中后把这个importer拖到刚才新建的工具栏中做成按钮。
(6).把这个工具栏拖到你顺手的位置去吧。我放到渲染按钮右边去了。收工。
然后开始导入,目标文件是上面说到的女性身体和骨骼,即msh,mmh,phy,mao和4个dds文件。根据喜好你也可以导入其他的,需要的还是这几个文件类型。
(1).按刚才新作的导入按钮,出现设定框
(2).在file后输入mmh文件路径和名称,或按...浏览选择。龙腾的模型普遍很小,左边的worldscale推荐开100,这样模型导入时会放大100倍。导出时记得相应也要设100的worldscale,或者导出前自己手工把模型缩到1%,否则在龙腾中会出现巨人。
(3).其他设定稍后再补充讲解。按import导入。如果前面全部按照我说的过程来做,会在3dsmax当前的场景中出现人类女性身体和骨骼:
(4).那些胶囊体是碰撞体,名称以Collision开头。对于placable的物体,碰撞很重要;但是对于衣物,碰撞无所谓,可以把它们都隐藏了,执行max脚本语句: hide($collision*) 即可。不会用max脚本也没关系,其实很多max高手也不去涉猎脚本的,就自己手动的一个个选中那些胶囊体然后隐藏吧。
(6).身体出现了。和谐期间,正面就不贴了。有过制衣改衣经验的,应该知道下一步怎么办了吧——开始沿身体拉模型了,或者把其他模型往这个身体上套吧……如果导入的不是裸体模型而是盔甲模型,比如hf_arm_hvy之类的,那可以开始拆了,撕掉几片衣服也不用重新蒙皮,直接再导出就可以了。d网上大部分“暴露”型装备都这么改出来的。
2.2.导出模型
本来导入之后应该写模型蒙皮绑定才是,但是龙腾的情况比较特殊,我不得不把导出提在前面来写。目前存在三种从3dsmax中导出模型的方法,遗憾的是,和导入不同,每种方法都有明显缺陷。
2.2(a).fbx导出法
优点:出现最早。
缺点:我没有成功导出过一件衣物,d网上也从没看到有人成功过。
3dsmax2010可以直接导出为fbx文件,随后可把fbx转化为msh,mmh,phy。转化方法可以参考w的教程帖子。对于武器这个方法是可行的,d网早期的武器都是此法制作。但是对于蒙了皮的物件,比如衣物,按此法制作的mmh文件似乎会丢失骨骼的初始位置信息,并带来一系列的错误。d网上没有一个衣物作者证实能用此法成功导出衣物的……我在这里列出此法,各位了解一下就可以了……
2.2(b).ChewyGumball的导出插件
优点:出现较早,对蒙皮的物件完美支持
缺点:导出的法线信息有偏差。作者很久不更新了。
当前d网90%以上的武器与衣物都是采用此插件的1.01版本进行导出:
http://social.bioware.com/project/563/#files
注意,该插件1.50以上的版本采用了新算法,而这个新算法导出的蒙皮物件有严重问题。建议使用1.01。
如果没有第三种方法,这个就应该是我本次重点介绍的方法了。可惜的是,这个插件离完美还差一步——导出的法线信息不准确,造成导出的模型不够平滑。虽然这是个小问题,但是本人无法修正,原作者升级多次也仍然没修好,后来更是停止更新了……无奈我决定还是不详细介绍这个了,有兴趣的同学可以自己研究下。
2.2(c).Eshme的导出插件
缺点:对蒙皮物件的坐标、方向、比例算法有问题
优点:除以上问题外无其他已知问题。而以上问题可以被回避
下载地址:
http://www.dragonagenexus.com/downloads/file.php?id=895
本人暂用2.10版。
这位的导入插件是神物,上一节中介绍过了。可惜导出插件就比较惨了:大部分蒙皮物件,导出后会变成一团或者一片绝对让人认不出来的东西……
我读了一下脚本,发现其计算蒙皮权重时,漏算了蒙皮物件的坐标、方向、比例。只有坐标位置在原点,角度全为0,比例是100%的物件,才能正确导出……难怪d网没有出现用此插件制作的衣物……
为此我写了个脚本,作用为自动调节所有选中的物件至适合导出的位置、角度、比例,但保持所有顶点位置不变(以后简称此过程为“零化”)。各位可在完成建模后,或者改模覆盖完身体后,且在蒙皮之前,运行此脚本:
for i in selection do
(
i.pivot = [0,0,0]
ResetXform(i)
i.parent=$GOB
convertTo i (Editable_Poly)
addmodifier i (Edit_Normals())
addmodifier i (Unwrap_UVW())
)
注:脚本使用方法为,选中所有需要调整的物件(对于从原版中导入的物件,比如人体,已调整好了,无需再选),Maxscript->Maxscript Editor,把上面那段代码贴进去,然后Ctrl+E。
此外此段脚本还会给这些物件加上edit normals和unwrap uvw修改器,这都是导出的需要,所以我也一起加进去了。
运行完这段脚本之后,再进行蒙皮,最后再用Eshme的插件导出,可达最好效果。这也是我把导出放到蒙皮之前来讲的原因。此处bug本人已pm了Eshme,希望下一版本的导出插件可以修正。
此插件的安装方法如下:
(1).把"startup"和"daotools"两个文件夹解压到3dsmaxscripts下
(2).开3dsmax,选Customize->Customize User Interface
(3).弹出来的窗口中选到toolbars,category中选到DAOTools,把action下面四行拖到导入插件所在的工具栏中做成按钮。(也可以参考2.1节内容新建空的工具栏然后拖这四个按钮进去)
(4).现在这个工具栏,包括2.1的导入按钮在内,应该有5个按钮。把这个工具栏拖到你顺手的位置去。俺仍然是放到渲染按钮旁边。收工。
安装完后,首先点击Dragon Age: Origins Tool Setup进行设置
worldscale设为与导入插件相同的值,我仍然是用100。Game Path设置游戏路径,其中的两个xml编译工具该插件会用到。Export Path设为自己的导出路径,导出的文件都会被放到那里。按ok结束设定。
另外3个按钮,Model manager修改模型属性用,下一节重点讲。animation exporter导出动作文件用(ani),暂时不介绍。model exporter导出模型用,下一节最后讲。
2.3.蒙皮绑定。灰羽装实例。
灰羽套好像是07年一个日本人做的,09年被人搬进上古了,然后今天俺就拿它来当例子,把改衣流程跑一遍。
2.3.(a).改模及建模注意事项
首先按前面的介绍装好Eshme的导入导出插件,然后导入人类女性身体模型及骨架。再把灰羽的max文件合并进来。(当然你先开max文件再在里面导入灰羽也行)
先把导入的身体隐藏了。然后修灰羽的模,把灰羽自带的身体删掉,留下衣服。然后把肩上的羽织披肩选中,detach成单独的物件,方便调整。
显示最初隐藏的身体部分,把披肩移过来,转一下角度,缩放一下大小以适应龙腾身体:
由于形状不是很合身,可以加个FFD修改器调整形状,使它紧贴身体。
下半身连衣长裙同样处理:
呃,忘说了,小裤裤也同样处理。。。不过有些邪恶人士经常遗忘小裤裤。。。
最后把各个物件都塌陷为editable poly(可编辑多边形)。
至此,第一阶段完结。下一阶段将是蒙皮。
这部分要求一些基础的max操作,我若详细讲解每一步,这篇教程将成为3dsmax教程而不是龙腾mod教程。。。所以新入门的同学请自己谷哥白度3dsmax的一些基础教程看看,或者请教那些老手。移动、旋转、缩放物件很简单的,自己摸索即可。修改器中仔细看看edit ploy(编辑多边形),FFD这些就够了。
自己建模的同学,请展好uv。记得每个部件都要塌陷一次(原来蒙了皮的身体除外)。因为导出插件并不会计算所有修改器的堆栈结果的,而只计算特定的几种修改器。若不塌陷,你的某些修改器的效果导出后是没有的。。。至少目前的导出插件都是如此。。。
2.3.(b).蒙皮
开始之前,回忆2.2的内容,先对所有要蒙皮的物件进行“零化”处理,否则导出后出错。重复一遍方法:选中所有要处理的物件,Maxscript->Maxscript Editor,将以下脚本贴入:
for i in selection do
(
i.pivot = [0,0,0]
ResetXform(i)
i.parent=$GOB
convertTo i (Editable_Poly)
addmodifier i (Edit_Normals())
addmodifier i (Unwrap_UVW())
)
然后Ctrl+E运行。
此脚本最后三行还帮你进行一些额外操作:把物件的父体设为GOB,给物件添加edit normals和unwrap uvw修改器。这些都是导出插件的要求,所以我顺手帮你们做掉了。
“零化”完成后,开始蒙皮。蒙皮的主流方法有2种,封套蒙皮,包裹蒙皮。
2.3.(b).1.封套蒙皮
适用有骨无身体,无物可包的情况。在包裹蒙皮后如果效果不好,也可改用此法。缺点就是费时。本人蒙个200根骨的龙儿大约需要一整天。。。新人推荐还是先用包裹蒙皮吧。如果你的衣服选的好,几分钟就完事了。
封套蒙皮范例推荐看看kiruru的上古卷轴改衣教程。见5楼参考资料。
本人简述如下:
(1).给物件加skin修改器(中文名:蒙皮)
(2).点开那修改器,选envelope(封套)
(3).按bones后面的add添加控制这个物件骨骼,可到场景中点击拾取,或者开物件列表选。至于到底用哪几根骨,就靠自己想象了。左边手套就用左手的几根骨控制,右边靴子就用右小腿和脚板的骨骼控制,等等。
(4).拉动那些胶囊形的封套,内圈绝对控制,外圈计算权重控制,各个骨骼的控制范围都由自己调整。顶点颜色由蓝->红色,权重逐渐加大。
(5).对于特殊的部位,可以手工来刷权重。对于特殊的顶点或区域,可以选中那些顶点,打开权重表,慢慢调整。
2.3.(b).2.蒙皮包裹
此法原理是,设定包裹物a和被包裹物b。a没有蒙皮,b有蒙皮。对于a的每一个顶点,找到与他最接近的一个或几个b的顶点,然后根据这些b的顶点的蒙皮信息,来计算a的这个顶点的权重。
了解到这些,蒙皮包裹的优缺点就很明显了。优点是快,根据b的权重,自动算a的权重。缺点是需要一个已经蒙了皮的物件作为被包裹物。计算时根据距离来算的,所以长袖子可能被蒙到腰上,长裙子底端可能被蒙到脚后跟上。。。
所以新人选择入门衣物时,建议回避大袖子,长裙,手套等等。熟练后就无所谓了。因为包裹后也可以再开封套或者权重刷权重表来进一步调节。
现在以灰羽为例,披肩没有蒙皮,作为a。导入的人类女性身体已经有蒙皮,正好作为b。选中披肩,加入一个skin wrap修改器(蒙皮包裹)。点开后选中“控制顶点”,面板下面的“权重所有顶点”钩上,然后面板中按add,单击身体的模型(导入后默认名称为HF_ARM_NUD_ArmorM1)拾取为被包裹物。等待权重计算完成。这样蒙皮包裹就完成了。你可以拖动骨骼看看自己的蒙皮物件是否跟随骨骼运动。
蒙皮包裹修改器的信息无法被导出。可以按“转换到蒙皮”按钮。这样就会自动根据蒙皮包裹计算的权重,给该物件添加个蒙皮修改器并配上同样的权重。完成这步后,删除“蒙皮包裹”修改器,留下“蒙皮”修改器即可。再扭动各个骨骼检查一下蒙皮是否完成。看完后Ctrl+z还原到标准姿势。
现在这个物件的修改器堆栈是这样,也是完整的可以正确导出的状态:
前面也说过了,如果有大袖长裙之类的结构,包裹蒙皮的效果不会很好。可以自己动动各个骨骼的位置和角度,摆出不同的姿势来看看衣物的情况。记下要修整的位置,参考2.3.(b).1讲的封套蒙皮的办法来进一步加工——点开“蒙皮”,选中“封套”,然后对有问题的部位进行微调。
比如灰羽这些群叶,就比较麻烦……偷懒的做法是把这些群叶全部蒙到腰椎骨上(选中这些顶点,开权重工具weight tool,然后把腰椎权重设为1.00),但是这么做出来的裙叶走动起来会很呆板。所以我还是手动调整了下,大腿和腰椎上都有些权重,这样当人物跑动时,裙叶既不会变形太厉害,也不会一动不动的那么呆板了。面对不同的问题,自己设法找出解决方法,也是做mod的乐趣之一.
值得一提,3dsmax蒙皮时极容易出错并强制退出,2010版本有改善,但离“稳定”二字还差很远……各位记得常常存盘……
所有物件蒙皮完成后。下一步是给要导出的物件上dao标签:
安装导出插件时一共增加了四个按钮,其中tools setup已经介绍过了,这次要用到的是model manager这个按钮。
按下model manager弹出对话框,Filter中钩中mesh,其他不要选,可以看到下面列出一些物件后面的标签是(undefined);可以看到还有“HF_ARM_NUD_ArmorM1”这个导入的身体物件,本身已有标签,是“mesh”。现在要做的是,把那些(undefined)的物件都标为“mesh”。选中那些(undefined)的物件,在edit parameters下拉框中选到“mesh”,然后按“add/replace”按钮。可以看到那些(undefined)都变成了“mesh”
之后打开材质编辑器,用吸管拾取各个物件的材质,改为自己想要的名字。这些名字将是最后的mao文件的名字。简单的讲,一个材质球对应一个mao文件。注意龙腾不支持复合材质。最后记下各个贴图的名称。当然,以后修改mao时再打开3dsmax来查看一遍也可以,不需要专门去记忆。
至此,3dsmax内的操作完成。按下model exporter开始设置导出。只需输入mmh文件名,按下export即可。
导出完成后该插件会自动开命令行窗口,进行编译。然后会有mmh,phy,msh三个文件生成在你设定好的导出文件夹。
2.4.材质与mao文件
在2.2中介绍的三个导出方法,其中前两种都可以导出mao文件,但是可用性难以保证。而本文推荐的Eshme的导出插件,目前还不支持导出mao文件……
最正规的制作mao文件的方法,是使用toolset的material编辑器。File->New->Material,之后可在root下新建材质库,或导入模型赋予材质,观看效果(方法为把模型拖动到材质名字上)。而材质的具体参数可在object inspector窗口中调整。效果满意后,在材质名称上右键->post selection to local,即可建立mao文件。文件位置会有提示,一般在文档目录的toolsetexport下。
上面我讲得很笼统,是因为我不推荐这样制作mao,虽然这是标准办法,但过于繁琐。其实mao文件可以用记事本打开,里面的内容可以很容易读懂和修改。文本内容和material编辑器的设置是一一对应的关系,举例如下图:
所以最简单的创建mao的方法,就是直接用记事本写……
例如2.3中我把某个材质球改名为ak02_coat了,现在新建个文本叫ak02_coat.txt,用记事本打开贴入以下内容:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Exported by Material Editor --><!-- dc:source=file:///A.matproj --><MaterialObject Name="HF_ARM_NUDa">
<Material Name="Character.mat"></Material>
<DefaultSemantic Name="ArmourSkinTint"></DefaultSemantic>
<Texture Name="mml_tDiffuse" ResName="HF_100_d.dds"></Texture>
<Texture Name="mml_tNormalMap" ResName="HF_100_n.dds"></Texture>
<Texture Name="mml_tSpecularMask" ResName="HF_100_s.dds"></Texture>
<Texture Name="mml_tTintMask" ResName="HF_100_t.dds"></Texture>
<Vector4f Name="mml_vFalloffParams" value="0.00 1.00 1.50 1.50"></Vector4f>
<Float Name="mml_fSpecularReflectionMult" value="0.00"></Float>
</MaterialObject>
注意要把其中HF_100_d.dds,(或_n,_s,_t)用你自己的dds或tga贴图名称替换掉,这也是上一节记下贴图文件名的原因。_d,_n,_s,_t分别对应diffuse,normal,specular,tint贴图,如果你的材质没有用到那种贴图,就把那一行去掉。
<Vector4f Name="mml_vFalloffParams" value="0.00 1.00 1.50 1.50">这四个值对应的含义见上一张截图。
<MaterialObject Name="HF_ARM_NUDa">这里把HF_ARM_NUDa换成你的mmh文件的主文件名。仅仅是为了便于管理而已,其实这一步做不做无影响。
其余部分的含义各位自行摸索了。反正一时半会也用不上。
保存这个文本。重命名为mao文件。比如我这个ak02_coat.txt就改名为ak02_coat.mao。最后,把这个mao文件和它指向的1~4个dds(或tga)贴图文件,复制到刚才导出mmh,msh,phy的地方。然后继续制作下一个材质球对应的mao文件。全部mao准备完毕后,一套模型贴图就齐了。
如果你导出时选用的文件名和原版游戏的某个衣服一样,那么把这些mmh,msh,phy,mao,dds(tga)文件都放到override文件夹下,一个override形式的mod就算是完工了!
如果你的目的是新增衣服,而不是替换原版衣服,那么你还得看下一层楼,或者参照w新增武器的教程。
第二节结束 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|