Keep your place in this quest

Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.

Cave 是一个游戏引擎,这意味着它可以让你将想法变为实际的视频游戏。它是为了让你整理一切,创建你的关卡设计、界面和逻辑。但是对于实际的艺术创作,如纹理、3D 模型、动画、声音和音乐,你可能更倾向于使用专业工具。像 Blender, 3Ds Max, Maya, Sketchup 这样的 3D 工具,或者 Adobe Photoshop, GIMP, Krita 这样的图像处理工具,或者 Audacity 用于音频。当然,你可以使用其他任何外部工具。这里重要的是:

大多数游戏使用引擎之外制作的内容。

在 Cave 中也不例外。这意味着你需要将这些文件导入到引擎中,因此理解 如何 以及什么是 好的和坏的实践 是至关重要的。导入是将这些文件带入 Cave 的步骤,以便它们可以成为你项目的一部分。

本课介绍了初学者的导入工作流程。

你将学习:

  • Cave 可以导入哪些类型的文件。
  • 导入的文件在 Cave 中变成什么。
  • 为什么简单的首次导入比巨大的资产包更好。
  • 模型导入如何生成多种资产类型。
  • 导入后需要检查的内容。

目标是帮助你理解外部文件成为 Cave 资产时发生的事情。

可以导入什么?

Cave 可以导入多种类型的外部内容。

导入文件类型 变成
图像(各种格式) 纹理资产。
OGG 音频 音频资产。
TTF 字体 字体资产。
.cavePkg 文件 导入的 Cave 资产包。
3D 模型 网格、材质、纹理、骨架、动画和模板,具体取决于文件。

导入后,这些文件在 Asset Browser 中成为 Cave 资产。

这意味着它们可以在场景、材质、实体和实体模板、用户界面、音频系统、脚本、逻辑以及任何需要它们的地方使用!导入的文件不再只是磁盘上的松散文件。它们成为项目内容,Cave 可以进行引用、保存、组织和重用。

Cave 使用自己的格式

导入任何文件到 Cave 中(图像、纹理、音频、3D 模型等)时,资产会 转换为 Cave Engine 的专有和自定义格式。这一点很重要,因为这种内部格式更快被引擎解析和使用,以提供游戏的最佳性能。引擎会自动执行大量内部优化和缓存,以确保你的资产为游戏制作做好准备。

> 这一切都是内部的,你无需担心,但你需要理解这个过程是如何发生的,以及它如何影响你(以及为什么这是好的)。

如果你将 .png 图像文件导入到 Cave,最终游戏中将不会使用实际的 png 文件。它会在你将它放入引擎时立即经过快速转换过程,然后会使用 Cave 的格式。导入音频或 3D 模型时也会发生同样的事情。这条信息对于 3D 资产特别重要:Cave 不使用原始 DCC 格式,如 .fbx.obj.glb。它可以导入它们,但会将其转换为引擎格式。

发生这种情况的原因在于,虽然这些格式很流行,但在游戏中解析像 fbx 或甚至 png 这样的文件是昂贵的,可能会影响性能。因此,Cave 提取所有必要的数据,如网格、材质、动画、纹理,然后将其转换并存储为引擎格式。

这有三个重要影响:

  • 你的游戏会运行得更快在磁盘上占用更少空间
  • 资产导入 是破坏性的:Cave 不会保留原始的 RAW 资产引用,所以如果你对它进行外部更改,你需要再次导入。
  • 某些功能 可能不可用:虽然某些资产格式被支持,但这些格式中的某些功能可能不受 Cave 支持。在这种情况下,你会收到通知,导入过程不会将它们包含到最终资产中。

现在你已经知道了导入过程,让我们学习如何进行导入。


通过拖放导入图像

你可以通过将图像拖入 Asset Browser 来导入图像。

Cave 支持大多数常见的图像格式,如:

  • PNG。
  • JPG 和 JPEG。
  • TGA。
  • BMP。
  • HDR。
  • PSD。
  • PNM。
  • GIF。
  • PIC。
  • DDS。

导入的图像变成 纹理资产,可以被材质、用户界面元素、天空设置以及其他需要图像数据的系统使用。例如,一个纹理可能成为岩石材质的颜色图,一个用户界面的图标,或场景的天空盒图像。

为了进行第一次测试,保持简单:导入一个纹理,将其分配给一个材质,然后将该材质放在场景中的一个网格上,检查 3D View 中的效果。

导入音频文件

音频也可以通过将其拖入项目中来导入。目前,Cave 导入 OGG 音频文件。如果你有其他格式的音频,请在导入之前将其转换为 OGG。你可以找到在线工具来进行此转换,但我们还推荐软件 Audacity,它是免费的,非常易于理解,可以将音频保存为 ogg。

OGG 文件是一种免费、开源的多媒体容器格式,由 Xiph.Org 基金会开发。它主要用于流式传输和存储高质量数字音频,通常在文件大小比传统 MP3 更小的情况下,达到更好的音质。ref

导入的音频成为一个音频资产,可以在引擎中的任何地方使用,例如通过音频播放器组件、逻辑砖或通过 Python 代码调用。示例:

cave.playSound("My Audio File")

好的首次音频导入应该短小且易于测试:

  • 拾取硬币。
  • 按钮点击。
  • 门打开。
  • 简单的环境循环。
  • 游戏配乐。

导入字体和 Cave 包

Cave 可以导入 TTF 字体文件。TTF(TrueType Font)是一种字体文件格式,最初由 Apple 开发,后来被 Microsoft 采用,成为 目前用于可缩放数字文本渲染的标准格式之一

字体主要用于 UI Element Component,允许你创建游戏 HUD、文本、菜单、按钮、字幕、字幕界面等。字体的选择可以产生很大的差异,即使在一个简单的菜单中。

导入 Cave 包

Cave 还可以导入 .cavePkg 文件。Cave 包是可以导入另一个项目的 Cave 资产包。

如果你去 Asset Browser 右键单击一个文件夹或文件,你将能够将其导出为 Cave 包。在导出包时,你将能够稍后将其导入到其他项目中。这对于在不同项目中共享共通逻辑非常有用。请记住,在导出包时,只有右键单击的文件夹或资产内部的内容会被包含在内。因此,如果你想导出,例如,使用一组纹理的材质,重要的是将所有内容放在一个文件夹中,然后再导出该文件夹。否则,如果你只导入材质,纹理将不会包含在内。

当你将 Cave 包拖放到 CaveEngine 的 Asset Browser 中时,它将被导入,并且导出的原始文件结构将在你现有的项目中重新创建。这同样非常有用,可以共享可重用资产,将默认内容带入新项目,或在不同项目之间移动项目片段。


导入 3D 模型

现在我们到了 3D 游戏引擎中最重要的部分之一,即导入 3D 模型。Cave 使用 assimp 来支持通过其模型导入器导入广泛的 3D 模型格式。

它支持 多种模型格式 通过导入器,但 FBX 是 Cave 推荐的主要格式

模型导入可以同时生成多种资产类型:

  • 网格。
  • 材质。
  • 纹理。
  • 骨架。
  • 动画。
  • 实体模板。

确切的结果取决于原始文件。

一个简单的木箱可能只会生成一个网格、材质、纹理和模板。一个动画角色可能会生成网格、一个骨架、动画、材质、纹理和一个更复杂的模板。

推荐的首次导入

对于你的首次导入测试,使用简单、干净的资产。Kenney Asset Packs (CC0) 是一个适合初学者的不错选择,因为它们通常组织良好、轻巧且易于理解。你还可以查看 Quaternius Assets (CC0) 或浏览 FAB Asset Store

良好的首次导入可以是一个木箱、一块岩石、低多边形树、简单建筑或角色。避免从一个巨大的角色包或一个庞大的环境文件开始。简单的资产让你更容易理解 Cave 创建的内容、哪些设置很重要,以及导入的内容在 Asset Browser 中的外观。然后你可以转向更复杂的设置。

按步骤导入模型

当将资产(如 FBX)拖放到 Cave 的 Asset Browser 时,你会看到这样的窗口:

image.png

它支持一次拖放多个文件,将为每个文件创建一个标签。对于每个标签,你可以选择要导入的资产。这也会显示资产类型,以及如果你展开每个资产类型标题,将显示被 Cave 导入器识别和转换的资产。它还允许你单独选择要导入的内容,并相应地重命名文件。你也可以稍后更改导入的资产名称。

在顶部,每个文件标签之前,您将找到 两个全局选项(每个资产导入):

  • 设置,允许您选择是否为导入的资产创建子文件夹,或者是否希望在引擎生成的实体模板中自动生成物理效果。
  • 还有 筛选器 选项,当您导入数十个资产和节点时,它们非常有用,您只关心文件中的特定内容,例如网格。

基本模型导入通常看起来如下:

  1. 在资产浏览器中创建或选择一个文件夹。
  2. 将模型文件拖放到该文件夹中。
  3. 等待 Cave 解析文件。
  4. 检查导入选项。
  5. 选择应该导入哪些生成的资产。
  6. 如有需要,调整导入比例。
  7. 确认导入。
  8. 在资产浏览器中检查生成的资产。

导入选项可以按类型显示生成的资产分组。

这让您可以决定应该导入什么,而不是盲目接受所有内容。这很有用,因为模型文件可能包含比您实际需要的更多数据。

重要提示:

如果您正在下载数百个资产或资产包,如 Kenney 或 Quaternius 资产包,您会注意到这些包通常每个对象都有一个不同的 FBX 文件,并且每个 FBX 文件中都有一个材质的副本,有时甚至是将用于所有这些资产的纹理。

如果您将所有这些包含相同材质副本的资产拖放,这样一来,Cave 也会按预期导入所有副本,为您的项目生成大量不必要的数据,最终使您的游戏性能低效。这不是引擎的错误,仅仅是因为每个 FBX 文件中都有一份材质的副本。

在这种情况下的最佳实践 是首先将一个单独的 FBX 文件导入引擎,查看文件中的内容,确认其中的材质。将第一个文件导入并将材质放入您的项目中后,您可以导入所有其他文件,并使用筛选器来禁用材质和纹理导入,因为它们已经被引擎为第一个文件导入。然后,当您点击导入时,Cave 将尝试根据名称找到这个已经导入的材质,并使用它。

理解导入的网格

导入的模型可能生成一个网格或多个网格。这取决于该模型在原始 DCC 工具中是如何构建的。

例如:

源模型 可能的导入结果
简单箱子 一个网格,一个材质,一个实体模板。
具有独立部件的对象 多个网格和材质,一个实体模板。
动画角色 网格、骨架和动画,一个实体模板。

导入后,请检查生成的网格资产和生成的实体模板。

请注意,对于每次导入,将生成一个实体模板

实体模板试图复制您在 DCC 工具(如 Blender)中构建的场景配置。因此,如果您在建模软件中创建了布局,放置对象在某些位置,它将在实体模板中显示。您通常不会使用原始实体模板,但它可以帮助您快速识别对象,或者使它们本地化,而不是使用模板并开始在 Cave 中进行编辑。

导入资产后,请检查常见问题:

  • 对象是否太小?
  • 是否太大?
  • 方向是否不正确?
  • 是否以意外的方式拆分?
  • 生成的模板看起来正确吗?

最好立即捕捉这些问题,而不是在您已经在一关中使用资产之后。

如果您发现导入的资产有任何问题,值得在 Blender 或您想要查看的任何 DCC 中打开它们,看看它们是否正确。 我们还建议您在将资产导入 Cave 之前,先对资产网格进行三角化处理。

重要: 当您将 3D 模型导入 Cave 时,它会自动尝试三角化面。但有时可能会出现三角化错误,导致您的 3D 模型出现 "空洞" 或错误创建的面。为了避免这种情况,我们始终建议您去您的 DCC 建模工具中,自己三角化面。


理解材料和纹理

导入的模型也可以生成材料和纹理。

材料控制表面外观。纹理提供材料使用的图像数据。

导入后,请始终检查材料:

  • 是否分配了反照率纹理?
  • 法线贴图是否正确分配?
  • 是否导入了粗糙度或金属贴图?
  • 材料在视口中看起来正确吗?

导入是有用的,但它们并不是魔法。

导入后调整材料是正常的。例如,您可能需要微调粗糙度,修复缺失的纹理,或者为您的游戏视觉风格选择更好的材料设置。

多材质网格

在 Cave 中,一个网格使用一个材料。如果您在 DCC 工具中使用的对象使用多个材料,Cave 将其表示为多个网格。

一个实体仍然可以具有多个网格组件,因此最终对象在场景中的外观可能是相同的。结构只是不同的:

具有多个材料的对象
  使用材料 A 的网格组件
  使用材料 B 的网格组件
  使用材料 C 的网格组件

这使得 Cave 保持一个网格对应一个材料的关系,同时仍允许复杂导入对象正确显示。

由于 Cave 的工作方式,如果您将多材质网格导入您的项目,您会注意到在资产浏览器中,该网格将被拆分为不同的部分。但 Cave 会尝试为您在实体模板中重建最终实体,所有网格都合并在一起。

导入的实体模板

导入模型时,Cave 会创建一个表示原始设置的实体模板。这个模板很有用,因为它尽可能地保留了原始组合。

例如,一个导入的建筑可能会生成:

  • 若干网格资产。
  • 若干材料资产。
  • 纹理资产。
  • 一个将各部分组合在一起的实体模板。

该模板通常是拖放到场景中的最简单资产。

如果导入的对象作为模板看起来正确,您可以像使用任何其他 Cave 模板一样重用它。目标是将这些资产带入场景并将其转变为可玩空间。

基本导入提示

保持导入干净:

  • 偏好使用 FBX 作为模型。
  • 三角化面。
  • 对于音频使用 OGG。
  • 保持资产名称可读。
  • 偏好使用带空格或 PascalCase 的名称。
  • 导入到有组织的文件夹中。
  • 检查导入比例。
  • 检查生成的材料。
  • 在视口中测试导入的模板。
  • 导入后保存。

导入是开发的一个正常部分。

以小步进行,检查结果,然后继续构建。干净的导入工作流程将在您的项目开始使用更多自定义内容时为您节省很多时间。