学习Qt3D的使用。在已有资料的基础上,做一些尝试,改进。算是踩坑笔记。
参考:
Linux | Windows |
---|---|
- Qt 5.12.x Windows
参考Qt官方的例子,做了一个列表,可以点击进入、可以返回,也方便在Android设备上运行。
按代码实现来说,就是Loader模拟了StackView。
最小Demo,在Quick场景中,增加初始的3D场景。
增加背景色,以及必要的渲染设置、渲染设备选择器等。
增加FPS
几何形状的绘制。创建了4个3D场景,放在了一起。
左上角为顶点绘制的三角形,3个点+ TriangleFan的方式绘制。
右上角是 索引+顶点绘制的线框模式两个三角形
左下角为一次绘制两个三角形(顶点数据包含两个三角形)
右下角为绘制彩色的三角形(顶点数据之外,增加色彩数据)
基本的纹理贴图
纹理和自定义颜色的混合
两张纹理的混合。增加了键盘设备和键盘处理,按下键盘Up和Down可以调节混合比例。
坑1:手机上居然不能显示第二张纹理
一个3D立方体,绕y轴旋转
100个立方体,用NodeInstantiator动态创建,坐标随机、大小随机
坑2:异步创建的属性打开就抛异常。
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。。。)
加个地板(PlaneMesh + PhongMaterial),打个光 (PointLight)
注意调整好相机角度或者地板位置,不然默认视角所在平面和地板平行了,就看不见了。
PhongMaterial冯氏材质是有光晕效果的,其实从前面的立方体开始一直都用的冯氏材质。
不加材质就是纯黑色的立方体。这里PointLight的效果更明显一些,就会覆盖冯氏材质的光晕效果。
Qt3D的 TextureCubeMap 没有实现,等后续版本再补充。
天空盒, SkyboxEntity。注意6张图片的名称。
3D文字 ExtrudedTextMesh。
2D文字除了Quick/SceneGraph 中的Text,还有FrameGraph中的Text2DEntity,要放在Scene2D场景中。
相当于把2维场景渲染到一张纹理Texture上,再把Texture渲染到3D场景中。
在不需要Quick/SceneGraph的高级场景中,大有用处。比如最近Qt官方公众号上宣传的那几个3D文章,
就提到了高端场景,不要任何Quick,应该就是用这种方式实现的。
加载模型
几何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(高质量群,只能交流技术、分享知识、帮助解决实际问题) |
邮箱 | jared2020@163.com |
微信 | xsd2410421 |
QQ、TIM | 759378563 |
QQ(TIM)、微信二维码
觉得分享的内容还不错, 就请作者喝杯奶茶吧~~