Qt 3D的研究(三):显示3D模型

  • Post author:
  • Post category:其他


原文地址::

https://blog.csdn.net/gamesdev/article/details/43964499

相关文章

1、Qt之实现3D纹理渲染自由旋转空间立方体—-

https://blog.csdn.net/caoshangpa/article/details/78530160

2、QT图片旋转—-

https://blog.csdn.net/itjobtxq/article/details/9231103

3、如何使用QT制作一个3D(飞机)模型,并控制其旋转?—-

https://www.zhihu.com/question/322196372/answer/667239807

4、Qt图像中心旋转的两种方法—-

https://blog.csdn.net/zzc116433008/article/details/107325184/

5、Qt 3D 汽车仪表盘—-

https://blog.csdn.net/lihuiwen34/article/details/105123938?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EOPENSEARCH%7Edefault-5.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EOPENSEARCH%7Edefault-5.control

Qt 3D的研究(三):显示3D模型

上一篇文章介绍了如何使用最少的代码创建一个Qt 3D的应用。和大家最初接触的glut一样,对于3D应用来说,需要做的准备工作还真不少,不过呢,Qt 3D把一些窗口相关的琐碎事情解决了,剩下的,该由我们完成重要的渲染部分了,可以说,带来了某种程度的方便。

蒋彩阳原创文章,首发地址:http://blog.csdn.net/gamesdev/article/details/43964499。欢迎同行前来探讨。

我们接下来要使用Qt 3D将一个模型显示出来。Qt 3D内置了obj模型的解析器,可以很方便地导入obj格式的模型。如果想要使用Qt 3D导入ms3d、3ds这样格式的文件,可能需要将Assimp模型解析库和Qt 3D放在一起进行编译,这样才能够顺利地使用。这里我们采用Qt 3D内置的obj模型toyplane来载入并且显示。代码如下:


import Qt3D 2.0

import Qt3D.Render 2.0

Entity

{


id: root

Camera

{


id: camera

position: Qt.vector3d( 0.0, 0.0, 40.0 )

projectionType: CameraLens.PerspectiveProjection

fieldOfView: 45

aspectRatio: 16.0 / 9.0

nearPlane : 0.1

farPlane : 1000.0

upVector: Qt.vector3d( 0.0, 1.0, 0.0 )

viewCenter: Qt.vector3d( 0.0, 0.0, 0.0 )

}

components: FrameGraph

{


ForwardRenderer

{


clearColor: Qt.rgba( 0, 0, 0, 1 )

camera: camera

}

}

//! [3]

Entity

{


Mesh

{


id: mesh

objectName: “cube”

source: “qrc:/toyplane.obj”

}

components: [ mesh ]

}

Configuration

{


controlledCamera: camera

}

//! [3]

}

这里![3]的部分就是我们新添加的部分。我们需要使用另外的一个Entity来表示我们要渲染的实体。然后这个实体中包含了Mesh。其中这个Mesh由”qrc:/toyplane.obj”这个路径载入。接着设定了components为[ mesh ],表示让Entity拥有的组件是名为mesh的Mesh component。最后的Configuration表示了程序的相关配置。其中我们要对camera进行交互操作,因此我们设定controlleedCamera为我们的camera,这样我们可以使用鼠标将camera的参数进行相应的改变,从而可以从不同的角度来观察模型了。

程序截图如下所示:

需要说明的是,我们并没有指定光照和材质。我们的玩具飞机模型的土色渲染效果是Qt 3D默认给我们带来的。程序可以通过鼠标进行交互:左键表示以相机向上的向量为轴,对相机进行旋转;右键是以场景原点为中心点,对相机进行旋转。

————————————————

版权声明:本文为CSDN博主「彩阳」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/gamesdev/article/details/43964499