QML 3D基本示例

问题描述 投票:0回答:1

我正在尝试创建一个基本的QML应用程序,它将从.obj文件加载3D模型并将其显示在屏幕上,并能够在运行时沿其轴旋转它。我浏览了一些Qt示例并提出了以下代码 - 其中大部分是从工作示例中借用的。但是当我运行它时,模型没有正确呈现。

实际模型如下:

enter image description here

目前我的应用程序显示为

.

这是QML代码 -

import Qt3D.Core 2.12
import Qt3D.Render 2.12
import Qt3D.Extras 2.12

Entity {
    id: sceneRoot

    Camera {
        id: camera
        projectionType: CameraLens.PerspectiveProjection
        fieldOfView: 45
        aspectRatio: 1820 / 1080
        nearPlane: 0.1
        farPlane: 1000.0
        position: Qt.vector3d(0.014, 0.956, 2.178)
        upVector: Qt.vector3d(0.0, 1.0, 0.0)
        viewCenter: Qt.vector3d(0.0, 0.7, 0.0)
    }

    Entity {
        components: [
            DirectionalLight {
                intensity: 0.9
                worldDirection: Qt.vector3d(0, 0.6, -1)
            }
        ]
    }

    RenderSettings {
        id: external_forward_renderer
        activeFrameGraph: ForwardRenderer {
            camera: camera
            clearColor: "transparent"
        }
    }

    Mesh {
        id: roboMesh
        source: "images/robo-obj-pose4/source/d2f0cff60afc40f5afe79156ec7db657.obj"
    }

    Entity {
        id: circleEntity
        property Material roboMaterial: PhongAlphaMaterial {
            alpha: 0.4
            ambient: "black"
            diffuse: "black"
            specular: "black"
            shininess: 10000
        }

        components: [roboMesh, roboMaterial]
    }
}

我在这里错过了什么?很抱歉这是一个非常愚蠢的问题,但我对Qt3D完全不熟悉,并且对于我的代码中还有什么需要进行操作感到困惑。

qt qml qt5 qt3d
1个回答
2
投票

您不一定需要评论建议的材料文件,您可以按照您的方式分配通用材料,只是您的代码存在其他一些问题。

首先,您需要将RenderSettings作为组件添加到根实体,如下所示:

Entity {
    id: sceneRoot

    components: [external_forward_renderer]

    ...

其次,"transparent"不是一个有效的清晰颜色。使用类似Qt.rgba(0, 0.5, 1, 1)的东西。

第三,除非将文件包含在资源文件中,否则需要将file://添加到网格URL的开头。至少我需要这个前缀,也许你不需要。您可以通过查看QtCreator中的应用程序输出来检查这一点。如果它显示“文件不存在”,则添加此前缀。

如果你仍然看不到你的网格尝试添加InputSettings(必须添加为组件)和OrbitCameraController

InputSettings {
    id: inputSettings
}

OrbitCameraController{
    camera: camera
}
© www.soinside.com 2019 - 2024. All rights reserved.