
一份希望能教你如何将《拆迁》模型导入Source引擎,或者如果你想的话,仅导入盖瑞模组的指南。这是一个有点高级的流程,所以不要以为你能很快完成(除非你以前做过!) 1. 所需程序 这个流程需要一些程序以及这些程序的插件。更不用说还需要一些Blender的基础知识。我会尽力在指南中提供详细指导,但有些内容可能会被遗漏或未加解释。 我的目标是在一定程度上让初学者也能看懂。以下是所需工具: Blender Blender Source Tools 插件(可在 VDC 上找到) VTFEdit MagicaVoxel 盖瑞模组或任何 Source 引擎游戏 Crowbar 如果您对这些工具不太了解或担心安全问题,我来逐一解释: Blender 是一款建模工具,这一点很明显,无需过多解释。 Blender Source Tools 是 Blender 的一款插件,支持导入 Studiomdl 数据和 DMX 模型文件。在处理 Source 模型时必须使用它。您可以搜索“Blender Source Tools”,并通过 VDC(Valve 开发者社区)上的链接获取。 VTFEdit 用于为 Source 引擎游戏制作纹理,在进行相关工作时同样是必需的工具。你也可以通过底部链接在VDC上找到它,通常是【Nem's Tools】的存档链接,因为实际网站已关闭。 如果你已经在进行《拆迁》的模组制作,那么MagicaVoxel应该不陌生,你可以用它制作体素模型,并且需要用它将模型导出为OBJ格式。 《盖瑞模组》是首选游戏,我认为不需要解释什么是Source引擎游戏,但凡是运行在Source引擎上的游戏(如《传送门2》《求生之路2》)都属于此类。 Crowbar是编译(或反编译)Source模型所需的程序,并且是绝对必要的。你可以搜索【Crowbar VDC】找到相关页面,在那里可以下载它,下载页面位于他们的Steam群组页面。 2. 准备体素模型 第一步是打开MagicaVoxel。我打算移植伊斯托卡蒂卡岛的一个道具——棕榈树。 在左侧你会找到你的调色板。

(如果你想知道在哪里获取所有这些游戏内模型,可以在创意工坊的【大型模型包】中找到,我会尽量保持其更新) 第一步,是让调色板能在【盖瑞模组】中正常使用。由于引擎限制,如果就这样直接使用,颜色会严重失真。所以你需要确保每个通道只有一种颜色。如果最终每个通道有不止一种颜色也没关系,但尽量越少越好。 你可以按住【Ctrl】键并拖动颜色到调色板上的新位置来移动颜色。 下一步很简单,如果你模型上有玻璃,需要将其分离为新的对象。不过我不会这么做,因为我的模型没有玻璃。你可以通过使用魔棒工具选择所有玻璃,然后按CTRL+X,进入物体模式后按CTRL+V,这样就能拆分你的模型。 现在在右侧,打开显示所有模型部件名称的【大纲视图】。确保每个部件都有一个简短但清晰的名称。

现在你的模型已经准备就绪,我们可以开始导出了。在桌面上新建一个专门用于存放该模型的文件夹,这样可以让文件保持本地化和集中管理,方便后续访问。 在右下角点击【导出】以打开导出菜单。然后选择【OBJ】选项,你可以根据需要更改模型名称,我不会更改,但这由你决定。

现在你已经获取了每个物体的MTL文件、调色板PNG文件以及OBJ文件本身。接下来我们需要清理不必要的文件。删除所有MTL文件,并只保留一个调色板PNG文件。清理完成后,文件结构应如下所示:

3. Blender 工作流程 首先,安装我们下载的插件。打开 Blender,点击顶部的【编辑】,然后选择【偏好设置】,最后进入【插件】选项。希望你下载插件时将其保留为 zip 压缩文件,安装时需要保持这种格式。 在顶部点击【安装】,找到你电脑上的 zip 文件并添加。添加完成后,在 Blender 中勾选该插件,它就会被加载。

现在你可以在图片所示的标签下找到此选项。你需要将导出路径设置为包含OBJ文件的工作文件夹,并将模式设置为SMD而非DMX。完成这些设置后,你就可以开始导入模型了。 前往左上角,在“文件”菜单下选择“导入”,然后选择“Wavefront(.OBJ)”。现在你可以将模型的所有部分作为一个整体导入。

现在我们来设置调色板材质。在右侧(确保已选中模型)选择材质选项卡,即红色圆圈处。默认材质很可能是“palette”或类似名称。建议将其更改为你的对象名称加上“palette”,例如“palm_palette”。 如果你的材质是玻璃,请将其命名为其他名称,如“car_glass_palette”,因为最终你只需要一个玻璃文件。

现在,我们需要将图像调整为适合Source引擎的分辨率。首先,在顶部找到【UV编辑】选项卡并点击,你会看到一个网格状区域。这是模型的UV贴图,我们暂不对此进行编辑。在顶部的空白栏处,点击文件夹图标并加载你的调色板PNG文件。
现在UV贴图会变得更小,形状像一条长条形,我们希望它是正方形的。所以在顶部找到【图像】选项卡并点击。然后点击【调整大小】,将其设置为256x256。

现在,你可以再次点击“图像”,然后选择“另存为”。接着,你需要用这个新文件覆盖旧的调色板PNG文件。文件名很可能显示为红色,只需点击“保存”即可完成覆盖。 现在,你应该已经完成了以下步骤: - Blender中的模型 - 材质设置 - 图像分辨率正确 如果你确认以上所有步骤都已完成,请点击顶部的“建模”选项卡,切换回默认视图。 模型本身的优化程度很低。由于是体素模型,它不会进行背面剔除或任何自身优化。我个人不会对模型进行优化,但如果你愿意,也可以尝试。只需记住,体素设计与模型上的体素直接相关,因此优化模型可能会破坏原有的设计。如果你的模型存在需要移除的多余部分,以下是具体操作步骤。 我的模型树干部分超出了所需长度,因此我要将其移除。我通过点击右侧层级面板中的眼睛图标隐藏了树冠,现在只剩下树干。

我选择树干,按Tab键进入编辑模式,按住Z键进入线框模式。在顶点编辑模式下(左上角已选中),我拖动选择框框选不需要的部分,然后按X键删除它。

解决了这个问题后,我们现在需要匹配《盖瑞模组》的比例,因为这个模型太小了。选中模型的所有部分,按S键并拖动来放大模型。或者,你也可以按N键调出右侧的菜单。在这里你可以手动设置比例,我使用的比例是23.355,但对你来说可能有所不同,你可以使用这个数值,或者从《盖瑞模组》中获取一个模型,用Crowbar(撬棍工具)对其进行反编译,然后导入SMD文件作为参考。

现在,模型已正确放大。你应该开始将模型的常用部件合并,例如使用相同材质的部件。比如,我的树由两个模型组成,我会将它们合并为一个,因为它们使用相同的调色板,并且是常用模型。 以车辆为例,你可以合并玻璃和车身模型,它们虽然有不同的材质(车身调色板和车窗玻璃),但属于常用模型。 你可以通过选择模型并按下CTRL+J来合并它们。这会合并模型及其材质,建议返回材质选项卡,确保只保留所需的材质。我的树合并后有两种材质,但我将其恢复为仅有一种名为棕榈调色板的材质。你可以使用右侧的小减号图标移除材质。如果你的材质名称变成类似“palm_palette_001”这样的名称,你可以在模型上进入编辑模式,在材质选项卡中点击“选择”(确保已选中名称带001的材质),这样应该会选择所有使用该材质的顶点。接下来,你只需点击主要的正确材质,然后点击分配按钮。退出编辑模式后,删除旧的无用材质即可。

现在到了有趣的部分,我们可以开始导出模型了。选择你的模型,选中后点击“文件”,然后选择“导出”,并将鼠标悬停在“Source Engine”选项上,你需要导出的是第一个选项,即带有.SMD扩展名的模型名称。

碰撞模型 注意,这部分内容可能有些复杂。如果你不清楚“凸形”和“凹形”的区别,建议搜索相关图片了解。 由于我的模型是一棵棕榈树,我们希望能够流畅地在树下行走等。因此,我们需要制作一个自定义的凹形碰撞模型。否则,源程序会自动生成一个凸形碰撞模型。这就是不进行任何碰撞设置时的效果。

这东西挺麻烦的吧?对于像板条箱这类模型,其实并不需要这么做,因为带碰撞的模型本身就能正常使用。 开始制作模型时,要确保处于物体模式(不是编辑模式),按下Shift+A调出创建菜单,然后从网格类别中创建一个立方体。 默认情况下立方体很小,所以你需要把它放大,这是我目前制作模型的方法。

现在你需要进入立方体的编辑模式,并确保已在左上角选择面编辑模式,该模式位于“帮助”部分的下方(是物理位置上的下方,而非点击“帮助”后的界面内)。

选中该选项后,你需要点击立方体需要延长的面,按E键进行挤出操作,使其包围你的模型。我将立方体向上挤出,然后向右移动,做出弯曲的树干形状。

现在,当第一个立方体仍处于编辑模式时,再次按下Shift+A,为模型的其他所有部分重复添加另一个立方体。碰撞模型的每个部分都必须是新的凸面体,你的“碰撞立方体”本身不能是凸面体。 完成后,按A键选择所有面,然后右键点击。找到“平滑着色”选项并点击。你的碰撞模型现在应该看起来像这样。

退出编辑模式,然后在层级中将模型重命名为类似“palm_physics”的名称(将“palm”替换为你的模型名称)。之后就可以像导出其他模型一样导出它。由于这是碰撞模型,所以不需要材质。 4. QC和VTF文件。 现在你的模型已成功从Blender导出。我们一开始创建的工作文件夹现在应该包含这些文件。我已经进一步整理了一下,将OBJ文件移动到新文件夹,并将所有文件重命名为带有“palm”统一前缀的名称。

现在,我们来设置盖瑞模组文件中的正确文件路径。首先,找到盖瑞模组的本地文件,你可以通过Steam库轻松找到:右键点击盖瑞模组,依次选择属性和本地文件。 进入盖瑞模组/garrysmod文件夹,找到materials文件夹,若没有则创建一个。 进入materials文件夹,在其中找到models文件夹,若没有则创建一个。现在,创建一个类似“props_teardown”的文件夹,并在该文件夹内再创建一个名为“palm_tree”(或任何你的模型名称)的文件夹。 返回garrysmod文件夹,找到models文件夹,若没有则创建一个。你需要做同样的操作,创建一个【props_teardown】文件夹,然后再创建一个以你的模型命名的文件夹。
现在我们已经设置好了这些文件路径。接下来可以开始为我们的模型制作材质(VTF文件)了。 你应该已经按照指南开头的说明安装了VTFEdit。现在打开它,界面看起来会类似这样:

点击左上角的白色页面图标导入PNG文件,请导入你的调色板PNG文件。随后会弹出第二个窗口,你可以跳过此页面并再次按回车键。导入图像后,前往顶部的【选项】并勾选【自动创建VMT文件】选项。

现在前往“文件”并点击“另存为”,确保将其保存到你在“materials/models”文件夹中创建的文件夹里。并且文件名必须与你在Blender中选择的材质名称完全一致,由于我在Blender中的材质名为“palm_palette”,所以我将VTF文件命名为这个名称。

双击VMT文件,用VTFEdit打开它。你会看到一个类似文本文件的内容,需要将顶部的“LightMappedGeneric”修改为“VertexLitGeneric”。这一步是告诉Source引擎该材质用于模型。 如果是为玻璃制作材质文件,还需要在VMT中添加以下行: "$normalmapalphaenvmapmask" "1" "$surfaceprop" "glass" "$envmap" "env_cubemap" "$translucent" "1" 这些代码会让材质呈现出玻璃的效果。 以下是我使用的玻璃材质VMT文件内容:

现在,我们已经为模型设置好了材质文件。接下来我们需要制作QC文件,以便使用Crowbar编译模型。 QC文件 编译模型必须要有QC文件,所以我们得创建它。先新建一个文本文件,然后输入以下内容: $modelname $body 1 $staticprop $surfaceprop $cdmaterials $contents "solid" $scale "1" $sequence "idle" $collisionmodel 现在我们需要对每一行进行一些编辑。首先是modelname,这里你需要添加模型文件夹中的文件路径。以我为例,路径是“props_teardown palm_tree isle_palm_tree”。 接下来是body,这里需要指定你的SMD文件,所以我会添加“palm”。接下来是Surfaceprop,这里用于指定物体发出的声音,你可以通过搜索【surfaceprop】找到相关列表,在我的示例中,我会使用“foliage”( foliage)。 CDMaterials用于指定材质文件路径,你需要从materials文件夹之后开始填写,就像处理models文件夹时一样。因此,在我的示例中,路径是“models props_teardown palm_tree ”。 Sequence是模型要执行的动画。我知道你可能会说:“但我没有为模型制作动画”,这正是我们只定义一个IDLE( idle)动画的原因。要实现这一点,你需要在“idle”行之后再次编写SMD文件。所以在我的示例中,我会写“palm.smd”。 Collision Model用于指定之前创建的碰撞模型,你需要填写碰撞模型的SMD文件。(如果你有碰撞模型,没有的话就重新指定SMD文件)在我的案例中,我会写“palm_physics.smd”,因为我制作了一个碰撞模型。 现在,你需要为碰撞添加一些额外的代码行。你要在collisionmodel行下方添加一个左花括号,然后写入 $concave $automass $intertia 1 $damping 0 $rotdamping 0 然后用右花括号闭合。 这是我的QC文件供参考:

现在你需要保存并退出QC文件,这是我们目前的进展。

我们的VTF和VMT文件不在这里,因为它们已经在正确的材质文件夹中了。现在只需双击QC文件即可打开Crowbar,界面大致如下。

我通过任务栏启动游戏后,文件不见了。正常情况下,顶部会显示正确的路径。 现在你需要选择要编译的游戏,我已经选择并设置好了盖瑞模组。如果你将盖瑞模组安装在非C盘的其他驱动器上,需要进入【设置游戏】选项卡,配置盖瑞模组的相关设置。 接下来,选择【输出至:子文件夹】,并指定一个子文件夹名称,就像我这样设置。 然后点击【编译】! 编译完成后,工作文件夹中会生成一个包含所有已编译文件的文件夹,包括MDL文件及相关文件。你只需复制包含这些文件的【models】文件夹,然后粘贴到你的【garrysmod】文件夹目录中,这样所有文件就会被准确地放置到应有的位置。

5. 问题 现在,你可能会遇到一些问题,最常见的很可能是超过顶点限制,你的模型过于复杂。你需要降低顶点数量或将其拆分为多个模型。 你也可以尝试在将游戏设置为反恐精英:全球攻势的情况下进行编译。由于其顶点限制更高,这可能会让你成功。但这是一种取巧的方法,而且是不良实践。 如果你的材质丢失,可以检查以下几点。首先检查你的VMT和VTF文件是否放置正确,其次确保你的Blender材质设置正确。你可以通过用记事本打开SMD文件并查看其中显示的材质来检查这一点。如果你愿意,可以使用“全部替换”功能来更改材质名称。模型碰撞位置错误的问题可以通过确保模型原点与碰撞体原点位于同一位置或足够接近(例如0, 0, 0)来解决。 6. 最终成果 现在所有设置完成后,你可以进入游戏并搜索你的模型。 这样就完成了!

如我之前所说,请在下方评论区提出问题和疑虑,我会尽力解答。 7. 模型优化 首先我要说明,这一步是可选的,但它能显著减少使用模型时地图的卡顿。 使用此方法进行优化有一些优缺点: 优点: - 有助于减少顶点和面数 - 可使模型更简洁 缺点: - 会使纹理变得模糊 - 对大型物体无效 那么,这些是什么意思呢?简单来说,该方法有助于去除道具上不必要的顶点,但对于较大的模型,它可能带来的问题比解决的问题更多。因此,建议仅对较小的道具执行此操作。 操作过程很简单:导入模型,确保将模型的调色板设置为纹理。然后选择绿色三角形选项卡,添加新的UV映射

现在,进入UV映射选项卡,确保已选中新的UV贴图,然后使用智能UV展开功能对模型进行展开,将岛屿边距设置为0.010,点击展开。此时你将获得一个新的UV贴图,而模型到目前为止应保持不变。

这就对了,现在打开顶部的【着色】选项卡。这里是定义模型材质的地方。不要触碰或删除任何内容,只需按Shift+A创建两个新节点,分别搜索【UV映射】和【图像纹理】。

按照此设置,将UV节点连接到图像纹理的矢量。在UV节点中选择新的UV映射,并在图像纹理中创建新的图像纹理。可以随意命名,但尺寸需设为512x512。 现在,转到原始纹理设置,将“颜色”选项连接到“发射”设置。这将用于烘焙。

完成这一步后,我们就可以进行烘焙操作了。 前往右侧带有相机图标的标签页。确保渲染引擎已设置为Cycles,我们只能在Cycles引擎下进行烘焙。 现在向下滚动至【烘焙】选项并展开,确保其设置为【发射】模式。

现在,只需选择你创建的图像纹理,然后点击烘焙按钮。这可能需要一段时间,但完成后你将获得一个基于模型调色板的图像纹理。

你可以将此图像保存到电脑中,因为接下来我们要降低多边形数量。只需进入修改器选项卡(蓝色扳手图标)并添加一个简化修改器。将其设置为“平面”模式,然后点击下拉箭头下方的应用按钮即可。

现在你可以回到【绿色三角形】选项卡,删除原始的UV贴图,只保留新的那个。然后重新应用这个新的纹理,搞定! 如果纹理模糊或变形,可能是模型太大了,这时你只能使用常规的调色板纹理方法。
2026-03-17 10:00:05 发布在
Teardown
说点好听的...
收藏
0
0
