描述几种优化3D场景的规则和方法

描述

使用QML来做3D应用开发,优化3D场景和优化设计对3D应用程序将有着显著性能影响。本文描述几种优化3D场景的规则和方法。

一、四种3D场景设计方式

3D场景有多种不同的创建组合方式。例如:高级场景、低级场景、混合场景和Vertex颜色场景。与其他版本的场景相比,高级场景中包含了更多的对象。

低级、混合和Vertex场景包含的对象相对更少,因为它们已经通过将几何形状和烘烤材料结合到纹理中进行了优化。下图显示了Navigator视图中每个场景中的组件,用于对比说明场景之间的结构差异:

cpu

(1-1)低级场景

cpu

如上图所示,低级场景总共包含12个对象。每个模型(例如橱柜、灯、盘子和水槽)都是独立的网格。

(1-2)高级场景

cpu

如上图所示,高场景总共包含27个对象。这个场景在其他方面与低级场景相似,但含有更多的细节和动画组件(如可以打开的橱柜门和烤箱的门闩)

(1-2)混合场景

cpu

混合场景是将所有的网格组合成一个单独对象,所有材料都被烘焙成单一的纹理。

(1-3)Vertex颜色场景

cpu

该场景将所有的网格组合成一个单独的对象,网格的颜色由.mesh文件的顶点数据描述,其中包括材质,没有纹理。

在本小节中,出现的高级场景、低级场景、混合场景和Vertex颜色场景四种场景,本质上是一种组织3D场景的方法。在高级场景中,包含的3D对象就非常多,为什么需要包含这么多的3D对象呢,多数情况下,就是为了将小对象分离出来做动画效果和动画控制。如果一个场景中没有动画需求,则完全可采用混合场景和Vertex颜色场景的方法来设计3D场景,还提升了应用渲染性能。

二、3D场景优化规则

为了优化3D场景的图形渲染性能,首先应考虑是否需要给3D对象、灯光、相机或场景中的组件添加动画,如果不需要就尽可能简化场景结构,例如:可以将几何图形和烘烤材料结合到纹理中。理想情况下,将3D图像预渲染为2D图像是很好的选择。检查场景是否存在相同网格的多个实例,如果存在,则只导入一个网格实例,然后在场景中复制它,并为每个副本使用相同的材质。

(2-1)Scene Graph

在Qt Design Studio中,由Navigator中的树形视图表示场景图。同时,我们还可以在Code视图中查看节点的层次结构。通过最小化场景图,可以减少运行场景时所需的工作。因为具有复杂功能的深层层级嵌套将增加性能成本,为了优化场景图,应尽可能避免不必要的组和复杂的层次结构。

(2-2)资源文件优化

尽可能减少资源文件的使用和加载,可以提高渲染性能(在实际3D应用开发过程中,由于多种因素,设计过程中资源文件往往都非常多,一般的做法是:一边开发一边优化资源文件)。

在设计3D素材模型时,应尽量使用最少的三角形或顶点来达到预期的建模效果。因为在3D场景渲染时,较少的图形数量可以降低内存需求量并有助于快速渲染。

(2-3)CPU性能优化

显示3D对象需要CPU或者GPU的大量处理工作。处理每个3D组件都会消耗资源,因此减少可见对象的数量可以减少CPU的工作量。优化建议如下:

(1)合并位置相邻且共享纹理的对象。

注意:合并不共享纹理的对象不会在运行场景时提高CPU性能。

(2)将不同的纹理组合成一个纹理图集,以此方法来减少材料的使用。

(3)避免多次渲染对象。

(2-4)优化模型的几何形状

(1)减少模型中三角形的使用数量。

(2)减少用加倍顶点创建的UV映射接缝和硬边的数量。

三、总结

下表总结了优化3D场景相关的最佳实践:

序号 3D行为 最佳实践建议
1 从3D场景中获得最佳性能 如果不需要动画,可以将3D场景预渲染成2D图像。
2 场景中物体的动画 合并所有静态对象,只导出每个动画组件中的一个。
3 相机动画 虽然在这种情况下使用2D图像是不可取的,但应该将所有的几何图形、烘焙光照和材质合并到一个单一的材质中
4 光照动画 优化方法与“相机动画”一样
5 在网格分离的3D场景中获得最佳性能 对于同一个网格的每个实例使用相同的材质
6 在运行时禁用网格渲染 保持特定的网格分离,合并其他组件。
7 使用低内存的烘焙纹理 将网格颜色烘焙成顶点颜色

现代软件,3D开发属于较高级的开发了(做游戏的除外啦,哈哈),Qt Quick提供的3D开发基础组件的功能也非常强大,高版本的Qt对3D性能做了较多优化,且3D开发作为Quick的未来发展方向之一,也得到了官方的大量优化和维护。

下列为官方提供的一个车载中控终端软件demo,在软件中融入了3D元素,形象直观且炫酷。





审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐
  • cpu

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分