Qt 3D 学习路径规划
Qt 3D 学习路径规划
- 3D 用来做什么?
- 什么是Qt 3D,什么时候选择Qt 3D
- Opengl入门及学习资料
- Qt 3D 整体介绍
- 官方实例
本系列文章只是记录本人学习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 学习路径规划相关推荐
- [论文学习笔记]01一种轮廓平行扫描算法【3D打印路径规划】
文章目录 零.论文来源 0.1 概述 一.算法描述 1.1 定义一些概念 1.2 域分区 1.3 偏移量的生成 1.4 自交问题 1.5 尖角 1.6 外部轮廓和内部轮廓相交 1.7 空隙 1.8 连 ...
- 机器人学习--路径规划算法
参考网址:https://mp.weixin.qq.com/s?__biz=MzI5MDUyMDIxNA==&mid=2247520667&idx=3&sn=47ee67915 ...
- 3d打印 路径规划_3D打印螺旋桨技术的应用和挑战
3D打印最近几年发展成为一项热门技术.该技术在海事行业的应用范围也在不断扩大,船舶螺旋桨的生产就是其中一个例子.德国螺旋桨制造商MMG向业界分享了3D打印技术在螺旋桨制造领域的应用现状和面临的挑战.砂 ...
- 3d打印 路径规划_“光博会+工博会”双展来袭!这个9月,知象光电3D视觉工业应用方案,重磅亮相!...
这个9月,知象光电有一大波展会在路上-- 9月9日-11日,中国国际光电博览会(深圳) 9月15日-19日,中国国际工业博览会(上海) 9月23日-25日,中国(西安)国际3D打印博览会暨高峰论坛(西 ...
- 零基础产品经理学习路径规划
零基础的小白入门产品经理,就像是"一条没有地图导航的路"-没有路标.没有同行人.一路摸索.磕磕绊绊,不知何时能到达目的地.近日也收到很多小伙伴的私信:" 零基础想要入门产 ...
- 机器人学习--路径规划--A*算法实现
参考网址:https://www.redblobgames.com/pathfinding/a-star/implementation.html 扩展:https://www.redblobgames ...
- 路径规划学习之地图生成(一)
路径规划入门学习之随机生成栅格地图 前言 一.栅格地图 二.随机生成栅格地图 1.随机数创建m*n矩阵地图 2.完整代码 3. 所生成的地图 总结 前言 机器人的路径规划问题是运动规划中的一个重要问题 ...
- 路径规划五种算法简述及对比
以下是本人在学习路径规划过程中的一些总结,借着机会写了一下,有不妥之处欢迎批评指正,谢谢. 路径规划部分在无人车架构体系当中分属控制或决策部分,如图1,是实现无人化驾驶的关键技术之一.路径规划模块性能 ...
- UAV路径规划算法与平台总结
平台类 GAAS https://gaas.gitbook.io/ XTDrone https://www.yuque.com/xtdrone/manual_cn 算法类 EGO https://gi ...
- 学习笔记之——路径规划
最近在做移动机器人路径规划相关的topic,打算对路径规划算法做一个调研,并写下这篇记录.本博文的大部分内容来源于网络的博客或者论文,相关的参考也会给出来.本博文仅作本人学习记录用. 目录 引言 什么 ...
最新文章
- 电路实验1-电容充放电
- python 装饰器 二 (装饰带参数的函数)
- JustForex开始提供比特币和比特币现金支付方式
- 网站优化过度后会出现哪些“后遗症”?悠着点~
- bootstrap回顾
- 解决iIntelliJ IDEA导入jstl后,jsp中taglib指令无法自动添加uri地址
- Cstring转化为String
- Django-RQ介绍
- 为什么每天感觉没精神
- 使用ab进行页面的压力测试
- 浅谈App对我们行业门户网站的作用
- facebook快捷登录 pc_华为发布首款商用台式机,商用PC布局更进一步
- linux nand 坏块_韦东山-NAND 上面都是坏块怎么办啊? - 百问网嵌入式问答社区
- 深度学习系列--1.入坑模型: 线性回归,logistic 回归,softmax分类器
- 神奇的反爬措施--大众点评
- 22数学建模美赛 22美赛C题
- 微信小程序:事件传参
- Spring事务同步synchronized一起使用引发的问题
- 常用软件开发安装包+破解分享
- 文科背景去德国学计算机,文科生留学德国的现状是怎样的