zoukankan      html  css  js  c++  java
  • Qt 3D入门(二)

    前面我们使用Qt 3D框架创建了一个最基本的3D程序,蓝色的背景,里面什么也没有。

    现在,我们要在此基础上把3D模型放进去。3D建模的工具有很多,Auto CAD, 3DS Max,Rhino, Blender等等,有收费,有免费,不一而足,总有一款你会喜欢。 在学校不同的专业学的软件可能不同,笔者是电子专业的,十几年前在学校只学过工程制图,使用的是AutoCAD。但没关系,我们要做的是编写3D程序,建模有时间再学吧。

    Qt 3D内置了obj的模型解析器,能够导入的是obj格式的3D模型,其它格式就需要转换一下了。如果手头没有现成的模型,我们就直接使用Qt自带的几个模型做为例子。Qt的示例程序里面带了几个模型,存放在下面这个目录,我们把它拷出来,放到自己的工作目录即可。

    ExamplesQt-5.11.1qt3dexampleresourcesassetsobj

    接下来,把toyplane.obj添加到我们的工程里面,先在qml.qrc下添加一个prefix,/assets/obj,然后把toyplane.obj添加到此路径下。

    编辑main.qml文件,添加以下内容:

     1     Entity {
     2         id: topplane
     3  
     4         PhongMaterial {
     5             id: material
     6         }
     7  
     8         Mesh {
     9             id: toyplaneMesh
    10             source: "qrc:/assets/obj/toyplane.obj"
    11         }
    12  
    13         components: [toyplaneMesh, material]
    14     }

    我们添加一个新的Entity来表示我们飞机模型实体,id为toyplane。然后这个实体中包含了一个Mesh对象。其中这个Mesh由"qrc:/assets/obj/toyplane.obj"这个路径载入。还定义了一个PhongMaterial材质,Qt 3D没有默认的材质,如果不定义材质的话,模型就显示不出来。最后创建components为[ toyplaneMesh, material ],表示让Entity拥有的组件是名为toyplaneMesh,材质为material的Mesh component。

    点击运行,效果如下:

    因为我们在第(一)篇里定义了Camera和InputSettings{},那么我们可以使用鼠标将camera的参数进行相应的改变,从而可以从不同的角度来观察模型。程序可以通过鼠标进行交互:左键可以平移,右键可以旋转,中键可以放大缩小等。

    
    
  • 相关阅读:
    【线程间通信:代码示例:分析问题原因:修正代码】
    【死锁问题】
    【解决线程安全问题:通过Lock锁对象】
    【解决线程安全问题:同步方法】
    【解决线程安全问题:同步代码块】
    【线程实现的两种方式及区别】
    小阳的贝壳
    小石的妹子
    SPFA模板+dfs版检测负环
    逆序对模板
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/14376094.html
Copyright © 2011-2022 走看看