当前位置: 首页 > news >正文

我们使用 Blender 和 Godot 的工作流程

Blender Studio 追求游戏项目的核心目标之一是验证和熟悉开源游戏开发的现状。 由于我们决定使用 Godot 作为引擎(显然 Blender 作为我们的 DCC),我们必须建立一个围绕这两个工具构建的管道,并允许一个 8 人的团队处理游戏文件。 在本文中,我想概述一下我们得出的结论。

Blender at the Center

从这个项目开始,我们心中就有一个梦想的管道。 一个挑战是,我们的工作室是为电影制作而设立的。我们的工具、基础设施和团队的技能都针对这一点。我们越能坚持我们所知道的就越好。 理想情况下,我们将能够尽可能多地利用 Blender,并拥有一个管道,允许我们在 Blender 中创建资产、场景组装、动画库和基本的游戏特定定义(如碰撞)。Godot 只会真正被用来验证游戏中的样子(当然,除了实现整个游戏逻辑)。 为此,我们需要能够在 Blender 中预览我们的资产,就像它们在游戏中的外观一样。由于我们大部分时间都采用了标准的 PBR 工作流程,因此开箱即用的效果非常好。

这种以 DCC 为中心的工作流程在游戏开发中不一定常见。但对我们来说,这是正确的方法,使我们能够发挥自己的优势。

glTF 作为容器

为了使我们的资产在游戏文件中可用,我们使用 glTF 作为交换格式。这对我们来说是一个显而易见的选择,原因有很多:

  • Blender 和 Godot 中都集成了可靠的原生支持(材质、动画、自定义网格数据)

  • glTF 正在积极进行开发,我们已经支持我们需要的许多功能

  • 它的高度可扩展性意味着我们可以在此基础上构建自己的功能

Godot 也可以选择直接导入文件,但我们决定不使用它。直接导入我们的资源意味着没有明确的导出/发布步骤。因此,工作文件和游戏资源文件之间不会有区别。这通常是可行的,但是当与多人协作时,我们发现明确将更改推送到生产环境中很有用。 由于 Godot 的这个功能在内部使用 glTF 作为交换格式,因此它是一个更好的解决方案,可以使该导出步骤成为我们管道的明确部分,并让我们对该过程有更多的控制权。.blend

集合导出

自动化导出管道的一个重要方面是使用 Blender 的导出集合功能。这意味着我们可以设置专用集合来导出多个单独的资源,而不是单独导出文件。因此,可以提前设置所有资源的导出设置,并且可以一次单独导出文件中的所有资源。 它还允许在文件中有各种附加数据以供参考,以便在不污染导出数据的情况下工作。.blend

同一 .blend 文件中许多资产的集合导出器设置的屏幕截图。

棘手的部分只是我们如何在彼此内部进行资源嵌套的问题,而不会冗余地导出嵌套资源。这就是一些额外的自定义代码的用武之地。

用于交换的自定义代码

为了给我们提供必要的控制权,使美术团队能够轻松地将资产运送到 Godot 并从 Blender 迭代它们,我们在两端都有自定义代码。 有一个 Blender 扩展,它可以处理设置和执行资产的导出,同时提供有关它的所有必要信息。还有一个 Godot 插件,可以确保在每次导入时,提供的数据都用于正确重新创建资产并生成所需的游戏数据。

你可以在本文末尾找到该代码的(非常)初步版本,这对我们来说已经足够好了,但不是一个完全充实的工具。

资产分离

设置的一个核心原则是,美术师将导出到游戏文件中的每个资产都只包含其自己的即时数据。如果另一个资产嵌套在里面(例如集合实例化),它应该被替换为引用,并且应该在导入时在 Godot 中重新创建该引用。

这样,可以在一个文件中定义树资源及其部分(每个分支可能有一个资源集合),并且可以在单独的设置文件中定义树的实例化和放置。集合、树和分支都是单独的资产,而每个资产的数据只导出一次,并且文件之间存在的引用在 Godot 中的导出文件之间重新创建。在这种情况下,set 资源实际上只包含其他资源的引用和转换。

http://www.dtcms.com/a/288230.html

相关文章:

  • Python高级数据类型:字典(Dictionary)
  • 遇到SolidWorks 安装失败
  • AI辅助编程时代的高效规范开发指南:工具、原则与提效策略
  • Python 桌面版 数独游戏(一版)
  • window上docker安装RabbitMQ
  • Synopsys Datapath Coding 指南
  • 【ExtendScript Toolkit CC】【PR插件开发】获取当前序列的所有剪辑片段名
  • 技术文章:PCB基板的介电强度
  • RT-Thread的概念和移植
  • 141. 环形链表
  • 智慧资产管理系统需求文档
  • Java从入门到精通!第九天, 重点!(集合(一))
  • 机器视觉为触摸屏装上“智慧之眼”,打造智能化生产!
  • 仓库源MySQL安装教程
  • aosp15上SurfaceFlinger的dump部分新特性-无Layer相关详细信息输出如何解决?
  • 【Keil5-map文件】
  • 初入了解渗透
  • 【SVM smote】MAP - Charting Student Math Misunderstandings
  • P1816 忠诚 题解
  • leetcode_53 最大子数组和
  • MySQL(145)如何升级MySQL版本?
  • 研华PCI-1285/1285E 系列------(一概述)
  • VIT速览
  • 用 Numpy 手动实现矩阵卷积运算
  • 汽车ECU控制器通信架构
  • 车载诊断架构 --- 故障码DTC严重等级定义
  • LVS部署模式NAT集群案例
  • WSL在 Windows 上使用 Linux 工具链和开发环境
  • 慕尼黑工业大学具身机器人实时环境探索!FindAnything:基于开放词汇对象中心映射的机器人任意环境认知与导航
  • FLASH:GPU 集群全连接通信的近最优极速调度