原文地址::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

Qt 3D的研究(三):显示3D模型相关推荐

  1. QT笔记:数据库总结(三)之SQL模型类-QSqlTableModel模型

    QSqlTableModel类继承至QSqlQueryModel类,该类提供了一个可读写单张SQL表的可编辑数据模型,功能:修改,插入,删除,查询,和排序 常用函数 QVariant headerDa ...

  2. android显示3d模型_Creator3D:太厉害了!3D模型原来可以这样显示在2DUI上

    国庆,中秋收假了,菜鸟在这里给大家道声祝福: 同时可能不少人都已经知道,就在放假前,「Creator3D 1.2.0 正式版」 已经发布.菜鸟后边的自学demo也将全部用1.2.0,大家在打开demo ...

  3. Android增强现实(三)-3D模型展示器

    1.Android增强现实(一)-AR的三种方式(展示篇) 2.Android增强现实(二)-支持拖拽控制进度和伸缩的VrGifView 3.Android增强现实(三)-3D模型展示器 前言 前段时 ...

  4. Qt 3D教程(二)初步显示3D的内容

    Qt3D教程(二)初步显示3D的内容 前一篇非常简单,完全就没有牵涉到3D的内容,它只是我们搭建3D应用的基本框架而已,而这一篇,我们将要利用它来初步地显示3D的内容了!本次目的是将程序中间的内容替换 ...

  5. opengl加载显示3D模型UC类型文件

    opengl加载显示3D模型UC类型文件 前置条件 注意事项 项目展示 项目完整C++源代码 前置条件 opengl三方库freeglut,显示uc格式的三维模型文件, 注意事项 源代码 model_ ...

  6. opengl加载显示3D模型3d类型文件

    opengl加载显示3d模型UC类型文件 前置条件 注意事项 项目展示 项目完整C++源代码 前置条件 opengl三方库freeglut,显示3d格式的三维模型文件, 注意事项 源代码 model_ ...

  7. opengl加载显示3D模型3MF类型文件

    opengl加载显示3D模型3MF类型文件 前置条件 注意事项 项目展示 项目完整C++源代码 前置条件 opengl三方库freeglut,显示3MF格式的三维模型文件 注意事项 源代码 model ...

  8. opengl加载显示3D模型AC类型文件

    opengl加载显示3D模型AC类型文件 前置条件 注意事项 项目展示 项目完整C++源代码 前置条件 opengl三方库freeglut,显示AC格式的三维模型文件 注意事项 源代码 model_f ...

  9. opengl加载显示3D模型AMF类型文件

    opengl加载显示3D模型AMF类型文件 前置条件 注意事项 项目展示 项目完整C++源代码 前置条件 opengl三方库freeglut,显示AMF格式的三维模型文件 注意事项 源代码 model ...

最新文章

  1. Could not import extension sphinxcontrib.blockdiag (exception: No module named sphinxcontrib.blockdi
  2. linux sh脚本 while,Linux shell脚本使用while循环执行ssh的注意事项
  3. setings.py配置文件详解
  4. Redis 高可用性实践
  5. SSH 远程连接服务慢的解决方案
  6. java resource放入的文件没有生成在classes中_JAVA程序员学习笔记----mybatis深入剖析...
  7. Java常量什么时候被回收,JVM GC调优(2)-GC算法判定对象可以被回收(部分摘自深入理解Java虚拟机) - Java 技术驿站-Java 技术驿站...
  8. Atitit.php opcode虚拟机指令集 分类以及详细解释
  9. web_MDN学习资源导航_js初学者快速入门指南项目/javascript高级程序设计vsMDN javascript教程/指南(official)
  10. html三页布局实训,创建css布局页面(上机实训任务).pdf
  11. 深度互学习-Deep Mutual Learning:三人行必有我师
  12. 克鲁斯卡尔(Kruskal)算法(严蔚敏C语言)
  13. phabricator代码提交自动触发Jenkins token发版(一)
  14. java代码自动抠图_Opencv java实现人脸抠图和行为识别
  15. Laravel 存在SQL注入漏洞
  16. 【Git下载安装与环境配置】
  17. linux iis安装教程,易企秀源码在linux、win主机下的安装教程和详细步骤(含伪静态设置)...
  18. 炉石android更新日志,炉石传说18.4版本更新了什么?18.4版本更新内容汇总[多图]...
  19. 请给出太阳系各类引力参数,包括太阳、地球等星球的质量,距离,自转角度,公转速度等。...
  20. xquartz Firefox Error: cannot open display: localhost:14.0

热门文章

  1. 利用unity和steamVR完成场景漫游(二) 关于steamVR插件中的代码详解
  2. WEKA开源数据挖掘工作平台
  3. 【mysql】提高mysql模糊查询速度
  4. 公众号被关注后自动回复两条消息,文字+图片是如何实现的?
  5. Python|每日一练|幂函数算法|位运算|>>右移|分析神器pysnooper|日志输出:Pow(x, n)
  6. 电脑端应用软件自动化测试,自动化测试是什么?pc端的自动化测试框架有什么?...
  7. 《【西天取经】Go语言学习笔记:基本变量与类型》
  8. 分享一个软件资源下载网站MSDN
  9. Docker操作总结
  10. CSC在DomainSec℠平台上推出3D域名监测解决方案