Git Product home page Git Product logo

qt3d-learn's Introduction

目录

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)、微信二维码


打赏

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


qt3d-learn's People

Contributors

jared2020 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.