Qt 3D 学习路径规划

  1. 3D 用来做什么?
  2. 什么是Qt 3D,什么时候选择Qt 3D
  3. Opengl入门及学习资料
  4. Qt 3D 整体介绍
  5. 官方实例

本系列文章只是记录本人学习Qt 3D的学习过程,其中很多都是借鉴网上搜寻的资料,其中有不对的,请积极指正。

文章目录

  • Qt 3D 学习路径规划
  • 什么是3D,3D可以用来做什么
  • 什么是Qt 3D
    • Qt 3D 特性
    • CPU核数
    • Qt 3D 架构
  • 什么时候选择Qt 3D(转)

什么是3D,3D可以用来做什么

3D是three-dimensional的缩写,在计算机里显示3d图形,就是说在平面里显示三维图形。不像现实世界里,真实的三维空间,有真实的距离空间。计算机里只是看起来很像真实世界,因此在计算机显示的3d图形,就是让人眼看上就像真的一样。
区别:3D和2D的最大差别主要是在感官体验上,3D相比来说更有空间感,更让人身临其境。
3D游戏更有空间感,让人感觉身临其境,游戏体验好。
2D即二维,在一个平面上的内容就是二维。二维即左右、上下两个方向,不存在前后。在一张纸上的内容就可以看做成是二维。即只有面积,没有立体。二维是平面技术的一种,例如普通的平面动漫,称之为二维动漫、简称二维。
3D即三维,三维是指在平面二维系中又加入了一个方向向量构成的空间系。所谓三维,按大众理论来讲,只是人为规定的互相交错(垂直是一个很有特性的理解)的三个方向,用这个三维坐标,看起来可以把整个世界任意一点的位置确定下来。原来,三维是为了确定位置。


什么是Qt 3D

Qt3D 是Qt官方支持的3D实时渲染引擎,和Qt一样几乎支持所有平台,对OpenGL pipeline进行了封装,支持C++ 和脚本语言QML,甚至支持 python (pyQt和pySide), 目的是为了让开发者快速地开发出三维渲染的程序。与OSG、VTK和OGRE等类似,但是是Qt原生的,对于Qt开发来说兼容性会更好,可以自然地使用Qt的信号-槽机制。

Qt 3D 特性

Qt3D 具有以下基本特性:

特性 译注
2D 和 3D c++、Qt Qucik application
Meshes 网格,Qt 中三维实体的组织形式,可以加载obj\mesh等对象 或者定义 opengl 中 vertex 集合
Materials 材质
Shaders 着色器
Shadow Mapping 阴影贴图
Ambient occlusion 环境光遮蔽
High dynamic range 高动态范围
Deferred rendering 延迟渲染
Multitexturing 多重纹理
Instanced rendering 实例化
Uniform Buffer Objects 统一缓冲区对象
Multitexturing 多重纹理
Multitexturing 多重纹理

还有与3D相关的要素:

要素 译注
Physics simulation 物理检测
Collision detection 碰撞检测
3D positional audio 3D音频定位
Animation: rigid body, skeletal, morph target 动画:刚体、骨骼、变形目标
Path finding and other AI 路径和其他人工智能
Picking 拾取
Particles 粒子

CPU核数

CPU核数越多,Qt3D的性能也会得到提升,现在的CPU都在通过增加核数而非提高时钟频率来提升性能。使用多核CPU可一定程度提升性能,许多任务间相互独立,可并行执行。例如,路径查找模块执行的动作和渲染器的渲染动作彼此间独立,可并发执行,获取渲染调试信息和统计信息时可单线执行

Qt 3D 架构

Qt3D 的核心是近乎实时地模拟对象,是 ECS(Entity-Component-System)架构;
什么是ECS架构
https://zhuanlan.zhihu.com/p/30538626


Qt3D 的“基类”是QNode,它是QObject的一个非常简单的子类。QNode为QObject添加了通过方面自动传达属性更改的能力,以及在整个应用程序中唯一的 ID。正如我们将在以后的文章中看到的那样,切面在额外的线程中存在和工作,QNode极大地简化了在面向用户的对象和切面之间获取数据的任务。通常,QNode的子类提供额外的支持数据,然后由组件引用。例如,QShaderProgram指定渲染一组实体时要使用的 GLSL 代码。

Qt3D 中的组件是通过继承 QComponent并添加相应方面完成其工作所需的任何数据来实现的。例如,渲染器方面使用Mesh组件来检索应该向下发送到 OpenGL 管道的每个顶点数据。
最后,QEntity只是一个可以聚合零个或多个QComponent 的对象,如上所述。
为 Qt3D 添加一个全新的功能,作为 Qt 的一部分或特定于您自己的应用程序,并且可以利用多线程后端包括:
1.识别和实施任何需要的组件和支持数据
2.向 QML 引擎注册这些组件(仅当您希望使用 QML API 时)
3.子类化QAbstractAspect并实现您的子系统功能。

什么时候选择Qt 3D(转)

参考文章
Qt3D 的利和弊我只能根据我的直观体验来写,未必客观,但是真实。

利:原生支持
如果你本来就在用Qt作为GUI库,那么使用Qt3D将会获得完全兼容的3D库,并且不需要安装额外的依赖,在移植的时候也很方便, 可以使用Qt的信号-槽和事件机制
性能上号称支持做游戏引擎 near real-time simulation
工具库相对很丰富了,相比纯撸 OpenGL 来说还是节省了很大的开发工作
和Qt一致的跨平台能力

弊处:资料过少
相比与OSG、Unity3D库这些成熟的库来说不够流行(但是原理是相通的)
资料过少,官方文档和例程不够充实(或许这也是广大开发者加入开源社区的好机会)
如果不使用Qt作为GUI框架,那么单独使用Qt3D似乎又优点沉重

最终建议是:如果你使用Qt开发,那么使用Qt3D 将会很方便,否则,则没必要

Qt 3D 学习路径规划相关推荐

  1. [论文学习笔记]01一种轮廓平行扫描算法【3D打印路径规划】

    文章目录 零.论文来源 0.1 概述 一.算法描述 1.1 定义一些概念 1.2 域分区 1.3 偏移量的生成 1.4 自交问题 1.5 尖角 1.6 外部轮廓和内部轮廓相交 1.7 空隙 1.8 连 ...

  2. 机器人学习--路径规划算法

    参考网址:https://mp.weixin.qq.com/s?__biz=MzI5MDUyMDIxNA==&mid=2247520667&idx=3&sn=47ee67915 ...

  3. 3d打印 路径规划_3D打印螺旋桨技术的应用和挑战

    3D打印最近几年发展成为一项热门技术.该技术在海事行业的应用范围也在不断扩大,船舶螺旋桨的生产就是其中一个例子.德国螺旋桨制造商MMG向业界分享了3D打印技术在螺旋桨制造领域的应用现状和面临的挑战.砂 ...

  4. 3d打印 路径规划_“光博会+工博会”双展来袭!这个9月,知象光电3D视觉工业应用方案,重磅亮相!...

    这个9月,知象光电有一大波展会在路上-- 9月9日-11日,中国国际光电博览会(深圳) 9月15日-19日,中国国际工业博览会(上海) 9月23日-25日,中国(西安)国际3D打印博览会暨高峰论坛(西 ...

  5. 零基础产品经理学习路径规划

    零基础的小白入门产品经理,就像是"一条没有地图导航的路"-没有路标.没有同行人.一路摸索.磕磕绊绊,不知何时能到达目的地.近日也收到很多小伙伴的私信:" 零基础想要入门产 ...

  6. 机器人学习--路径规划--A*算法实现

    参考网址:https://www.redblobgames.com/pathfinding/a-star/implementation.html 扩展:https://www.redblobgames ...

  7. 路径规划学习之地图生成(一)

    路径规划入门学习之随机生成栅格地图 前言 一.栅格地图 二.随机生成栅格地图 1.随机数创建m*n矩阵地图 2.完整代码 3. 所生成的地图 总结 前言 机器人的路径规划问题是运动规划中的一个重要问题 ...

  8. 路径规划五种算法简述及对比

    以下是本人在学习路径规划过程中的一些总结,借着机会写了一下,有不妥之处欢迎批评指正,谢谢. 路径规划部分在无人车架构体系当中分属控制或决策部分,如图1,是实现无人化驾驶的关键技术之一.路径规划模块性能 ...

  9. UAV路径规划算法与平台总结

    平台类 GAAS https://gaas.gitbook.io/ XTDrone https://www.yuque.com/xtdrone/manual_cn 算法类 EGO https://gi ...

  10. 学习笔记之——路径规划

    最近在做移动机器人路径规划相关的topic,打算对路径规划算法做一个调研,并写下这篇记录.本博文的大部分内容来源于网络的博客或者论文,相关的参考也会给出来.本博文仅作本人学习记录用. 目录 引言 什么 ...

最新文章

  1. 电路实验1-电容充放电
  2. python 装饰器 二 (装饰带参数的函数)
  3. JustForex开始提供比特币和比特币现金支付方式
  4. 网站优化过度后会出现哪些“后遗症”?悠着点~
  5. bootstrap回顾
  6. 解决iIntelliJ IDEA导入jstl后,jsp中taglib指令无法自动添加uri地址
  7. Cstring转化为String
  8. Django-RQ介绍
  9. 为什么每天感觉没精神
  10. 使用ab进行页面的压力测试
  11. 浅谈App对我们行业门户网站的作用
  12. facebook快捷登录 pc_华为发布首款商用台式机,商用PC布局更进一步
  13. linux nand 坏块_韦东山-NAND 上面都是坏块怎么办啊? - 百问网嵌入式问答社区
  14. 深度学习系列--1.入坑模型: 线性回归,logistic 回归,softmax分类器
  15. 神奇的反爬措施--大众点评
  16. 22数学建模美赛 22美赛C题
  17. 微信小程序:事件传参
  18. Spring事务同步synchronized一起使用引发的问题
  19. 常用软件开发安装包+破解分享
  20. 文科背景去德国学计算机,文科生留学德国的现状是怎样的

热门文章

  1. javassist修炼笔记
  2. WPS如何设置快捷键|为设置颜色添加快捷键
  3. 微带天线单元建模与辐射
  4. 如何更改html的默认应用,win10如何修改默认应用
  5. 使用EasyCHM破解版制作CHM帮助文档
  6. Segmentree beats!---吉如一线段树学习笔记
  7. Linux 目录操作—opendir、readdir、closedir
  8. 干货!国外关于高速PCB设计的技术书籍和资料介绍
  9. Java工程师学习指南(完结篇)
  10. SOP24/SSOP24低功耗LCD驱动芯片VK1056B规格书下载