This article relates to the game "半衰期:爱莉克斯". Click here for more information.
这篇条目有关 Half-Life: Alyx 创意工坊工具集。如需详情,点击这里。
这篇条目有关 Source 2引擎。如需详情,点击这里。

Zh/Source 2/Docs/Porting Legacy Content/Models: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
No edit summary
(纠正部分早期翻译时的错误)
Line 2: Line 2:
{{HLATools topicons}}
{{HLATools topicons}}
<div style="text-transform: uppercase; background: linear-gradient(90deg, rgba(0,0,0,.3) 0%, transparent 100%); border-left: 2px solid #fff; box-sizing: border-box; padding-top: 6px; padding-bottom: 4px; padding-left: 8px; margin-top: 20px; margin-bottom: 20px; font-size: 12px">{{Back|Half-Life: Alyx Workshop Tools:zh-cn|Half-Life: Alyx 创意工坊工具集}}</div>
<div style="text-transform: uppercase; background: linear-gradient(90deg, rgba(0,0,0,.3) 0%, transparent 100%); border-left: 2px solid #fff; box-sizing: border-box; padding-top: 6px; padding-bottom: 4px; padding-left: 8px; margin-top: 20px; margin-bottom: 20px; font-size: 12px">{{Back|Half-Life: Alyx Workshop Tools:zh-cn|Half-Life: Alyx 创意工坊工具集}}</div>
在起源2中有一个内置的转换系统,用于从起源1获取旧的.mdl模型文件并将它们转换为起源2的模型格式。但这并不是一个完美的系统,可能时不时会编译失败导致崩溃,而且flex大部分都会失效,但是如果您需要将静物资源或是不带flex的模型从起源1移植到起源2,那么它将是非常棒的选择。
{{source2|4}} 有一个系统内置的功能,可把来自 {{source|4}} 的旧模型文件转换到起源2格式。您可以利用它来转换没有原始文件(例如编译模型时会使用到的fbx,dmx,smd等文件)的模型, 但这个功能存在一些问题。
{{note|如果您使用这种方法导入了带flex的模型,则需要进行额外的修复工作才能使其flex在起源2中正常工作,并且在大多数情况下您需要准备这些模型的原始文件。}}
{{note|使用 [[Flex_animation|Flex(也叫做Morph,Blendshape,Shape Key)]] 的模型(如角色模型)需要额外的工作才能在起源2中正常工作,并且在大多数情况下需要准备这些模型的原始文件。}}
==前提==
==前提==
该系统对于导入的.mdl格式非常挑剔。到目前为止,Source Filmmaker是最成功的移植模型的地方,得益于SFM已经发布了大量游戏的内容。但是,《半条命2》和《求生之路2》等都经过了测试并且不兼容,幸运的是,Valve已经从这些游戏中移植了很多内容。
该系统对于导入的.mdl格式非常挑剔。到目前为止,{{sfm|4}}是最成功的移植模型的地方,得益于SFM已经发布了大量游戏的内容。但是,{{hl2|4}}和{{l4d2|4}}等都经过了测试并且不兼容,幸运的是,Valve已经从这些游戏中移植了很多内容。


{{TODO|这可能与头文件有关,头文件很容易修改。请做更多的测试来确定哪些分支是最稳定的。}}
{{TODO|这可能与头文件有关,头文件很容易修改。请做更多的测试来确定哪些分支是最稳定的。}}


==创建.vmdl文件==
==创建.vmdl文件==
<p>要转换.mdl文件,首先必须为您的内容端(content)创建一个正确的文件结构。 举个例子,我们移植一个来自 [[Half-Life 2]]中的模型, 将位于HL2目录下的 "''models/humans/group01/male_07.mdl''" 这个模型移植到 [[Half-Life: Alyx]]中去:</p>
<p>要转换.mdl文件,首先必须为您的内容端(content)创建一个正确的文件结构。 举个例子,我们移植一个来自 {{hl2|4}}中的模型, 将位于HL2目录下的 "''models/humans/group01/male_07.mdl''" 这个模型移植到 {{hla|4}}中去:</p>
<p>首先您需要安装[[Half-Life:_Alyx_Workshop_Tools:zh-cn/Installing_and_Launching_Tools:zh-cn|Half-Life: Alyx创意工坊工具集]],然后通过工具集启动器创建一个Addon,在内容端(content)对应的文件夹中存放您要编译的原始文件,游戏端(game)则是起源2引擎自动为我们存放的已经编译完成的文件。</p>
<p>首先您需要安装[[Half-Life:_Alyx_Workshop_Tools:zh-cn/Installing_and_Launching_Tools:zh-cn|Half-Life: Alyx创意工坊工具集]],然后通过工具集启动器创建一个Addon,在内容端(content)对应的文件夹中存放您要编译的原始文件,游戏端(game)则是起源2引擎自动为我们存放的已经编译完成的文件。</p>
<p>现在我通过工具集启动器创建一个名为hl2的Addon,创建完成后,在“content”和“game”文件夹中都会有一个对应的名为hl2的文件夹,具体路径:“steamapps\common\Half-Life Alyx\content\hlvr_addons\hl2”和“steamapps\common\Half-Life Alyx\game\hlvr_addons\hl2”。</p>
<p>现在我通过工具集启动器创建一个名为hl2的Addon,创建完成后,在“content”和“game”文件夹中都会有一个对应的名为hl2的文件夹,具体路径:“steamapps\common\Half-Life Alyx\content\hlvr_addons\hl2”和“steamapps\common\Half-Life Alyx\game\hlvr_addons\hl2”。</p>


<p>接下来,您需要将.mdl及其有关的文件复制到与起源1中相同的文件结构中。例如,male_07模型文件在原HL2游戏中的路径为“models/humans/group01/male_07.mdl”,那么您就需要将模型文件复制到“steamapps\common\Half-Life Alyx\content\hlvr_addons\hl2\models\humans\group01”中去。</p>
<p>接下来,您需要将.mdl及其有关的文件复制到与{{source|4}}相同的文件结构中。例如,male_07模型文件在{{hl2|4}}游戏中的路径为“models/humans/group01/male_07.mdl”,那么您就需要将模型文件复制到“steamapps\common\Half-Life Alyx\content\hlvr_addons\hl2\models\humans\group01”中去。</p>
<p>您安放完模型文件之后应该是下面这个样子:</p>
<p>您安放完模型文件之后应该是下面这个样子:</p>
<p>“steamapps\common\Half-Life Alyx\content\hlvr_addons\hl2\models\humans\group01\male_07.mdl”</p>
<p>“steamapps\common\Half-Life Alyx\content\hlvr_addons\hl2\models\humans\group01\male_07.mdl”</p>
Line 42: Line 42:


==创建.vmat材质文件==
==创建.vmat材质文件==
现在唯一剩下要做的就是使用[[Dota_2_Workshop_Tools:zh-cn/Materials:zh-cn/Material_Editor:zh-cn|材质编辑器]]为该模型创建对应的[[Dota_2_Workshop_Tools:zh-cn/Materials:zh-cn|材质文件]]了,缺失材质的模型就会呈现红色线框的状态,起源2的.vmat材质文件的名称和存放路径需要与起源1中的.vmt文件结构一致,这样才能被移植的模型自动识别。下面详细描述一下:
现在唯一剩下要做的就是使用[[Dota_2_Workshop_Tools:zh-cn/Materials:zh-cn/Material_Editor:zh-cn|材质编辑器]]为该模型创建对应的[[Dota_2_Workshop_Tools:zh-cn/Materials:zh-cn|材质文件]]了,缺失材质的模型就会呈现红色线框的状态,{{source2|4}}的.vmat材质文件的名称和存放路径需要与{{source|4}}中的.vmt文件结构一致,这样才能被移植的模型自动识别。下面详细描述一下:
<p>male_07该模型在起源1中用到的.vmt材质名称和路径为:</p>
<p>male_07该模型在{{source|4}}中用到的.vmt材质名称和路径为:</p>
<p>“materials/models/humans/male/mouth.vmt”</p>
<p>“materials/models/humans/male/mouth.vmt”</p>
<p>“materials/models/humans/male/eyeball_l.vmt”</p>
<p>“materials/models/humans/male/eyeball_l.vmt”</p>
Line 49: Line 49:
<p>“materials/models/humans/male/group01/mike_facemap.vmt”</p>
<p>“materials/models/humans/male/group01/mike_facemap.vmt”</p>
<p>“materials/models/humans/male/group01/citizen_sheet.vmt”</p>
<p>“materials/models/humans/male/group01/citizen_sheet.vmt”</p>
在起源2中需要创建相同的文件结构来保持一致,所以您创建的.vmat材质文件的名称和路径应该为:
在{{source2|4}}中需要创建相同的文件结构来保持一致,所以您创建的.vmat材质文件的名称和路径应该为:
<p>“steamapps\common\Half-Life Alyx\content\hlvr_addons\hl2\materials\models\humans\male\mouth.vmat”</p>
<p>“steamapps\common\Half-Life Alyx\content\hlvr_addons\hl2\materials\models\humans\male\mouth.vmat”</p>
<p>“steamapps\common\Half-Life Alyx\content\hlvr_addons\hl2\materials\models\humans\male\eyeball_l.vmat”</p>
<p>“steamapps\common\Half-Life Alyx\content\hlvr_addons\hl2\materials\models\humans\male\eyeball_l.vmat”</p>
Line 55: Line 55:
<p>“steamapps\common\Half-Life Alyx\content\hlvr_addons\hl2\materials\models\humans\male\group01\mike_facemap.vmat”</p>
<p>“steamapps\common\Half-Life Alyx\content\hlvr_addons\hl2\materials\models\humans\male\group01\mike_facemap.vmat”</p>
<p>“steamapps\common\Half-Life Alyx\content\hlvr_addons\hl2\materials\models\humans\male\group01\citizen_sheet.vmat”</p>
<p>“steamapps\common\Half-Life Alyx\content\hlvr_addons\hl2\materials\models\humans\male\group01\citizen_sheet.vmat”</p>
{{note|Flex涉及到的相关材质您需要在材质编辑器中为它们勾选启用Morph Supported属性,材质的Morph Supported属性是使flex运作的前提。}}
{{note|Flex涉及到的相关材质您需要在材质编辑器中为它们勾选启用Morph Supported属性,材质的Morph Supported属性是使Flex运作的前提。}}
材质文件全部创建完成无误后,在资源管理器(Asset Browser)中您就可以看到male_07.vmdl可以正常显示材质贴图了,如果模型依然还是红色线框,请在资源管理器(Asset Browser)里选中模型,右键点击Full Recompile,重新编译即可。
材质文件全部创建完成无误后,在资源管理器(Asset Browser)中您就可以看到male_07.vmdl可以正常显示材质贴图了,如果模型依然还是红色线框,请在资源管理器(Asset Browser)里选中模型,右键点击Full Recompile,重新编译即可。
<p>编译完成的.vmat_c材质文件会自动镜像内容端(content)的路径存放在游戏端(game)中:</p>
<p>编译完成的.vmat_c材质文件会自动镜像内容端(content)的路径存放在游戏端(game)中:</p>
Line 73: Line 73:


==注意事项==
==注意事项==
具有flex的模型可以导入,但如果其flex还具有flex规则(例如HWM或FACs角色模型),那么它们将无法正确导入。目前还没有已知的修复方法,但是通过ModelDoc去做反编译处理,我们可能会解决这个问题。
具有Flex的模型可以导入,但如果其Flex还具有Flex规则(例如HWM或FACs角色模型,都具有Flex规则,利用Flex规则可以[[DMX_model#Flex_controllers|额外定义控制器]]来同时控制多个变形目标的权重,也可以[[Flex_animation#Corrective_shapes|驱动修型变形目标]]),那么这些使用Flex规则的控制将无法正确导入,导入之后Flex规则的控制器作用失效。目前还没有已知的修复方法,但是通过ModelDoc去做反编译处理,我们可能会解决这个问题。


一些更复杂的模型会导致系统随机崩溃或中断,并且不能正确导入。目前还没有什么方法可以帮助解决这些问题,但是查看一下VConsole控制台可能会帮助您发现问题所在。
一些更复杂的模型会导致系统随机崩溃或中断,并且不能正确导入。目前还没有什么方法可以帮助解决这些问题,但是查看一下VConsole控制台可能会帮助您发现问题所在。
Line 79: Line 79:
{{TODO|注意其他问题并测试与更多游戏的兼容性。}}
{{TODO|注意其他问题并测试与更多游戏的兼容性。}}


<p>相比于原文,我在这里详细讲解了移植的全步骤,其他介绍的地方可能翻译的不太准确,如果有错误,欢迎大家前来修改完善!这个移植功能虽然会使flex失效(如果幸运的话,部分flex还是有效的,但前提是需要勾选相关材质的Morph Supported属性),但如果您是用来移植静态物体,或是不带flex的起源1的SFM模型,这个自动移植功能是个很不错的选择!移植过来的模型自身原有的sequence,bodygroup,skin等信息都将得以保留! --译者留</p>
<p>相比于原文,我在这里详细讲解了移植的全步骤,其他介绍的地方可能翻译的不太准确,如果有错误,欢迎大家前来修改完善!这个移植功能虽然会使Flex规则失效,但如果您是用来移植静态物体,或是不带Flex规则的起源1的SFM模型,这个自动移植功能是个很不错的选择!移植过来的模型自身原有的sequence,bodygroup,skin等信息都将得以保留! --译者留</p>


==相关文档==
==相关文档==

Revision as of 21:31, 21 May 2022

English (en)Русский (ru)中文 (zh)Translate (Translate)

起源2 起源2 有一个系统内置的功能,可把来自 起源 起源 的旧模型文件转换到起源2格式。您可以利用它来转换没有原始文件(例如编译模型时会使用到的fbx,dmx,smd等文件)的模型, 但这个功能存在一些问题。

Note.png注意:使用 Flex(也叫做Morph,Blendshape,Shape Key) 的模型(如角色模型)需要额外的工作才能在起源2中正常工作,并且在大多数情况下需要准备这些模型的原始文件。

前提

该系统对于导入的.mdl格式非常挑剔。到目前为止,起源电影制作器 起源电影制作器是最成功的移植模型的地方,得益于SFM已经发布了大量游戏的内容。但是,半衰期2 半衰期2求生之路2 求生之路2等都经过了测试并且不兼容,幸运的是,Valve已经从这些游戏中移植了很多内容。

待完善: 这可能与头文件有关,头文件很容易修改。请做更多的测试来确定哪些分支是最稳定的。

创建.vmdl文件

要转换.mdl文件,首先必须为您的内容端(content)创建一个正确的文件结构。 举个例子,我们移植一个来自 半衰期2 半衰期2中的模型, 将位于HL2目录下的 "models/humans/group01/male_07.mdl" 这个模型移植到 半衰期:爱莉克斯 半衰期:爱莉克斯中去:

首先您需要安装Half-Life: Alyx创意工坊工具集,然后通过工具集启动器创建一个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模型文件在半衰期2 半衰期2游戏中的路径为“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"
}
Note.png注意:如果您使用了启动参数'-nocustomermachine',则不需要这样做。您可以在模型编辑器中修改m_sMDLFilename这一行。

完成后,在您的资源管理器(Asset Browser)中就可以找到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材质文件

现在唯一剩下要做的就是使用材质编辑器为该模型创建对应的材质文件了,缺失材质的模型就会呈现红色线框的状态,起源2 起源2的.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”

起源2 起源2中需要创建相同的文件结构来保持一致,所以您创建的.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”

Note.png注意:Flex涉及到的相关材质您需要在材质编辑器中为它们勾选启用Morph Supported属性,材质的Morph Supported属性是使Flex运作的前提。

材质文件全部创建完成无误后,在资源管理器(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

ModelDoc-ImportAndConvertOldVMDL.png

Half-Life: Alyx带来了一个全新的模型编辑器ModelDoc。 ModelDoc允许我们对模型做更广泛的操作,并允许我们访问在旧的模型编辑器中不可用的特殊工具。

有了ModelDoc,您就可以通过单击File -> Import ->Import and Convert old .VMDL来导入一个旧的.vmdl文件。当您这样做时,实际上是处理了原模型(利用之前编译出的.vmdl_c文件),将模型转换成FBX文件供您编辑。之后您就可以选择删除掉旧的.mdl文件,因为这时候.mdl就不需要了,.fbx取而代之。

如果您想要进行修改以帮助促进您的模型向起源2的转换,这是理想的选择。目前还没有方法来批量处理游戏中所有的.VMDL文件, 但是您可以利用此工具解决导入器带来的问题。

注意事项

具有Flex的模型可以导入,但如果其Flex还具有Flex规则(例如HWM或FACs角色模型,都具有Flex规则,利用Flex规则可以额外定义控制器来同时控制多个变形目标的权重,也可以驱动修型变形目标),那么这些使用Flex规则的控制将无法正确导入,导入之后Flex规则的控制器作用失效。目前还没有已知的修复方法,但是通过ModelDoc去做反编译处理,我们可能会解决这个问题。

一些更复杂的模型会导致系统随机崩溃或中断,并且不能正确导入。目前还没有什么方法可以帮助解决这些问题,但是查看一下VConsole控制台可能会帮助您发现问题所在。

待完善: 注意其他问题并测试与更多游戏的兼容性。

相比于原文,我在这里详细讲解了移植的全步骤,其他介绍的地方可能翻译的不太准确,如果有错误,欢迎大家前来修改完善!这个移植功能虽然会使Flex规则失效,但如果您是用来移植静态物体,或是不带Flex规则的起源1的SFM模型,这个自动移植功能是个很不错的选择!移植过来的模型自身原有的sequence,bodygroup,skin等信息都将得以保留! --译者留

相关文档