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,虽然可以导入,但会转为引擎格式。

之所以这样,是因为这些格式虽然流行,但在游戏中解析像 fbxpng 文件的成本很高,会影响性能。所以 Cave 会提取所有必要数据,如网格、材质、动画、纹理,然后转换存储为引擎使用的格式。

这有三点重要影响:

  • 你的游戏运行更快,且占用磁盘更少
  • 资源导入是破坏式的:Cave 不保留 RAW 资产的原始引用,如果你在外部修改了它,必须重新导入。
  • 部分功能可能不可用:虽然支持某些资源格式,部分格式内的功能可能不被 Cave 支持。遇到此情况会通知你,并且导入过程中不会包含这些功能。

了解了导入流程,我们继续学习具体操作。


通过拖放导入图片

你可以通过拖放图片到 Asset Browser 来导入。

Cave 支持以下常见图片格式:

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

导入的图片成为 纹理资源,可用于材质、UI元素、天空设置及其他需要图片数据的系统。例如,纹理可以用作岩石材质的颜色贴图,UI 中的图标,或场景的天空盒图片。

首次测试时,保持简单:导入一个纹理,将其赋予材质,将该材质应用于场景中的网格,并在 3D View 中查看结果。

导入音频文件

音频也可以通过拖放导入。当前,Cave 支持导入 OGG 音频文件。如果你的音频是其他格式,请先转换为 OGG。你可以使用在线转换工具,也推荐使用免费且易用的软件 Audacity,它可以轻松将音频保存为 ogg 格式。

OGG 文件是一种由 Xiph.Org Foundation 开发的开源多媒体容器格式,主要用于流式传输和存储高质量数字音频,通常比传统 MP3 在更小文件大小下提供更好的音质。参考

导入的音频成为音频资源,可以在引擎中任何位置使用,例如音频播放器组件、逻辑积木,或通过 Python 代码调用。例如:

cave.playSound("My Audio File")

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

  • 拾取金币的音效
  • 按钮点击声
  • 门开启声
  • 简单的环境循环音
  • 游戏配乐

导入字体和 Cave 包

Cave 可以导入 TTF 字体文件。TTF(TrueType Font)是由苹果最初开发,后由微软采纳,成为当前常用的数字可缩放文本渲染标准格式之一

字体主要用于 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 资源包 (CC0) 是很好的初学者选择,因为它组织良好、轻量且易于理解。你也可尝试 Quaternius 资源 (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,Cave 会导入所有这些副本,造成项目中生成大量不必要的数据,最终导致游戏性能下降。这不是引擎的问题,只是因为每个 FBX 文件内都有材质的副本。

在这种情况下的最佳做法是先导入一个 FBX 文件,查看里面内容,确认其材质。导入第一个文件后,材质已经在项目中存在,然后导入其他文件时使用过滤器关闭材质和纹理导入,因为这些已经存在。这样,当您点击导入时,Cave 会尝试根据名称找到已导入的材质并重用它。

了解导入的网格

一个导入的模型可能生成一个或多个网格,这取决于其在原始数字内容创建(DCC)工具中的构建方式。

例如:

源模型 可能的导入结果
简单箱子 一个网格,一个材质,一个实体模板。
分离零件的物体 多个网格和材质,一个实体模板。
动画角色 网格、骨架和动画,一个实体模板。

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

请注意,每次导入都会生成一个实体模板

实体模板试图还原您在 DCC 工具(如 Blender)中构建的场景配置。例如,如果您在建模软件中创建了布局,将对象放置在特定位置等,这些都会体现在实体模板中。通常您不会直接使用原始实体模板,但它有助于快速将对象放入场景中以识别它们,或让它们变为本地对象,而非使用模板并开始在 Cave 中编辑。

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

  • 对象是否过小?
  • 是否过大?
  • 旋转是否正确?
  • 是否被意外分割?
  • 生成的模板是否正确?

及早发现这些问题比在层级中广泛使用资源后再发现要好。

如果发现任何问题,建议在 Blender 或其他 DCC 软件中打开资源确认其正确性。我们也建议您在导入 Cave 之前先对网格进行三角化处理。

重要提示: Cave 在导入 3D 模型时会自动尝试对面进行三角化,但有时可能会有三角化错误,导致您的模型出现"洞"或错误的面。为避免此类问题,强烈建议您在模型工具中自行进行三角化处理。


理解材质和纹理

导入的模型也可能生成材质和纹理。

材质控制表面的外观,纹理为材质提供图像数据。

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

  • Albedo 纹理是否已分配?
  • 法线贴图是否正确分配?
  • 粗糙度或金属度贴图是否导入?
  • 材质在视口中是否看起来正确?

导入功能很实用,但不是万能的。

导入后调整材质很常见,比如调整粗糙度,修复缺失纹理,或选择更适合您的游戏视觉风格的材质设置。

多材质网格

在 Cave 中,一个网格只使用一个材质。如果您在 DCC 工具中创建的对象使用了多个材质,Cave 会将其显示为多个网格。

一个实体仍然可以拥有多个网格组件,这样最终场景中的对象看起来是完整的,结构只是不同:

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

这让 Cave 保持清晰的一网格对一材质的关系,同时能正确呈现复杂导入对象。

由于 Cave 的工作方式,如果导入多材质网格,您会在资源浏览器看到该网格被拆分为不同部分。但 Cave 会尝试在实体模板中组合所有网格,重新创建最终实体。

导入的实体模板

导入模型时,Cave 会创建一个实体模板,代表原始设置。此模板很有用,因为它尽可能保留了预期的组件配置。

例如,导入一栋建筑可能生成:

  • 多个网格资源。
  • 多个材质资源。
  • 纹理资源。
  • 一个将各部分组合起来的实体模板。

该模板通常是拖入场景的最简便资源。

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

基本导入技巧

保持导入清晰:

  • 模型优先使用 FBX 格式。
  • 提前三角化面。
  • 音频使用 OGG 格式。
  • 资源命名保持可读性。
  • 优先使用带空格或 PascalCase 的名称。
  • 导入到有序的文件夹。
  • 检查导入比例。
  • 审查生成的材质。
  • 在视口测试导入的模板。
  • 导入后保存。

导入是开发的正常环节。

分步操作,检查结果,再继续构建。良好的导入流程在项目大量使用自定义内容时能为您节省大量时间。