Skip to main content
铸造

网络研讨会回放:优化 3D UI,在目标硬件上实现高性能

在真实硬件上稳定运行的 3D 框架

使用专为流畅运行于嵌入式系统、移动端与桌面端平台而设计的 3D 框架,打造令人印象深刻的用户界面,在产品全生命周期内保持稳定一致的性能表现。

An example of car HVAC control system built with Qt, mixing both 2D and 3D graphics.
Qt-3DFramework-HighlightScene-1300-900

Qt-3DFramework-Highlight3Dwith2D-1300-900

3D 对象与特效

Qt-3DFramework-HighlightObject-1300-900-1

3D 场景

Qt-3DFramework-HighlightScene-1300-900

3D 与 2D 融合

Qt-3DFramework-Highlight3Dwith2D-1300-900-1

不破坏用户体验的 3D 图形

Qt 框架提供多种选项,帮助开发者在 3D 模型与场景的精度、细节和真实感与目标硬件的性能需求之间实现最佳平衡。您的 3D 图形将长期保持稳定一致,可按需定制与优化,UI 在各目标平台上均能流畅运行。

完整 3D 框架

无需承担游戏引擎的额外开销,即可构建现代化 3D 用户界面,确保最优且稳定的性能表现。

构建 3D 界面

原生融合 2D 与 3D

在同一 用户界面中融合 2D 与 3D 图形,无需切换工具或编程语言。

灵活混搭

跨平台 3D 场景

一次创建 3D 用户界面,无需重写代码即可跨平台部署,并保持原生性能。

跨平台渲染

使用之前的解决方案,内存占用在不断攀升。起初一切看似正常,但随后用户界面开始将硬件性能耗尽并发生崩溃。切换至 Qt 后,我们立即看到内存使用量降低了 85%,且性能随时间保持稳定一致。

Verge Motorcycles UX/UI设计师 Tero Ohranen

查看客户案例

Qt 的 3D 框架,将在 3D 性能网络研讨会上展示的示例
流畅的 3D 用户界面

3D技术助力性能优化

拥有强大的 3D 引擎和原生渲染能力固然重要,但真正确保 UI 在所有目标硬件上流畅运行的关键,在于有意识地选择影响应用性能的 3D 技术方案。

我们举办了开发者对开发者的网络研讨会,内容涵盖如何在兼顾性能开销的前提下创建出色 3D UI 的实操技巧与示例。

原生 2D、2.5D、3D 图形

无需变通方案,原生融合 2D 与 3D

无需借助独立工具包,直接构建混合 2D 与 3D 对象的界面。

Qt Quick 3D 是 Qt Quick 的扩展,无论设计平面图形、2.5D 效果还是复杂 3D 场景,均可使用同一语言和代码库。

需要在 2D 仪表板中添加 3D 模型?轻松实现。想在 3D 环境中嵌入可交互的 2D 控件?同样没问题。

所有元素天然协同工作,让您专注于打造出色界面,而非纠缠于集成问题。

将 2D 内容嵌入 3D 场景

Git 示例:包含交互式 2D 元素的 3D 场景

Qt 支持在 3D 场景或元素中轻松嵌入可交互的 2D UI 组件。

Kappa Tau Station 是一个基于 Qt Quick 3D 构建的开发者示例,展示了一个包含完全集成的可交互 2D 屏幕、小型键盘等元素的宇宙飞船内舱 3D 场景。其中 2D 元素基于 Qt Quick 构建,与整体 3D 模型天然兼容,并作为统一用户界面支持用户交互。

访问示例 Git 仓库

查阅 “2D in 3D”文档

 

Qt's 3D Framework, example of embedding interactive 2D elements inside a 3D user interface

Qt 天然支持创建原子化 UI 组件,这些组件可跨项目和设备复用,在不同设备上提供一致、出色的用户体验。

BSH 全球 GUI 框架开发负责人 Daniel Dersmann

查看客户案例

使用 Qt 制作的 3D 场景,显示一艘船在现代城市的河流上航行,驶入一座桥下。
3D 用户界面

功能完备的专业 3D 框架

Qt 提供与游戏引擎同等的能力,却无需承担玩家逻辑、关卡系统和游戏循环等不必要的额外开销。

从简单的 3D 对象到复杂的交互式场景,Qt 提供构建专业 3D 图形所需的一切:

  • 导入或创建模型
  • 应用真实材质与光照
  • 添加动态与物理效果
  • 按需自定义着色器

由于 Qt 针对用户界面开发进行了深度优化,性能始终保持稳定和最优。

3D 功能亮点

全局光照

通过光照贴图烘焙(Lightmap Baking)预生成光照,即便在资源受限的硬件上也可使用;通过实时屏幕空间全局光照(SSGI)使场景更具动态感;或将两者结合以获得平衡的最终效果。


阅读技术深度解析

关于全局光照的 Qt 3D 框架示例,以卧室 3D 场景为特色,您可以将其下载为 Qt 示例,并切换全局光照和屏幕空间全局光照的开与关

粒子系统(Particles)

使用反向粒子创建雨雪等效果,利用混合粒子效果(Blend Particle)实现 3D 模型的构建或爆炸演示,并通过场景网格(Scene Mesh)等功能让粒子与 3D 模型和光源产生交互。


查看粒子功能最新动态

Qt 的 3D 框架微粒效果示例,展示了从 3D 模型中迸发出蒸汽效果的游戏场景

反射与光照(Reflections & Lighting)

通过基于图像的光照(IBL)提升真实感;利用阴影贴图(Shadow Mapping)和屏幕空间反射(SSR)使表面呈现动态效果;并通过反射探针(Reflection Probe)确保各摄像机角度下的视觉一致性。


查看 SSR 示例

Qt 有关反射和照明的 3D 框架示例,展示了一辆打开前大灯、表面光亮的汽车

光晕、辉光与更多效果

通过镜头光晕(Lens Flare)、辉光(Glow)等多种后处理效果,使 3D 场景更真实、更具视觉吸引力;实现基于深度或高度的雾效和模糊效果;并通过细节层次(LoD)等技术优化资源使用。


查看 3D 文档

Qt 的 3D 框架示例:添加炫光、辉光和其他 3D 效果,以超现实 3D 场景为特色

跨平台原生渲染


Qt 3D 框架提供多种渲染技术,选择时通常需要在提升真实感与增加渲染开销之间取得平衡。以下是部分可用技术的亮点介绍。

此外,Qt 6 中引入的渲染硬件接口(QtRhi)是一个图形抽象层,支持一次编写渲染代码,并自动为各目标平台转译为最适配的原生图形 API,如 Vulkan、Direct3D、Metal 或 OpenGL。

借助上述能力,Qt 可从低功耗系统自然扩展至高性能系统,以更低的 CPU 开销和更优的 GPU 利用率在各平台上实现最佳图形性能。

基于物理的渲染(PBR,Physically Based Rendering)

PBR 通过精确的光-材质交互提升 3D 元素的真实感,配合光照探针(IBL,基于图像的光照)效果更佳。

骨骼动画(Skeletal Animation)

骨骼动画是一种通过"骨骼"(骨架)和"蒙皮"(柔性 3D 网格表面)来表示 3D 模型的技术。移动骨骼会自动驱动蒙皮变形,从而产生真实的运动效果。骨骼数量和网格密度会影响模型复杂度,进而影响应用性能。

详见Qt 文档中的骨骼动画说明

变形动画(Morphing Animation)

变形动画(又称混合形状/Blendshape)是一种将模型或形状逐渐变换为另一种形态的技术,常用于制作面部表情动画。但由于每帧需要处理多个顶点位置,其计算量通常高于骨骼动画,在性能敏感场景中应谨慎使用。

详见 Qt 文档中的变形动画说明

实例化渲染(Instancing)

实例化渲染是一种通过向 GPU 仅发送一次几何数据并指示其多次绘制来渲染同一 3D 模型多个副本的技术。该技术通过减少 CPU 绘制调用和 GPU 内存占用,大幅提升性能,可高效渲染数千棵树、草丛或人群等对象。每个实例可拥有独立的位置、缩放、旋转或颜色等属性。Qt 的 Instancing API 是处理复杂场景的重要性能工具。

详见Qt 文档中的 Instancing API 说明

顺序无关透明度(OIT,Order-Independent Transparency)

OIT 是一种能从任意角度正确显示透明 3D 对象的技术,通过在 GPU 上管理深度混合,消除了手动排序的需求。OIT 对于现代实时渲染至关重要,但真实感的提升需要额外的渲染开销作为代价。

通过 Qt 的 OIT 示例亲自体验。

抗锯齿(Antialiasing)

抗锯齿(如 MSAA、FXAA)是一种平滑对角线或曲线边缘锯齿(像素化)的技术,使其看起来更平滑或更真实。由于各技术各有优缺点,选择时需根据目标硬件限制在清晰度与性能之间取得平衡。

详见Qt 文档中的抗锯齿最佳实践

高级渲染通道自定义(Advanced Render-Pass Customization)

自定义渲染通道支持修改、扩展甚至完全替换标准渲染管线,例如插入自定义特效。通过将渲染过程拆分为多个"通道",可在渲染循环的精确时机实现独特的光照、色彩、深度或其他效果。这种方式虽然灵活,但额外的通道会增加 GPU 工作负载,因此需要结合应用性能进行权衡。

跨平台 3D 能力

全系产品的一致 3D UI 体验

拥有多条产品线的企业,可在从入门级到旗舰级的设备上提供同等高质量的 3D 体验,无需为每个平台从头重写代码。

在 Linux、Windows 或 Mac 上开发,借助 QtRhi 的能力,可部署至多种操作系统、浏览器或裸机平台。

 

一次设计,随处部署,确保您的产品系列在外观与性能上保持一致。

检查您的平台是否受支持 探索图形文档

3D 用户界面延伸阅读 

Qt Quick 3D 中的光照贴图烘焙及其他改进

在这篇博客中,我们将探讨近期围绕光照贴图烘焙、全局光照及相关技术所做的改进,这些技术旨在使 Qt Quick 3D 场景呈现更逼真的视觉效果...

阅读更多

Qt Quick for Android - Qt 6.9 和 6.10

最近注意到我们尚未发布 Qt Quick for Android 更新。Qt 6.11 即将发布,让我们先简单了解一下 Qt 6.9 和 Q...

阅读更多

Qt 6.10 正式发布

Qt 6.10 现已发布,为应用程序开发人员和设备制造商带来全新功能和改进!

阅读更多

Qt 6.9 发布

Qt 6.9 现已全面推出,为应用开发者和设备制造商带来诸多新特性与改进!作为亮点之一,升级至 Qt 6.9 可将现有应用的 Emoji 渲...

阅读更多

常见问题

如何在不牺牲加载速度的前提下构建逼真的 3D 体验?

  • Qt Framework 3D
通过使用直接以 GPU 就绪格式加载的优化 3D 资源(而非在运行时处理),并结合对目标硬件在全局光照、光源和特效方面的针对性选择,以及 Qt 渲染硬件接口(QRhi)的使用,可在保持快速加载时间的同时实现真实感 3D 体验,适用于灵活的跨平台场景。

如何在应用程序中嵌入高性能 3D 渲染?

  • Qt Framework 3D
所选开发框架对 3D 渲染性能有重大影响。此外,建议在目标硬件性能与提升 3D 场景真实感和灵活性的技术手段之间取得平衡,包括基于物理的渲染(PBR)、实例化渲染、抗锯齿,以及全局光照、光照技术和特效的合理使用。

3D UI 开发的最佳实践是什么?

  • Qt Framework 3D
3D UI 开发的最佳实践包括:前后端分离、支持 2D 与 3D 图形及基础 UI 控件的融合,以及确保在桌面端、移动端和各类嵌入式设备上的充足性能和便捷部署。

3D 图形如何与中间件协同工作?

  • Qt Framework 3D

使用 Qt 等框架时,3D 图形可轻松与中间件协同,内置网络与连接性数据处理[等内能。

为 3D 应用集成中间件,能够统一管理前后端之间的各类事务,包括传感器数据与用户交互、动画、切片、矢量化、3D 模型的采样与重建,乃至动态管理细节层次(LOD)。

如何为嵌入式系统创建 3D 视觉效果?

  • Qt Framework 3D
使用 Qt Quick 3D 等 UI 框架为嵌入式系统创建 3D 视觉效果,提供了现成的构建模块:包括优化的 3D 资产、实时反射、光照、粒子及其他特效,以及硬件加速支持 —— 即便在资源受限的硬件上也能实现高性能表现。

Qt 3D 与 Qt Quick 3D 有什么区别?

  • Qt Framework 3D

Qt 3D 是一个同时为 C++ 和 QML 提供 API 的旧版模块,仍受支持,但不建议在新项目中使用。


Qt Quick 3D 是现代的当前模块,提供专注于 3D 渲染的高层 API。由于其设计为 Qt Quick 的扩展,大多数 API 基于 QML

什么是 3D 硬件加速?

  • Qt Framework 3D
3D 硬件加速是指将渲染任务从 CPU 转移到 GPU 执行,从而提升效率,使 3D 模型、材质、光照和阴影的表现更佳。在 Qt 中,硬件加速为内置功能,提供高性能和稳定性保障。

什么是跨平台 3D 图形?

  • Qt Framework 3D
跨平台 3D 图形是指可在桌面端、移动端到嵌入式系统等各类目标平台上复用的 UI 元素。Qt 提供 Qt 渲染硬件接口(QtRhi)——一个将高层 3D 图形和场景转译为底层图形 API(OpenGL、Vulkan、Direct3D 和 Metal)的通用接口。

为什么要使用非游戏类 3D 框架?

  • Qt Framework 3D
对于具有高性能需求的交互式用户界面(如工业应用、车载仪表板或嵌入式设备),使用 Qt Quick 3D 等非游戏 3D 框架比游戏引擎更为理想。Qt 提供更快的加载速度、更高的稳定性、2D 与 3D 融合能力以及跨平台部署支持。

制作 3D 游戏是否需要游戏引擎?

  • Qt Framework 3D
不一定!有许多游戏是基于 Qt 构建的。最新的例子之一是 Ecliptica[LINK],预计 2026 年发布。更多示例请参阅 Wiki 上的 Qt 游戏列表

为什么建议使用一套完整工具集来创建 2D 和 3D 交互内容?

  • Qt Framework 3D
使用一套完整工具集创建兼含 2D 和 3D 交互内容的 UI,可消除在不同工具或语言之间切换的烦恼。Qt Quick 3D 作为 Qt Quick 的扩展,在单一 UI 框架内原生融合基础 UI 控件、2D 和 3D 元素,无需独立集成,从而加速 UI 构建并降低维护难度。

深入了解 Qt 框架

Qt 框架提供全面的库集合,覆盖从中间件到 UI、从 2D 到 3D、跨平台开发的各类需求,大幅减少重复性工作。

发布周期与许可

Qt 框架规律的发布节奏与灵活的许可选项,让团队能够选择最适合自身产品需求的组合。

充分发挥 Qt 的价值

立即开始体验 Qt 功能丰富的跨平台 UI 框架,将基础控件与增强组件自由组合。