Qt 3D 学习路径规划

这篇具有很好参考价值的文章主要介绍了Qt 3D 学习路径规划。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Qt 3D 学习路径规划

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

本系列文章只是记录本人学习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

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

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 将会很方便,否则,则没必要文章来源地址https://www.toymoban.com/news/detail-428665.html

到了这里,关于Qt 3D 学习路径规划的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【PostgreSQL内核学习(七)—— 查询规划(生成路径)】

    声明 :本文的部分内容参考了他人的文章。在编写过程中,我们尊重他人的知识产权和学术成果,力求遵循合理使用原则,并在适用的情况下注明引用来源。 本文主要参考了《PostgresSQL数据库内核分析》一书   对于SQL中的计划命令的处理,无非就是 获取一个(或者一系列

    2024年02月16日
    浏览(31)
  • 机器人学习-关于经典路径规划(二)

    8.Roadmap路线图 即将学习的第一组离散化方法被称为路线图,该方法使用一个简单的连通图来表示配置空间——类似于用地铁地图来表示城市。 路线图方法通常分两个阶段实现: — 构建阶段 从空间的连续表示中构建图形。这个阶段通常会花费大量的时间和精力,但是生成的图

    2024年02月16日
    浏览(33)
  • 机器人学习-关于经典路径规划(一)

    1.内容简介 识别不同类型的路径规划算法 理解一组算法的内部工作原理 评估算法对特定应用的适用性 实现搜索算法 2.路径规划示例 术语 完整性 ——如果一个算法能够在起点和目标之间找到一条路径,那么这个算法就是完整的。 最优性 ——如果一个算法能够找到最佳的解

    2024年02月06日
    浏览(41)
  • 【无人机路径规划】基于深度强化学习的多无人机辅助边缘计算网络路径规划(Matlab代码实现)

    💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 文献来源 🌈4 Matlab代码、数据、文章

    2024年03月27日
    浏览(90)
  • 基于强化学习(Reinforcement learning,RL)的机器人路径规划MATLAB

    Q-learning算法是强化学习算法中的一种,该算法主要包含:Agent、状态、动作、环境、回报和惩罚。Q-learning算法通过机器人与环境不断地交换信息,来实现自我学习。Q-learning算法中的Q表是机器人与环境交互后的结果,因此在Q-learning算法中更新Q表就是机器人与环境的交互过程

    2024年02月11日
    浏览(38)
  • 强化学习应用(二):基于Q-learning的物流配送路径规划研究(提供Python代码)

    Q-learning是一种强化学习算法,用于解决基于马尔可夫决策过程(MDP)的问题。它通过学习一个值函数来指导智能体在环境中做出决策,以最大化累积奖励。 Q-learning算法的核心思想是使用一个Q值函数来估计每个状态动作对的价值。Q值表示在特定状态下采取某个动作所能获得

    2024年01月21日
    浏览(49)
  • 基于sumo实现交通的拥堵预测和路径动态规划 基于机器学习或者深度学习方法动态预测各路段的拥堵指数

    基于sumo实现交通的拥堵预测和路径动态规划 实现思路: 1、基于机器学习或者深度学习方法动态预测各路段的拥堵指数。 2、采用A* Dijkstra实现车辆的路径实时动态规划 基于sumo实现交通的拥堵预测和路径动态规划 随着城市化进程的加速以及交通运输工具的不断普及,城市交

    2024年04月17日
    浏览(32)
  • 概率论的学习和整理21:用EXCEL来做假设检验(未完成草稿)

    目录 1 EXCEL可以用来做假设检验 1.1 如何打开 数据分析 和 规划求解 1.2  EXCEL里关于正态分布的准备知识 2 基本的假设检验 2.1 最基本的假设检验,单边的Z检验 2.1 双样本F检验 2.1.1 例题 2.1.2 进行F检验之前需要满足一些假设条件 2.1.3 计算步骤 2.1.4 如何查表:下面这个图是 显著

    2024年02月16日
    浏览(29)
  • Qt Quick 3D学习:鼠标拾取物体

    (注意,开源版的 Qt Quick 3D 是狗都不用的 GPL 协议) Qt Creator 中有一个 picking 的示例,用于演示 View3D 中物体的拾取: 在示例基础上,我又加了一个简单的拖动效果,如图所示:   在使用 OpenGL 实现拾取的时候,我们可以用射线法。Qt Quick 3D 中封装了拾取操作,通过 View3D 的

    2024年02月10日
    浏览(30)
  • 强化学习应用(一):基于Q-learning的无人机物流路径规划研究(提供Python代码)

    Q-learning是一种强化学习算法,用于解决基于马尔可夫决策过程(MDP)的问题。它通过学习一个价值函数来指导智能体在环境中做出决策,以最大化累积奖励。 Q-learning算法的核心思想是通过不断更新一个称为Q值的表格来学习最优策略。Q值表示在给定状态下采取某个动作所能

    2024年02月02日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包