在真实硬件上稳定运行的 3D 框架
使用专为流畅运行于嵌入式系统、移动端与桌面端平台而设计的 3D 框架,打造令人印象深刻的用户界面,在产品全生命周期内保持稳定一致的性能表现。
不破坏用户体验的 3D 图形
Qt 框架提供多种选项,帮助开发者在 3D 模型与场景的精度、细节和真实感与目标硬件的性能需求之间实现最佳平衡。您的 3D 图形将长期保持稳定一致,可按需定制与优化,UI 在各目标平台上均能流畅运行。
使用之前的解决方案,内存占用在不断攀升。起初一切看似正常,但随后用户界面开始将硬件性能耗尽并发生崩溃。切换至 Qt 后,我们立即看到内存使用量降低了 85%,且性能随时间保持稳定一致。
Verge Motorcycles UX/UI设计师 Tero Ohranen
流畅的 3D 用户界面
3D技术助力性能优化
拥有强大的 3D 引擎和原生渲染能力固然重要,但真正确保 UI 在所有目标硬件上流畅运行的关键,在于有意识地选择影响应用性能的 3D 技术方案。
我们举办了开发者对开发者的网络研讨会,内容涵盖如何在兼顾性能开销的前提下创建出色 3D UI 的实操技巧与示例。
将 2D 内容嵌入 3D 场景
Git 示例:包含交互式 2D 元素的 3D 场景
Qt 支持在 3D 场景或元素中轻松嵌入可交互的 2D UI 组件。
Kappa Tau Station 是一个基于 Qt Quick 3D 构建的开发者示例,展示了一个包含完全集成的可交互 2D 屏幕、小型键盘等元素的宇宙飞船内舱 3D 场景。其中 2D 元素基于 Qt Quick 构建,与整体 3D 模型天然兼容,并作为统一用户界面支持用户交互。
查看更多 Qt 3D 图形示例与演示
3D 用户界面
功能完备的专业 3D 框架
Qt 提供与游戏引擎同等的能力,却无需承担玩家逻辑、关卡系统和游戏循环等不必要的额外开销。
从简单的 3D 对象到复杂的交互式场景,Qt 提供构建专业 3D 图形所需的一切:
- 导入或创建模型
- 应用真实材质与光照
- 添加动态与物理效果
- 按需自定义着色器
由于 Qt 针对用户界面开发进行了深度优化,性能始终保持稳定和最优。
3D 功能亮点
全局光照
通过光照贴图烘焙(Lightmap Baking)预生成光照,即便在资源受限的硬件上也可使用;通过实时屏幕空间全局光照(SSGI)使场景更具动态感;或将两者结合以获得平衡的最终效果。
粒子系统(Particles)
使用反向粒子创建雨雪等效果,利用混合粒子效果(Blend Particle)实现 3D 模型的构建或爆炸演示,并通过场景网格(Scene Mesh)等功能让粒子与 3D 模型和光源产生交互。
反射与光照(Reflections & Lighting)
通过基于图像的光照(IBL)提升真实感;利用阴影贴图(Shadow Mapping)和屏幕空间反射(SSR)使表面呈现动态效果;并通过反射探针(Reflection Probe)确保各摄像机角度下的视觉一致性。
光晕、辉光与更多效果
通过镜头光晕(Lens Flare)、辉光(Glow)等多种后处理效果,使 3D 场景更真实、更具视觉吸引力;实现基于深度或高度的雾效和模糊效果;并通过细节层次(LoD)等技术优化资源使用。
跨平台原生渲染
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...
常见问题
如何在不牺牲加载速度的前提下构建逼真的 3D 体验?
- Qt Framework 3D
如何在应用程序中嵌入高性能 3D 渲染?
- Qt Framework 3D
3D UI 开发的最佳实践是什么?
- Qt Framework 3D
3D 图形如何与中间件协同工作?
- Qt Framework 3D
如何为嵌入式系统创建 3D 视觉效果?
- Qt Framework 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 图形?
- Qt Framework 3D
为什么要使用非游戏类 3D 框架?
- Qt Framework 3D
制作 3D 游戏是否需要游戏引擎?
- Qt Framework 3D
为什么建议使用一套完整工具集来创建 2D 和 3D 交互内容?
- Qt Framework 3D
超过 150 万开发人员选择 Qt



