本节官方Demo,使用Qt3D渲染场景

在main.cpp文件中,设置scene。

为了能使用相关的类和函数,需要include、Qt3DCore、Qt3D、Qt3DExtras模块。

 #include <Qt3DCore/QEntity>#include <Qt3DRender/QCamera>#include <Qt3DRender/QCameraLens>#include <Qt3DCore/QTransform>#include <Qt3DCore/QAspectEngine>#include <Qt3DInput/QInputAspect>#include <Qt3DRender/QRenderAspect>#include <Qt3DExtras/QForwardRenderer>#include <Qt3DExtras/QPhongMaterial>#include <Qt3DExtras/QCylinderMesh>#include <Qt3DExtras/QSphereMesh>#include <Qt3DExtras/QTorusMesh>

首先需要设置场景,和指定的root实体

 Qt3DCore::QEntity *createScene(){Qt3DCore::QEntity *rootEntity = new Qt3DCore::QEntity;

再使用PhongRendering为root实体指定material

Qt3DRender::QMaterial *material = new Qt3DExtras::QPhongMaterial(rootEntity);

在root实体上创建圆环实体,旋转、以及material组建等:

     Qt3DCore::QEntity *torusEntity = new Qt3DCore::QEntity(rootEntity);Qt3DExtras::QTorusMesh *torusMesh = new Qt3DExtras::QTorusMesh;torusMesh->setRadius(5);torusMesh->setMinorRadius(1);torusMesh->setRings(100);torusMesh->setSlices(20);Qt3DCore::QTransform *torusTransform = new Qt3DCore::QTransform;torusTransform->setScale3D(QVector3D(1.5, 1, 0.5));torusTransform->setRotation(QQuaternion::fromAxisAndAngle(QVector3D(1, 0, 0), 45.0f));torusEntity->addComponent(torusMesh);torusEntity->addComponent(torusTransform);torusEntity->addComponent(material);

指定各个sphere的实体及他们的部件:

     Qt3DCore::QEntity *sphereEntity = new Qt3DCore::QEntity(rootEntity);Qt3DExtras::QSphereMesh *sphereMesh = new Qt3DExtras::QSphereMesh;sphereMesh->setRadius(3);Qt3DCore::QTransform *sphereTransform = new Qt3DCore::QTransform;OrbitTransformController *controller = new OrbitTransformController(sphereTransform);controller->setTarget(sphereTransform);controller->setRadius(20.0f);QPropertyAnimation *sphereRotateTransformAnimation = new QPropertyAnimation(sphereTransform);sphereRotateTransformAnimation->setTargetObject(controller);sphereRotateTransformAnimation->setPropertyName("angle");sphereRotateTransformAnimation->setStartValue(QVariant::fromValue(0));sphereRotateTransformAnimation->setEndValue(QVariant::fromValue(360));sphereRotateTransformAnimation->setDuration(10000);sphereRotateTransformAnimation->setLoopCount(-1);sphereRotateTransformAnimation->start();sphereEntity->addComponent(sphereMesh);sphereEntity->addComponent(sphereTransform);sphereEntity->addComponent(material);

使用了一个属性来实现动画的效果。

最后,创建Qt3D窗口:

 int main(int argc, char* argv[]){QGuiApplication app(argc, argv);Qt3DExtras::Qt3DWindow view;Qt3DCore::QEntity *scene = createScene();// CameraQt3DRender::QCamera *camera = view.camera();camera->lens()->setPerspectiveProjection(45.0f, 16.0f/9.0f, 0.1f, 1000.0f);camera->setPosition(QVector3D(0, 0, 40.0f));camera->setViewCenter(QVector3D(0, 0, 0));// For camera controlsQt3DExtras::QOrbitCameraController *camController = new Qt3DExtras::QOrbitCameraController(scene);camController->setLinearSpeed( 50.0f );camController->setLookSpeed( 180.0f );camController->setCamera(camera);view.setRootEntity(scene);view.show();return app.exec();}

Qt文档阅读笔记-Qt 3D: Simple C++ Example解析相关推荐

  1. Qt文档阅读笔记-Qt跨平台库(Qt基本库)

    Qt基本库是所有Qt平台的基础分.他能在所有支持开发的平台和测试平台上跑.这些库在Qt5中已经保持源代码和二进制的兼容. 基本模块(基本库)被其他特殊模块所附加. 下面是Qt基本模块(基本库)的列表: ...

  2. Qt文档阅读笔记-Qt Core的官方解析

    Qt Core 目录 Getting Started Threading and Concurrent Programming Input/Output, Resources, Containers ...

  3. Qt文档阅读笔记-Qt Quick 3D - Simple Example解析

    程序运行截图如下: 还是动的. 官方出这篇博文的目的是如何教我们使用Qt Quick 3D去渲染简单的场景. 首先是设置其场景. 在main.qml文件中设置整个场景,导入QtQuick3D组建,用于 ...

  4. Qt文档阅读笔记-Qt对象模型及deleteLater()杂记

    最近主要在撸官方的自学包.在此作下简短的笔记: Qt对象模型 Qt包含的1500个类可以分为2类 1. identify types: 2. value types: identify types: ...

  5. Qt文档阅读笔记-QThread::setPriority(Priority priority)官方解析及实例

    目录 官方解析 博主栗子 官方解析 QThread::setPriority(Priority priority) 这个函数为运行的线程设置了优先级.如果这个线程没有运行,那么这么函数啥事都不会做,并 ...

  6. Qt文档阅读笔记-QtConcurrent Map Example官方实例解析

    这个例子对数据处理有很大的用处,在此记录下. 官方对应这个例子解析如下: QtConcurrent Map exapmle展示了使用QtConcurrent API的同步(阻塞)接口对图片进行拉伸.这 ...

  7. Qt文档阅读笔记-Qt单元测试中模拟GUI事件

    这里先提下基本概念 官方的模拟GUI事件,就是调用QTest提供的函数,去模拟用户鼠标点击,用户输入等效果.从而达到模拟的功能,感觉这个功能非常的好. 如: QTest::keyClicks()主要是 ...

  8. Qt文档阅读笔记-Qt Quick Controls - Wearable Demo实例解析

    程序运行截图如下: 这个实例主要是用qml玩界面. main.qml文件以及wearable.qml分别是由ApplicationWindow和StatckView.这个StackView用于做导航相 ...

  9. Qt文档阅读笔记-Qt Quick Examples - Text 初步解析

    目录 Hello Fonts Available Fonts Banner Img Tag Text Layout Hello Hello展示了改变字间距和动态展示.使用连续的动画,font.Lett ...

最新文章

  1. Android10.0 四大组件与进程启动间关系
  2. c++ 读取数字,直到输入非数字字符为止的算法(附完整源码)
  3. linux超级工具,linux运维超级工具--sysdig
  4. 小米宣布将停止MIUI全球Beta测试计划
  5. BZOJ1901 Zju2112 Dynamic Rankings 【树状数组套主席树】
  6. html5触摸指定区域,HTML5/CSS3系列教程:HTML5 区域(Sectioning)的重要性
  7. 网站关键词编写方法,注意事项。
  8. easypoi excel:Cannot add merged region X to sheet because it overlaps with an existing merged region
  9. 利用python3 生成密码本
  10. 使用plist文件进行ipa的安装
  11. ASP.NET免费发送邮件|
  12. oracle的多个exclude,记录一下expdp exclude的用法
  13. PX4 FMU [17] stabilize
  14. C语言:鸡兔同笼(随机输入头数和脚数)
  15. SQL SERVER 软件和安装步骤
  16. 基于Django搭建Python web项目——项目创建及配置(一)
  17. python简单代码画皮卡丘-利用Python绘制萌萌哒的皮卡丘
  18. Linux计划任务、周期性任务执行
  19. 【树上算法】树的直径
  20. SpringIOC源码——管理型容器——整体流程【框架专题】

热门文章

  1. win7环境下创建超级隐藏账户
  2. jQuery DOM 节点操作
  3. 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。...
  4. Oracle 11g 新特性 -- Invisible Indexes(不可见的索引) 说明
  5. 如何手工完全卸载SQL SERVER 2000数据库
  6. How to get Intellisense for Web.config and App.config in Visual Studio .NET?(转载)
  7. 程序员想进大公司?学会这门编程知识,决定你能进什么样的企业!
  8. Caused by: javax.xml.stream.FactoryConfigurationError: Provider com.ctc.wstx.stax.WstxInputFactory n
  9. 5.6亿人没有存款、人均负债13万,大数据揭示负债累累的年轻人
  10. 不对应该是撒尿C++五子棋