Skip to content

Latest

More results

SLIM 现已推出:可扩展的轻量级交互模型

利用轻量级渲染复合技术的强大功能,为各类设备构建更大、细节度更高的世界

Roblox 拥有数百万个体验,有简单的迷你游戏,也有充满高保真 3D 素材的大型开放世界。 我们的目标是支持创作者打造愈加丰富且复杂的体验,并在各类用户设备上顺畅实现。为此,我们需要在引擎、内容交付系统和基础架构方面进行创新。 可扩展的轻量级交互模型 (SLIM) 是多部分开发工作中的一个组成部分,可以在不影响性能的前提下,让创作者实现其宏伟的艺术愿景。 

借助 SLIM,创作者可以让系统自动创建 Roblox 体验中任何对象的轻量级形式,尽可能减少客户端在渲染稳定、无缝世界时所需的绘制调用、三角形和数据模型实例的数量。 SLIM 为我们的串流模型提供了优化内容的强大新方式,让使用高端游戏 PC 电脑的用户和使用低端移动设备的用户都能以其设备所能处理的最高保真度享受同一体验。

SLIM Scene.webp
在启用实例串流和 SLIM 的情况下,上述场景使用的数据模型实例、三角形和绘制调用要少得多。
不使用实例串流和 SLIM使用实例串流和 SLIM
客户端数据模型实例15974592536
三角形2000 万335 万
绘制调用24021454

串流的两大支柱:实例和素材

当您在喜爱的串流服务上观看电影时,您的设备不会在您开始观看之前下载整个文件。 它只下载足够的数据,让您能够立即开始观看,然后持续下载(或缓冲)接下来的几秒钟,这样就不会中断观看体验。 如果您通过低端设备或慢速网络播放流媒体,平台会自动进行调整,向您发送低保真版本的内容,同时下载足够的数据来串流高保真内容。

Roblox 使用类似的概念来即时串流内容,但呈现高保真 3D 模拟所需的数据本身就是一项挑战。 视频的内容时间线是线性的,是从单个视角查看,而 Roblox 体验包含庞大的交互式 3D 世界,其中充满了许多类型的素材,用户可从所控制的多个视角查看。 而且,每天有 1.515 亿活跃用户使用各种设备游玩和探索内容,并且会进行串流操作,这也让我们在内容的交付与呈现方式上拥有巨大的优化空间。1

用户在 Roblox 上看到的一切(汽车、树木、虚拟形象或建筑物)在引擎中都以多个实例呈现。 例如,一辆可用的汽车可以分解为保险杠、车门、车轮等实例。 在体验中,每个实例都使用多个素材构建,例如 3D 网格、纹理、动画和音频。

Roblox 上的几乎所有串流都分为两种核心技术:实例串流和素材串流。

  • 实例串流确定用户设备需要串流哪些实例。 无需串流用户尚未看到或交互的体验部分。 在上述示例中,只有呈现附近建筑物的实例被串流到客户端。

  • 素材串流确定串流实例的质量。 用户无法辨别遥远山脉的精细细节,因此无需下载这些山脉的高分辨率 4K 纹理。 在上图中,远处的建筑物和占用少量屏幕空间的建筑物使用了十进制网格和较低分辨率的纹理。 

此操作的核心是我们名为 Harmony 的系统,它会监控每个用户在每一帧的可用资源。 Harmony 会调整实例和素材的串流,根据设备的内存、GPU 和 CPU 负载以及网络带宽提供最佳体验。 对于高端游戏 PC 电脑,Harmony 会将一切提升至最高质量。 对于网络较差的移动设备,它会自动降级,以确保用户体验的流畅性。

在《Tech Talks》播客的第 30 集中,我们的团队成员讨论了串流、云转码和 SLIM 背后的技术。

SLIM:可扩展的轻量级交互模型

SLIM 的核心理念简单而强大:SLIM 可以为创作者世界中任何对象或模型自动创建多个轻量级优化形式,并将其存储在服务器上,以便在运行时获取。 然后,每个用户的客户端可以根据设备的可用资源,在渲染原始实例和素材或渲染某个轻量级 SLIM 形式之间动态切换。

SLIM 使用两种主要技术来生成轻量级形式:

1. 复合

首先,SLIM 将多个部件合并为数量较少的部件。 下面的汽车需要 112 个单独的网格和 24 个单独的纹理,而它的轻量级形式可能只需要一个网格和四个纹理。 合成流程经过精确调整,与引擎最终渲染内容的方式相匹配,消除对象内部不可见的几何体,并减少渲染所需的绘制调用数量。

SLIM 汽车比较.webp

2. 细节等级 (LoD)

在复合模型后,SLIM 会生成不同细节等级的多个版本。 这意味着创建三角形数量显著减少的 3D 网格版本,并以低得多的分辨率生成纹理,这与我们使用传统 LoD 技术处理单个网格或纹理素材是一样的。 当应用于 SLIM 模型时,这些技术可以进一步优化,因为我们拥有每个底层实例的单独坐标系。 这让我们能够全面了解创作者希望如何同时渲染这些资源。 掌握这些信息,我们就能利用 SLIM 做出更明智的决定,即在哪里删除不必要的细节,在哪里保留用户会注意到的细节。

未定义

在合适的时间呈现合适的形式

为对象创建多个形式后,SLIM 需要根据用户的具体设备决定使用哪一个形式,或者判断是否要改用传统渲染技术。 系统将世界划分为三个不同的区域。 简单理解,这些区域就是从玩家位置向外延伸的同心圆。

未定义

串流的边界实际上并非圆形。 其形状取决于多种因素。

HH 区域(重量级实例,重量级渲染)

在 HH 区域中,完整的重量级实例会从服务器串流到客户端数据模型,由客户端决定为每个实例下载并渲染哪种素材形式。 此区域中的素材仍可通过网格 LoD 和纹理 mip 实现缩放效果,但不支持复合渲染。 在 SLIM 出现之前,串流至体验的每个实例都采用此渲染方式。 

HL 区域(重量级实例,轻量级渲染)

HL 区域位于 HH 和 LL 区域之间。 在此区域中,客户端的数据模型中有重量级实例,但可以选择通过完整渲染管道或 SLIM 流程进行渲染。 该区域会进行调整,即使用户遇到网络延迟,也能确保 HH 和 LL 区域之间的无缝过渡。 HH 和 HL 区域之间的过渡点是动态的,这使得 Harmony 能够即时向上或向下扩展,以响应任一方向的资源峰值。

LL 区域(轻量级实例,轻量级渲染)

在 LL 区域中,客户端仅串流定义 SLIM 模型坐标系所需的超轻量级实例形式,以及最少量的元数据。 此区域仅渲染轻量级复合 SLIM 模型,而不是每个单独的实例和素材。 与在每个重量级实例中进行串流并使用传统渲染管道相比,LL 区域需要的三角形和绘制调用数量要少得多,用户设备上的内存使用也会减少。

使用此区域技术,客户端可以在任何时候渲染整个可见世界,同时避免因同时使用所有重量级实例和素材而产生的全部计算成本。 远处的对象采用高度优化的轻量级形式,当用户靠近时,这些形式会被高保真版本所取代。 SLIM 能够创建复合模型和多级缩放 LoD 模型,这为 Harmony 提供了更多优化手段,使其可以根据每个用户设备优化素材质量。

当一切协同运作时,玩家会完全沉浸其中,察觉不到过渡点或细节层次的变化。

未来:SLIM 的发展方向是什么?

SLIM 只是多个阶段中的第一阶段,我们期待看到创作者们如何将这项技术融入工作流程。 未来,我们计划从两个主要方向扩展 SLIM。

确定 SLIM 还可以用于哪些方面

我们首先从创作者在 Studio 中指定的静态模型着手,但未来,SLIM 将能够优化 Roblox 上更为复杂的模型:平台虚拟形象。 对于创作者来说,虚拟形象及其所有相关动画、层叠服装和配饰可能是一个不可预测的变量。 允许对虚拟形象进行 SLIM 处理,意味着引擎可以有效限制单个虚拟形象模型使用的资源。

最终,我们希望让创作者有机会利用 SLIM 来更改动态模型。 设想这样一种模型:服务器可以主动进行更改(例如,门打开或某个部件被破坏),但通过一些巧妙的方法,客户端仍然可以重复使用相同的轻量级形式。

优化 SLIM 管道

我们已经拥有了一个端到端管道,为引擎带来了全新维度的灵活性,我们现在还专注于使管道本身更智能、更快速、更高效。 这包括:

  • 纹理重制图集:智能地将多个模型纹理打包成单个优化纹理表。

  • 自动分割:基于对世界的语义与空间理解,自动识别最适合应用 SLIM 的模型。

  • 更轻量级的形式:对于不太依赖延迟的动态对象,我们正在探索如何生成几乎无需资源即可在客户端上渲染的 2D 形式。

  • 分层 SLIM:将多个 SLIM 模型嵌套在一起,以便简化整个实例组,并使引擎能动态选择不同的精细度级别,例如从一棵树到森林,再到充满森林和其他对象的整个陆地。

  • 提高分辨率:如今我们专注于优化性能以实现降级处理,但很快,同一套系统将能让我们在保持创作者原始艺术构想的前提下,为未来硬件提升素材分辨率。 这一新架构意味着,随着我们的引擎在模拟现实方面变得越来越好,我们可以不断升级它所使用的形式。 

将 SLIM 与 Harmony 以及我们的整套串流和内容交付架构相结合,将助力我们更进一步实现愿景,为更多玩家打造更广阔、更细致的世界。 我们的引擎、内容交付和云基础架构的紧密集成,加上数百万创作者的庞大内容库,使我们能够构建深度互连的系统,从而改善整体体验。 随着我们的引擎在模拟现实方面变得越来越好,我们可以不断升级它所使用的形式。 如今我们专注于优化性能以实现降级处理,但很快,同一套系统将能让我们在保持创作者原始艺术构想的前提下,为未来硬件提升素材分辨率。

我们正在打造的平台不仅尊重创作者的艺术构想,还能在可使用 Roblox 的任何地方,通过各种不同的设备,智能且自动地将他们的作品呈现给所有用户。 我们迫不及待地想看看社区成员将如何利用它来构建内容。

1截至 2025 年第三季度。