Qt 3D教程(四)结合Qt Quick来实现动画的效果

Qt 3D教程(四)结合Qt Quick来实现动画的效果

上篇教程已经给大家带来较为实用的效果了,这回我们尝试载入两个模型,并且让PhongMaterial成为它们的共享材质,此外,我们通过借助Qt Quick的动画框架来让我们的三维场景动起来!

蒋彩阳原创文章,首发地址:http://blog.csdn.net/gamesdev/article/details/47132099。欢迎同行前来探讨。

这次的改动没有上次那么多,只需要修改main.qml即可满足效果。main.qml文件如下所示:

import Qt3D 2.0
import Qt3D.Renderer 2.0
import QtQuick 2.5 as Quick

Entity
{
    id: root

    Camera
    {
        id: camera
        position: Qt.vector3d( 0.0, 20.0, 100.0 )
        projectionType: CameraLens.PerspectiveProjection
        fieldOfView: 45
        aspectRatio: 16.0 / 9.0
        nearPlane : 0.1
        farPlane : 1000.0
        upVector: Qt.vector3d( 0.0, 1.0, 0.0 )
        viewCenter: Qt.vector3d( 0.0, 20.0, 0.0 )
    }

    components: FrameGraph
    {
        ForwardRenderer
        {
            clearColor: Qt.rgba( 0.2, 0, 0, 1 )
            camera: camera
        }
    }

    PhongMaterial
    {
        id: phongMaterial
        ambient: _settings.ambient
        diffuse: _settings.diffuse
        specular: _settings.specular
        shininess: _settings.shininess
    }

    Entity
    {
        Mesh
        {
            id: chestMesh
            source: "qrc:/assets/Chest.obj"
            enabled: _settings.showModel
        }

        components: [ chestMesh, phongMaterial ]
    }

    Entity
    {
        Mesh
        {
            id: trefoilMesh
            source: "qrc:/assets/trefoil.obj"
            enabled: _settings.showModel
        }

        Transform
        {
            id: transform

            Translate
            {
                translation: Qt.vector3d( 0, 30, 50 )
            }

            Rotate
            {
                axis: Qt.vector3d( 0, 1, 0 )
                Quick.NumberAnimation on angle
                {
                    from: 0
                    to: 360
                    loops: Quick.Animation.Infinite
                    duration: 2000
                    running: true
                }
            }
        }

        components: [ trefoilMesh, phongMaterial, transform ]
    }

    Configuration
    {
        controlledCamera: camera
    }
}

这里我们将PhongMaterial单独提出来,让它成为一个共享的材质,另外,我们再添加一个模型——三叶草环状模型,并且我们给它做了一系列转换。我想要是让这个模型绕着宝箱模型旋转该多好啊。于是我们将Qt Quick引入,我们将旋转的部分做了动画,从0度到360度,并且做了无限循环。就是这么简单,我已经迫不及待地想要看到动态的效果了:

我们看到,这个环状模型绕着宝箱模型旋转了,这个效果非常带感!

本次教程的代码均在我的github中,感兴趣的同行们可以通过git clone或者是直接下载我的git项目来获取到本套教程的所有源代码。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-28 06:29:14

Qt 3D教程(四)结合Qt Quick来实现动画的效果的相关文章

Qt官方教程翻译——Using Qt Quick Designer

附网址:http://qt-project.org/doc/qtcreator-3.1/creator-using-qt-quick-designer.html Using Qt Quick Designer 你可以在Qt Quick Designer可视化编辑器或者代码编辑器中编辑.qml文件. 在工程中双击一个.qml文件可以在代码编辑器中打开它,然后选择设计模式在可视化编辑器中打开它. 使用可视化编辑窗格来管理你的工程: 导航面板(1):以树结构形式显示当前QML文件中的各个项目. 库面板

Qt 3D教程(三)实现对模型材质参数的控制

Qt 3D教程(三)实现对模型材质参数的控制 蒋彩阳原创文章,首发地址:http://blog.csdn.net/gamesdev/article/details/47131841.欢迎同行前来探讨. 上一篇教程介绍的是显示一个三维模型的基本步骤,接下来我们需要实现的是添加材质,并且希望我们通过按钮来控制材质的参数.这样的效果看起来很像一个3D模型材质编辑器的样子.那我们来尝试一下吧. 首先我们对Settings这个类进行修改,给它增添一些属性,比如说环境光.漫反射.镜面反射以及反射系数.通过Q

嵌入式linux QT开发(四)——QT Creator工程管理

嵌入式linux QT开发(四)--QT Creator工程管理 一.QT Creator工程管理 QT Creator以工程项目的方式对源码进行管理,一个QT工程中包含不同类型的文件如下: A..pro项目描述文件 B..pro.user用户描述文件 C..h头文件 D..cpp源文件 E..ui界面描述文件 F.资源文件(图片.音频等) 二..pro项目描述文件 1..pro项目描述文件基本构成如下: A.#注释起始符 B.QT模块声明 C.TARGET可执行文件名 D.TEMPLATE程序

Qt使用教程之创建Qt Quick项目

<Qt Enterprise最新版下载> Qt长期以来一直以"linux平台下,最著名的开发平台"身份在全世界开发者中享有盛誉.Qt Enterprise v5.5是目前最先进.最完整的跨平台C++开发工具.它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具.那么在本文中,我们将为大家展示如何创建一个新的Qt Quick项目. 当你从头开始创建一个新的Qt Quick项目时,你有一下选择: Qt Quick Application创建一个

Qt 3D教程(一)使用Qt Widgets建立一个框架

Qt3D教程(一)使用Qt Widgets建立一个框架 Qt 3D是Qt 5.5发布时最重要的一个新模块,它很好地将3D的繁文缛节封装在底层,留给我们的是简洁的对象创建方法,它也不需要你掌握太多的着色器知识,只需要懂得一些三维和光照的基本知识就可以创建出比较美观的三维模型浏览程序了.目前虽然大家都能够使用Qt 5.5和Qt 3D了,但是我查看了一下,有关API文档和一个详尽的介绍还是空缺的,因此我认为有必要写一点教程,简要介绍一下Qt 3D的使用方法. 蒋彩阳原创文章,首发地址:http://b

Qt 3D教程(二)初步显示3D的内容

Qt3D教程(二)初步显示3D的内容 前一篇很easy,全然就没有牵涉到3D的内容,它仅仅是我们搭建3D应用的基本框架而已,而这一篇.我们将要利用它来初步地显示3D的内容了! 本次目的是将程序中间的内容替换成3D的视图,而这一切也只是十几行代码.要不我们来试一试吧! 蒋彩阳原创文章,首发地址:http://blog.csdn.net/gamesdev/article/details/47131099.欢迎同行前来探讨. 首先我们须要对我们的MainWindow.cpp文件进行改动,在此基础上加入

【大话QT之十四】QT实现多语言切换

功能需求: 网盘客户端要能够实现多国语言的切换,第一版要支持中.英文的切换.在实现过程中感觉QT对多国语言的支持还是很不错的,制作多语言包很方便,切换的逻辑也很简单.下面就来看一下QT中如何制作多语言包. 实现方法: 为了支持国际化最关键的地方是制作多国语言包,然后再实现动态切换.QT里面既可以采用命令行也可以采用Qt Creator的界面操作来生成,这里我们利用Qt Creator来生成多国语言包.基本流程是,先生成ts文件,然后生成qm文件,最后通过QTranslator类来加载qm文件,实

Qt qml 模拟iphone slide to unlock 的聚光动画文字效果

模拟iphone slide to unlock 的聚光动画文字效果    /底层放淡文字    /前景放高亮文字+半透明遮罩    /动画移动遮罩 Author: surfsky.cnblogs.com 2015-02Lisence: MIT, 请保留本文档说明 [先看效果] [下载] http://download.csdn.net/detail/surfsky/8448175 [核心代码] // 背景文字(灰色) Text{ text: root.text font.pointSize:

Qt 3D的研究(二)

上一篇文章给大家看了很多Qt 3D的例子,如果大家有Qt 3D的源代码,就会发现,开发这些例子,花费的代码还真不少.这就是不一样的地方,Qt 3D毕竟和三维图形打交道,多了一个维度,问题的难度变得更大了. 蒋彩阳原创文章,首发地址:http://blog.csdn.net/gamesdev/article/details/43801957.欢迎同行前来探讨. 研究了多日的Qt 3D,我了解到为了适应跨平台.不同的着色器编译器标准.多重渲染目标,Qt 3D提出了很多的方案,创新了许多的概念,这多多