如何导出Dota2模型资源

如何导出Dota2中的模型资源
工具准备
- 
Steam平台,下载地址- 在 Steam中搜索安装Dota2,用于获取资源文件
- 在 Steam中搜索安装Alien Swarm,用于获取反编译资源文件所需的SDK
 
- 在 
- 
- Valve会将资源包内容打包成- VPK (Valve PAK)格式的文件,因此需要先解压出来才能使用
 
- 
StudioCompiler v0.4a,软件介绍 下载链接- 用来反编译资源文件
 
- 
- 用来导出模型纹理
 
- 
- 把 smd文件导入到3ds max中,还需要一个插件,这个插件最高只支持到2012版本的3ds max
 
- 把 
- 
smdimp013-max2012,插件介绍 32位下载链接 64位下载链接- 用来在 3ds max 2012中导入smd文件
 
- 用来在 
解压 Dota2 资源
- 将下载下来的 gcfscape185.zip解压
- 32位系统运行 x86\GCFScape.exe,64位系统运行x64\GCFScape.exe,界面如图:

- 选择 File->Open,在文件选择对话框中定位到...\Steam\Steamapps\common\dota 2 beta\dota目录,找到pak01_dir.vpk文件并打开,如图:

- 右键 root,选择Extract,选择资源解压目标目录并确定,耐心等待解压完成,如图:

- 解压完成后,就会在目标目录生成一个 root文件夹,里面就是所有的Dota2资源文件了
预览 Dota2 模型
- 找到 Dota2的安装目录,进入...\Steam\SteamApps\common\dota 2 beta\bin目录,运行hlmv.exe,如图:

- 这时会弹出一个错误提示框,如图:

- 这是缺少游戏描述文件导致的,需要去 ...\Steam\SteamApps\common\dota 2 beta\dota文件夹中,复制gameinfo.txt过来,然后打开文件,把SearchPaths中的Platform改成dota,此时运行hlmv.exe,又会弹出一个错误框,如图:

- 看提示就知道缺少 game_sounds_manifest.txt文件,在同目录下新建一个game_sounds_manifest.txt然后填入如下内容:game_sounds_manifest { "preload_file" "scripts/game_sounds.txt" "preload_file" "scripts/game_sounds_ambient.txt" "preload_file" "scripts/game_sounds_music.txt" "preload_file" "scripts/game_sounds_ui.txt" "preload_file" "scripts/game_sounds_creeps.txt" "preload_file" "scripts/game_sounds_items.txt" "preload_file" "scripts/voscripts/game_sounds_vo_announcer.txt" "preload_file" "scripts/voscripts/game_sounds_vo_announcer_killing_spree.txt" "preload_file" "scripts/game_sounds_hero_pick.txt" "preload_file" "scripts/voscripts/game_sounds_vo_tut1.txt" "preload_file" "scripts/voscripts/game_sounds_vo_announcer_diretide_2012.txt" // ///////////Seasonal and/or outdated files below here//////////////////////////////// // "preload_file" "scripts/game_sounds_roshan_halloween.txt" // "preload_file" "scripts/voscripts/game_sounds_vo_announcer_dlc_tusk.txt" // "preload_file" "scripts/voscripts/game_sounds_vo_announcer_diretide_2012.txt" // "preload_file" "scripts/voscripts/game_sounds_vo_secretshop.txt" // "preload_file" "scripts/game_sounds_greevils.txt" }
- 保存退出,再次运行 hlmv.exe,这时程序就能正常运行了,界面如图:

- 选择 File->Load Model...,定位到之前解压好的root文件夹,进入models\heroes(英雄模型目录) 文件夹,随便进入一个英雄文件夹,这里进入undying(尸王)目录,打开undying.mdl,如图: (这造型挺别致呀 = =!)

- 还可以继续选择 File->Load Weapon...导入相关的头盔,盔甲,武器之类的模型,还可以在中间一排标签页菜单中选择Sequence,在BindPose下拉列表中选择一些动画片段来预览各种不同的动作动画
反编译 Dota2 模型
- 
解压出来的 root文件夹中的模型还不能直接使用,还需要进行反编译,然后才能导入到3ds max之类的建模软件中进行修改
- 
几点说明: - Valve将模型数据都打包在- MDL格式的文件中,- MDL文件其实就是一堆- SMD文件的集合,也就是我们反编译- MDL文件其实就是为了得到各种各样的- SMD文件,- SMD文件则是真正包含了模型和动画数据的文件,也是最终要导入到- Maya、3ds max中的文件
- 每一个 MDL文件都有一个同名的VTX和VVD后缀的文件。VTX文件包含了该模型所有网格(mesh)数据,包括LoD(Level of Detail)信息(不知道是什么东西…);VVD(Valva Vertex Data)文件包含该模型的所有顶点数据(data of the vertices)。
- 模型的纹理数据则保存在 VTF(Valve Texture File)格式的文件中,(可在root\materials\models\heroes\undying中找到英雄的纹理和材质文件),每一个VTF文件都有一个同名的VMT格式的文件,VMT(Valve Material Type)文件包含了Source引擎定义和使用这些纹理所需要的信息(材质对象)
 
- 
打开安装好的 StudioCompiler,点击Configure按钮,将之前安装的另一个游戏Alien Swarm的bin目录的路径 复制 到SDK Tool Directory文本框中,注意,这里只能将路径复制进来,不能使用该文本框右边的浏览文件夹按钮来选择目录,否则程序会崩溃,点击OK按钮完成配置,如图:

- 将 VTX文件名中的 90 改成 80,以尸王为例,进入root\models\heroes\undying文件夹,修改所有.vtx文件,如图:

- 回到 StudioCompiler中,选择Model Decompile标签,在Choose Model File文本框中打开root\models\heroes\undying\undying.mdl,在Choose Output Directory文本框中 复制 解压后文件的保存目录,然后点击Extract按钮,如图:

- 解压完成后,在解压目录就会看到一堆 smd文件被释放出来了,其中.dmx.smd后缀的是模型文件,.smd的是动画文件,如图:

- 重复以上步骤,把尸王的其他模型如盔甲,头盔模型都解压出来:

- 这样模型就反编译完成了,smd文件就可以导入到建模软件中使用了
反编译 Dota2 模型纹理
- 
上一步中反编译得到了模型和动画文件,还需要得到模型的纹理文件,这样才能在建模软件中完整还原 Dota2模型
- 
将下载下来的 vtfedit133.zip解压
- 
32位系统运行 x86\VTFEdit.exe,64位系统运行x64\VTFEdit.exe,界面如图:

- 
在 File System中展开定位到root\materials\models\heroes\undying文件夹,双击undying_armor.vtf在右边窗口中就可以看到纹理的预览,然后选择File->Export,在文件保存对话框下方的保存类型选为PNG Files(*.png),默认为.tga文件,点击保存,这样就完成了一个纹理的导出
- 
重复上方步骤,继续导出其他纹理文件, xxx_mask1.vtfxxx_mask2.vtfxxx_normal.vtf这样命名的纹理不需要导出(因为不知道有什么用 = =!) ,导出的纹理文件如下:

- 这样,一个模型的纹理文件就完成导出了
在3ds max 2012 中修改模型
- 将下载下来的 smdimp插件解压,把解压出来的smdimp.dli文件复制到3ds max的plugins目录下,如图:

- 打开 3ds max,选择导入,如图:

- 在文件选择对话框中定位到之前的模型导出文件夹,选择 undying_model.dmx.smd,注意,.dmx.smd后缀的文件才是模型文件,如图:

- 选择打开,然后 3ds max中就会弹出smd importer插件的对话框,保持对话框中的复选框都选中,然后点击OK按钮,接着会弹出纹理选择对话框,选择 取消,这样模型就导入到3ds max中了,但是好像姿势有点奇怪,如图:

- 继续在 3ds max中选择导入,这时候选择undying_model.dmx.smd同一目录的BindPose.smd文件,导入,这时就会看见尸王站起来了,如图:

- 打开 3ds max右上角的材质编辑器(或者直接按M键打开),如图:

- 在打开的材质编辑器左上角中选择 模式(Modes)->精简材质编辑器...(Compact Material Editor...),转换成精简材质编辑器后,创建一个材质球,如图:

- 在打开的文件选择对话框中,定位到之前导出的纹理文件夹,选择 undying_body_color.png,这样,尸王的身体材质球就创建好了,然后需要把这个材质球拖到尸王模型身上应用,如图:

- 这样,尸王的身体模型就出来了,如图:

- 重复以上步骤(导入.dmx.smd模型文件->创建材质球->应用材质球),导入尸王的头盔,铠甲,得到尸王的完整模型,如图:

- 如果想看动画效果,同样的,像导入BindPose.smd文件那样,在同目录下导入任何一个动画文件,如undying_run.smd,然后在3ds max右下角选择播放按钮,就可以看到动画效果了,如图:

总结
- 
导入 3ds max后,就可以修改模型,或者导出成FBX格式的文件在其他地方使用,或者自己创建物品然后再提交到Steam中
- 
参考链接