• 581阅读
  • 0回复

Qt Quick 3D介绍 [复制链接]

上一主题 下一主题
离线20091001753
 

只看楼主 倒序阅读 楼主  发表于: 10-21
Qt Quick 3D,是基于 Qt Quick 的高级3D API。
那么它的目标是什么?为什么提出另一个3D解决方案?


上图:在Qt Quick 3D中运行的“San Miguel”测试场景

统一图形技术
我们最重要的目标是统一我们的图形技术。目前,我们为创建流畅的用户界面提供了两种综合解决方案来,每个解决方案都有自己的相应工具。其中一个解决方案是处理2D的Qt Quick,另一个是用于3D的Qt 3D Studio。如果只使用其中一种,事情通常会很顺利。然而,我们发现用户通常需要混合使用,这在运行时的性能以及开发者/设计师体验方面都会造成许多问题

因此,为了简便起见,我们的目标是拥有一个运行时(Qt Quick)、一个通用场景图(Qt Quick Scenegraph)和一个设计工具(Qt Design Studio)。而且不会对特性、性能或开发者/设计师的体验造成任何影响。这样,我们就不需要在复杂的产品线中分散我们的开发焦点,可以更快地添加更多特性和修复bug。

直观易用的API
Qt Quick 3D的下一个目标是提供一个用于定义3D内容的API,开发者不需要了解现代图形管道的复杂细节就可以使用这个API。毕竟,大多数用户不需要为每个应用程序创建专门的3D图形渲染器,而只是想显示一些3D内容,通常是与2D一起显示。因此,我们在开发Qt Quick 3D的过程中一直牢记这一点。

也就是说,接下来我们将会公布越来越多的渲染API,这将使高级用户可以实现更高级的用例。

在撰写本文时,我们只提供了一个QML API,但是我们的目标是提供一个公共的C++ API。

Qt Quick的统一工具
Qt Quick 3D旨在成为Qt 3D Studio的继承者。目前Qt 3D Studio仍将继续开发,但从长远来看,将被Qt Quick和Qt Design Studio所取代。

在这里,我们打算把Qt 3D Studio最好的部分融合到Qt Quick和Qt Design Studio中。不再需要为Qt Quick或3D提供单独的工具,而是在Qt Design Studio中同时完成这两项工作。我们现在正在研究这方面的细节,希望不久就能发布预览版。

对于Qt 3D Studio的现有用户,我们一直在开发一个移植工具,可以将项目转换为Qt Quick 3D。稍后会有详细介绍。

一流的素材优化管道
在处理3D场景时,素材优化正日益重要,因为现在的图形素材类型越来越多,而且体量也越来越大。因此,作为Qt Quick 3D开发工作的一部分,我们一直在研究如何尽可能方便地导入您的数据,并将其转换为Qt Quick中使用的,高效的运行时格式

例如,在设计时,您会使用创建工具生成的图形素材(例如,Maya中处理3D模型的FBX文件,或者Photoshop中处理纹理的PSD文件),但是在运行时,您就不会希望引擎使用这些格式。取而代之,您希望将素材转换成某种高效的运行时格式,并在每次源设计修改时更新它们。我们希望将这一过程尽可能自动化,因此希望将它们整合到Qt构建系统和工具中。

跨平台性能和兼容性
我们的另一个目标是通过Qt新的渲染硬件接口(Rendering Hardware Interface,缩写RHI),使它支持多种原生图形API。目前,Qt Quick 3D如Qt中其他许多组件一样,只能使用OpenGL渲染。但是在Qt 6中,我们将使用QtRHI作为我们的图形抽象层,除了OpenGL之外,我们还将支持Vulkan、Metal和Direct3D渲染。

综上
Qt Quick 3D的目标不是替代Qt 3D,而是Qt Quick的功能性扩展,渲染3D内容的高级API。

其理念是,定义3D内容应该像定义2D内容一样简单。您需要一些额外的东西,比如灯光、摄像机和材质等概念,但是所有这些都是高级场景概念,而不是图形管道的实现细节。

当然,简单的API会导致功能上的限制。尽管可以定制材质和场景的内容,但不可能完全定制场景的渲染,这与Qt 3D中使用的高度可定制的framegraph不同。Qt Quick 3D用一个固定的正向渲染器,您可以用属性来定义如何渲染场景中的对象。这与其他现有的引擎类似,通常有一些渲染管道可供选择,然后使用这些管道渲染逻辑场景。

(づ ̄ 3 ̄)づ
快速回复
限100 字节
 
上一个 下一个