All Projects → jaredtao → Qt3D-learn

jaredtao / Qt3D-learn

Licence: MIT license
Qt3D-learn

Programming Languages

QML
638 projects
C++
36643 projects - #6 most used programming language
QMake
1090 projects

Projects that are alternatives of or similar to Qt3D-learn

Wellchat
WellChat is a Application that is a WeChat-like APP by qml.好吧~原谅我的英语。这个一个使用qml来仿制安卓微信的Qt程序,可以运行在安卓上。
Stars: ✭ 174 (+383.33%)
Mutual labels:  qml, qtquick
QtMobileApp
This repository contains basic template for Qt for mobile app development using QML and C++ as backend to access RESTful API's
Stars: ✭ 16 (-55.56%)
Mutual labels:  qml, qtquick
Qml Box2d
Box2D QML plugin
Stars: ✭ 223 (+519.44%)
Mutual labels:  qml, qtquick
Qaterial
🧩 Collection of Material Components based on QtQuickControls2.
Stars: ✭ 110 (+205.56%)
Mutual labels:  qml, qtquick
python-qt-live-coding
Live coding environment for Python, Qt and QML.
Stars: ✭ 35 (-2.78%)
Mutual labels:  qml, qtquick
Autoannotationtool
A label tool aim to reduce semantic segmentation label time, rectangle and polygon annotation is supported
Stars: ✭ 113 (+213.89%)
Mutual labels:  qml, qtquick
qml-ar
Seamless Augmented Reality module for QML using UchiyaMarkers
Stars: ✭ 32 (-11.11%)
Mutual labels:  qml, qtquick
Awesome Qt Qml
A curated list of awesome Qt and QML libraries, resources, projects, and shiny things.
Stars: ✭ 1,118 (+3005.56%)
Mutual labels:  qml, qtquick
TreeEdit
Qml TreeEdit with Controls2 (Qml树结构编辑器,使用Controls2实现)
Stars: ✭ 50 (+38.89%)
Mutual labels:  qml, qtquick
QaterialGallery
🖼️ Qaterial Library Showcase.
Stars: ✭ 85 (+136.11%)
Mutual labels:  qml, qtquick
Qtquickvcp
A Virtual Control Panel for Machinekit written in Qt/C++/QML
Stars: ✭ 104 (+188.89%)
Mutual labels:  qml, qtquick
g-timetracker
Global Time Tracker
Stars: ✭ 20 (-44.44%)
Mutual labels:  qml, qtquick
Chart.qml
Chart.qml like Chart.js
Stars: ✭ 100 (+177.78%)
Mutual labels:  qml, qtquick
Flat.qml
FlatUI by qml, 参考FlatUI设计的一套qml控件
Stars: ✭ 164 (+355.56%)
Mutual labels:  qml, qtquick
Kaidan
[Replaced by https://invent.kde.org/network/kaidan] Kaidan, a simple and user-friendly Jabber/XMPP client for every device and platform.
Stars: ✭ 67 (+86.11%)
Mutual labels:  qml, qtquick
qt-qrcode
Qt/C++ library for encoding and visualization of data in a QR Code symbol
Stars: ✭ 35 (-2.78%)
Mutual labels:  qml, qtquick
Spix
UI test automation library for QtQuick/QML Apps
Stars: ✭ 48 (+33.33%)
Mutual labels:  qml, qtquick
Osgqtquick
Intergation OpenSceneGraph to Qt Quick
Stars: ✭ 53 (+47.22%)
Mutual labels:  qml, qtquick
Project-Template
A template for modern C++ projects with useful features for developing cross-platform products.
Stars: ✭ 44 (+22.22%)
Mutual labels:  qml, qtquick
vatsinator-legacy
An open-source Vatsim monitor
Stars: ✭ 12 (-66.67%)
Mutual labels:  qml, qtquick

目录

Qt3D-learn

学习Qt3D的使用。在已有资料的基础上,做一些尝试,改进。算是踩坑笔记。

参考:

CI

Linux Windows
lin-badge win-badge

License

License

开发环境

  • Qt 5.12.x Windows

效果预览

启动页面

参考Qt官方的例子,做了一个列表,可以点击进入、可以返回,也方便在Android设备上运行。

按代码实现来说,就是Loader模拟了StackView。

HelloScene3D

最小Demo,在Quick场景中,增加初始的3D场景。

HelloScene3D 2

增加背景色,以及必要的渲染设置、渲染设备选择器等。

增加FPS

Triangles

几何形状的绘制。创建了4个3D场景,放在了一起。

左上角为顶点绘制的三角形,3个点+ TriangleFan的方式绘制。

右上角是 索引+顶点绘制的线框模式两个三角形

左下角为一次绘制两个三角形(顶点数据包含两个三角形)

右下角为绘制彩色的三角形(顶点数据之外,增加色彩数据)

Texture 1

基本的纹理贴图

Texture 2

纹理和自定义颜色的混合

Texture 3

两张纹理的混合。增加了键盘设备和键盘处理,按下键盘Up和Down可以调节混合比例。

坑1:手机上居然不能显示第二张纹理

FirstCube

一个3D立方体,绕y轴旋转

MulitCube

100个立方体,用NodeInstantiator动态创建,坐标随机、大小随机

坑2:异步创建的属性打开就抛异常。

TextureCube

CuboidMesh立方体贴图。

顺便记录一下研究过的一些东西:

CuboidGeometry默认可以创建立方体的顶点、纹理坐标等几何信息,但是Material总是贴不上。

自己重写Geometry和shader代码可以实现立方体贴图,略麻烦

CuboidGeometry中的默认信息(来自: qt-everywhere-src-5.12.4\qt3d\src\render\geometry\qattribute.cpp)

属性 着色器中对应默认名称
顶点坐标 vertexPosition
法线 vertexNormal
颜色 vertexColor
第一层纹理坐标 vertexTexCoord
切线 vertexTangent
索引 vertexJointIndices
权重 vertexJointWeights
第二层纹理坐标 vertexTexCoord1
第三层纹理坐标 vertexTexCoord2

(用不来,后面的TextureCubeMap例子,还是写了自定义Geometry。。。)

TextureCubeWithPlane

加个地板(PlaneMesh + PhongMaterial),打个光 (PointLight)

注意调整好相机角度或者地板位置,不然默认视角所在平面和地板平行了,就看不见了。

PhongMaterial冯氏材质是有光晕效果的,其实从前面的立方体开始一直都用的冯氏材质。

不加材质就是纯黑色的立方体。这里PointLight的效果更明显一些,就会覆盖冯氏材质的光晕效果。

TextureCubeMap

Qt3D的 TextureCubeMap 没有实现,等后续版本再补充。

SkyBox

天空盒, SkyboxEntity。注意6张图片的名称。

TextureCubeMap

Text3D

3D文字 ExtrudedTextMesh。

2D文字除了Quick/SceneGraph 中的Text,还有FrameGraph中的Text2DEntity,要放在Scene2D场景中。

相当于把2维场景渲染到一张纹理Texture上,再把Texture渲染到3D场景中。

在不需要Quick/SceneGraph的高级场景中,大有用处。比如最近Qt官方公众号上宣传的那几个3D文章,

就提到了高端场景,不要任何Quick,应该就是用这种方式实现的。

HeloMesh

加载模型

Meshes

几何Mesh 的合影

代码结构

部分理解

2019/7/21 TextureCubeMap 这些特殊的纹理贴图功能,都没有实现,C++代码里只有空的类构造、析构函数。。。

我想贴个六面骰子出来,自己撸Geometry + shader吗? SkyBox效果类似,但是深度处理不一样。

2019/7/21 截至到5.13.0, Qt3D文档上宣传的 刚体、重力、AI寻路 等部分,根本没有任何代码。

只在Bitbucket上面找到一个叫 陈斌的大佬封装的 Bullet Physics QML Plugin。

https://bitbucket.org/csaga77/bullet-physics-qml-plugin/src/master/

联系方式:


作者 涛哥
开发理念 弘扬鲁班文化,传承工匠精神
博客 https://jaredtao.github.io/
博客-国内镜像 https://jaredtao.gitee.io
知乎专栏 https://zhuanlan.zhihu.com/TaoQt
微信公众号 Qt进阶之路
QQ群 734623697(高质量群,只能交流技术、分享知识、帮助解决实际问题)
邮箱 [email protected]
微信 xsd2410421
QQ、TIM 759378563

QQ(TIM)、微信二维码


打赏

觉得分享的内容还不错, 就请作者喝杯奶茶吧~~


Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].