
本教程将介绍如何在 Blender 中准备用于导出到 Godot 的瓦片集,如何使用 Blender 的 .escn 导出器,以及如何在 Godot 中配置瓦片集,以便在后续网格发生更改时能够轻松更新。 简介

本教程最初发布在我的网站[victorkarp.com]上,你可以在那里找到更多与《Godot》《Blender》和《雷神之锤3》相关的教程。 本教程适用于Godot 3.x版本。在Godot 4中,部分细节可能有所不同。 本教程将教你如何在Blender中准备要导出到《Godot》的瓦片集,如何使用Blender的.escn导出器,以及如何在《Godot》中配置瓦片集,以便在网格后续发生更改时能够轻松更新。 我们的目标是能够在后续更新现有瓦片集部分时,无需反复修复任何轴心点或材质,并实现从Blender中的网格到《Godot》中部件的轻松过渡。 本教程不会使用《Godot》的网格地图(Gridmaps)功能。本教程旨在介绍使用 Godot 的吸附工具手动排列图块集部件的工作流程。不过,如果你打算使用网格地图(Gridmaps),也可以参考本教程中的信息进行设置。 在 Blender 中准备图块集 确保所有单独的图块集部件都遵循以下规则: - 部件名称遵循你的命名规范(例如 wall_large_brick_01)。可按 F2 重命名对象 - 轴心点位于正确位置 - 已应用旋转和缩放(Ctrl+A -> 旋转与缩放) - 网格上的材质已正确命名 在 Godot 中创建材质 在将任何内容导出到 Godot 之前,你需要在 Godot 中创建 Blender 图块集场景中使用的所有材质,并确保其名称与 Blender 中的完全一致。你将素材存储在项目文件夹中的哪个位置并不重要,但名称必须匹配。这样,当我们导出网格时,Godot 就能自动将这些素材分配给网格。 为什么不让 Godot 创建素材呢?Blender 中的素材看起来不一定和游戏中的最终素材一样。也许你在 Blender 中只使用了反照率纹理,而在 Godot 中使用了完整的 PBR 设置。这种情况下,Godot 只会导入反照率纹理,之后你就必须手动导入法线和粗糙度纹理。 如果你已将所有纹理导入 Godot 项目,但瓦片集部件的素材不存在,Godot 会创建缺失的素材。但如果此材质的纹理与材质不在同一文件夹中,Godot 会不必要地重新导入它们。最终你会在不同文件夹中得到相同的纹理。出于这两个原因,我更喜欢在导出任何网格之前自己创建材质。 从 Blender 导出到 Godot 1. 安装 .escn 插件 从 GitHub[github.com] 下载 .escn 导出器。右上角有一个绿色的“Code”按钮。点击它并选择“Download ZIP”。ZIP 压缩包内有一个 io_scene_godot 文件夹。将整个 io_scene_godot 文件夹复制到 Blender 的插件文件夹中。插件文件夹可在 Blender 的安装位置下的 Blender/[当前版本]/scripts/addons 中找到。 2. 在 Blender 中激活插件,方法是点击“编辑”->“偏好设置”->“插件”。搜索Godot并启用Godot Engine Exporter。 导出至Godot: 我们会将所有图块集部件导出为单个文件。Godot可以将该文件分解回各个部件。这样我们可以节省大量时间,因为无需单独导出每个图块集部件。 如果你的Blender场景只包含图块集部件,没有其他内容,则无需选择任何东西。如果文件中包含其他你不想导出的部件,只需选择你想要导出的图块集部件。 点击文件->导出->Godot Engine(.escn)。 所有设置均可保留默认值。如果你只选择了图块集的某些部件,则必须启用“仅选中对象”选项。

应保持“生成外部材质”功能为禁用状态,因为我们已在Godot中创建了材质。 在本教程中,将文件导出到名为“Tileset/Parts”的子文件夹,并将文件命名为“_Tileset”。稍后我会解释原因。点击“导出到Godot”以导出所有内容。确保选择Godot项目内的导出位置,否则导出将失败。 ### 重新拆分瓦片集 导出文件后切换到Godot,Godot将导入该文件。最终你会在“Tileset/Parts”文件夹中得到一个名为“_Tileset”的单个文件。选择“_Tileset”文件,切换到“导入”选项卡,点击“预设...”并选择“导入为多个场景”。预设加载后,你可以点击“重新导入”按钮重新导入文件。文件将自动拆分为原始部分。每个部分都保存为单独的.scn文件。

为每个部件创建新场景 如果打开一个新的.scn文件,你会发现一个带有某个 tileset 部件的网格节点。如果材质设置正确,材质会自动分配。但存在一个问题:网格不在场景中心,它与 Blender 中的偏移量相同。我们不应在 Godot 场景内重置位置,因为每次重新导出 tileset 时,所有更改都会丢失,网格会再次偏离。以下是我们为每个.scn部件要执行的操作: 1. 创建一个新的空 3D 场景,使其根节点为 Spatial 节点 2. 将.scn文件拖放为 Spatial 节点的子节点它将转换为网格。 将网格节点的平移重置为0,0,0。 将网格节点的名称复制到空间节点,使它们名称相同。 将场景保存到“零件”文件夹上一级的文件夹中(如果使用本教程中的名称,则为“图块集”文件夹)。最终场景的文件扩展名为.tscn,且名称与你的图块集零件相同。 最终,所有图块集零件将保存在“图块集”文件夹中。解压后的.scn文件位于“零件”文件夹下一级,原始的_Tileset文件也可在此处找到。下划线使其更容易查找,因为它通常是该文件夹中的最后一个文件。 当然,你也可以采用其他结构,但我发现这种设置使用起来很方便。 (重新)导入已更改的零件 现在更新零件非常简单。在 Godot 中关闭所有使用你想要更新部件的场景(Godot 目前在更新正在使用的网格时存在问题),在 Blender 中进行修改,重新导出 .escn 文件,返回 Godot 后你的更改将立即生效。即使在 Blender 中更改了轴心点,最终 .tscn 文件中的轴心点也会保持不变。 如果你在部件集中添加了新部件,它们会被添加到你的“部件”文件夹中。只需按照之前的相同步骤操作,并将它们另存为新场景即可。 ### 覆盖材质 你无法在 .scn 部件文件中覆盖材质,重新导入部件时所有更改都会丢失。但你可以在最终的 .tscn 文件中覆盖材质。在此处进行的更改在网格重新导入后仍会保留。 在 .tscn 文件中选择网格,然后打开“材质”分类。将材料拖放到空的材料槽位上,即可用其他材料替换该槽位中的材料。

结束语 你是否为本教程中的任何步骤找到了更好、更简单的解决方法?那太棒了!请在评论区告诉我,这样大家都能从中受益。
2026-02-13 19:00:18 发布在
Godot Engine
说点好听的...
收藏
0
0
