Zh/Source 2/Docs/Porting Legacy Content/Models

有一个系统内置的功能，可把来自 的旧模型文件转换到起源2格式。您可以利用它来转换没有原始文件（例如编译模型时会使用到的fbx，dmx，smd等文件）的模型, 但这个功能存在一些问题。
==前提==
该系统对于导入的.mdl格式非常挑剔。到目前为止，是最成功的移植模型的地方，得益于SFM已经发布了大量游戏的内容。但是，和等都经过了测试并且不兼容，幸运的是，Valve已经从这些游戏中移植了很多内容。
==创建.vmdl文件==
要转换.mdl文件，首先必须为您的内容端（content）创建一个正确的文件结构。 举个例子，我们移植一个来自 中的模型, 将位于HL2目录下的 "models/humans/group01/male_07.mdl" 这个模型移植到 中去：
首先您需要安装，然后通过工具集启动器创建一个Addon，在内容端（content）对应的文件夹中存放您要编译的原始文件，游戏端（game）则是起源2引擎自动为我们存放的已经编译完成的文件。
现在我通过工具集启动器创建一个名为hl2的Addon，创建完成后，在“content”和“game”文件夹中都会有一个对应的名为hl2的文件夹，具体路径：“steamapps\common\Half-Life Alyx\content\hlvr_addons\hl2”和“steamapps\common\Half-Life Alyx\game\hlvr_addons\hl2”。
接下来，您需要将.mdl及其有关的文件复制到与相同的文件结构中。例如，male_07模型文件在游戏中的路径为“models/humans/group01/male_07.mdl”，那么您就需要将模型文件复制到“steamapps\common\Half-Life Alyx\content\hlvr_addons\hl2\models\humans\group01”中去。
您安放完模型文件之后应该是下面这个样子：
“steamapps\common\Half-Life Alyx\content\hlvr_addons\hl2\models\humans\group01\male_07.mdl”
“steamapps\common\Half-Life Alyx\content\hlvr_addons\hl2\models\humans\group01\male_07.dx90.vtx”
“steamapps\common\Half-Life Alyx\content\hlvr_addons\hl2\models\humans\group01\male_07.phy”
“steamapps\common\Half-Life Alyx\content\hlvr_addons\hl2\models\humans\group01\male_07.vvd”
最后，您需要在此目录下新建一个与模型名字相同的文本文件，并将扩展名从.txt改为.vmdl。
此时再次确认一遍您的文件夹中是否含有以下内容：
“steamapps\common\Half-Life Alyx\content\hlvr_addons\hl2\models\humans\group01\male_07.mdl”
“steamapps\common\Half-Life Alyx\content\hlvr_addons\hl2\models\humans\group01\male_07.dx90.vtx”
“steamapps\common\Half-Life Alyx\content\hlvr_addons\hl2\models\humans\group01\male_07.phy”
“steamapps\common\Half-Life Alyx\content\hlvr_addons\hl2\models\humans\group01\male_07.vvd”
“steamapps\common\Half-Life Alyx\content\hlvr_addons\hl2\models\humans\group01\male_07.vmdl”
然后用您喜欢的文本编辑器（Notepad++或记事本）打开male_07.vmdl，并添加以下代码，保存并关闭文件，然后打开Half-Life: Alyx的创意工坊工具集。
<!-- kv3 encoding:text:version{e21c7f3c-8a33-41c5-9977-a76d3a32aa0d} format:generic:version{7412167c-06e9-4698-aff2-e63eb59037e7} -->
{
	m_sMDLFilename = "models/humans/group01/male_07.mdl"
}
完成后，在您的中就可以找到male_07.vmdl模型文件，它已经自动将自己编译成了.vmdl_c文件!
此时编译好的vmdl_c文件会自动保存在镜像于内容端（content）路径的游戏端（game）中，具体路径为：
“steamapps\common\Half-Life Alyx\game\hlvr_addons\hl2\models\humans\group01\male_07.vmdl_c”
==创建.vmat材质文件==
现在唯一剩下要做的就是使用为该模型创建对应的了，缺失材质的模型就会呈现红色线框的状态，的.vmat材质文件的名称和存放路径需要与中的.vmt文件结构一致，这样才能被移植的模型自动识别。下面详细描述一下：
male_07该模型在中用到的.vmt材质名称和路径为：
“materials/models/humans/male/mouth.vmt”
“materials/models/humans/male/eyeball_l.vmt”
“materials/models/humans/male/eyeball_r.vmt”
“materials/models/humans/male/group01/mike_facemap.vmt”
“materials/models/humans/male/group01/citizen_sheet.vmt”
在中需要创建相同的文件结构来保持一致，所以您创建的.vmat材质文件的名称和路径应该为：
“steamapps\common\Half-Life Alyx\content\hlvr_addons\hl2\materials\models\humans\male\mouth.vmat”
“steamapps\common\Half-Life Alyx\content\hlvr_addons\hl2\materials\models\humans\male\eyeball_l.vmat”
“steamapps\common\Half-Life Alyx\content\hlvr_addons\hl2\materials\models\humans\male\eyeball_r.vmat”
“steamapps\common\Half-Life Alyx\content\hlvr_addons\hl2\materials\models\humans\male\group01\mike_facemap.vmat”
“steamapps\common\Half-Life Alyx\content\hlvr_addons\hl2\materials\models\humans\male\group01\citizen_sheet.vmat”
材质文件全部创建完成无误后，在资源管理器（Asset Browser）中您就可以看到male_07.vmdl可以正常显示材质贴图了，如果模型依然还是红色线框，请在资源管理器（Asset Browser）里选中模型，右键点击Full Recompile，重新编译即可。
编译完成的.vmat_c材质文件会自动镜像内容端（content）的路径存放在游戏端（game）中：
“steamapps\common\Half-Life Alyx\game\hlvr_addons\hl2\materials\models\humans\male\mouth.vmat_c”
“steamapps\common\Half-Life Alyx\game\hlvr_addons\hl2\materials\models\humans\male\eyeball_l.vmat_c”
“steamapps\common\Half-Life Alyx\game\hlvr_addons\hl2\materials\models\humans\male\eyeball_r.vmat_c”
“steamapps\common\Half-Life Alyx\game\hlvr_addons\hl2\materials\models\humans\male\group01\mike_facemap.vmat_c”
“steamapps\common\Half-Life Alyx\game\hlvr_addons\hl2\materials\models\humans\male\group01\citizen_sheet.vmat_c”
== Half-Life: Alyx与ModelDoc ==
Half-Life: Alyx带来了一个全新的模型编辑器。 ModelDoc允许我们对模型做更广泛的操作，并允许我们访问在旧的模型编辑器中不可用的特殊工具。
有了ModelDoc，您就可以通过单击File -> Import ->Import and Convert old .VMDL来导入一个旧的.vmdl文件。当您这样做时，实际上是处理了原模型(利用之前编译出的.vmdl_c文件)，将模型转换成FBX文件供您编辑。之后您就可以选择删除掉旧的.mdl文件，因为这时候.mdl就不需要了，.fbx取而代之。
如果您想要进行修改以帮助促进您的模型向起源2的转换，这是理想的选择。目前还没有方法来批量处理游戏中所有的.VMDL文件, 但是您可以利用此工具解决导入器带来的问题。
==注意事项==
具有Flex的模型可以导入，但如果其Flex还具有Flex规则（例如或FACs角色模型，都具有Flex规则，利用Flex规则可以额外定义控制器来同时控制多个变形目标的权重，也可以驱动修型变形目标Corrective shapes），那么这些使用Flex规则的控制将无法正确导入，导入之后Flex规则的控制器作用失效。目前还没有已知的修复方法，但是通过ModelDoc去做反编译处理，我们可能会解决这个问题。
一些更复杂的模型会导致系统随机崩溃或中断，并且不能正确导入。目前还没有什么方法可以帮助解决这些问题，但是查看一下VConsole控制台可能会帮助您发现问题所在。
相比于原文，我在这里详细讲解了移植的全步骤，其他介绍的地方可能翻译的不太准确，如果有错误，欢迎大家前来修改完善！这个移植功能虽然会使Flex规则失效，但如果您是用来移植静态物体，或是不带Flex规则的起源1的SFM模型，这个自动移植功能是个很不错的选择！移植过来的模型自身原有的sequence,bodygroup,skin等信息都将得以保留！ --译者留
==相关文档==
*
*
*
*