首页 > 解决方案 > 为什么 FirstPersonCameraController {camera: camera } 不能与 QML ApplicationWindow 一起使用?

问题描述

我正在 ApplicationWindow 中从 PyQT5 加载 QML 3D 场景。但是,我无法用鼠标平移和旋转我的自定义模型。

import QtQuick.Controls 2.5
import QtQuick.Scene3D 2.12

import Qt3D.Core 2.12
import Qt3D.Render 2.12
import Qt3D.Input 2.12
import Qt3D.Extras 2.13

import QtQuick 2.12 as QQ2

ApplicationWindow{   

    Scene3D {
            id: scene3d
            anchors.fill: parent
            anchors.margins: 10
            focus: true
            aspects: "input"

            FirstPersonCameraController {
                            camera: camera
                            }

            Entity {
                id: sceneRoot


                Camera {
                    id: camera
                    projectionType: CameraLens.PerspectiveProjection
                    fieldOfView: 45
                    nearPlane : 0.1
                    farPlane : 1000.0
                    position: Qt.vector3d( 0.0, 0.0, 40.0 )
                    upVector: Qt.vector3d( 0.0, 1.0, 1.0 )
                    viewCenter: Qt.vector3d( 0.0, 0.0, 0.0 )


                    PointLight{
                        id:pl3

                        }
                }



                ObjectPicker{
                  id: spherePicker
                  onPressed:{
                     console.log("Sphere clicked")
                  }
            }
                components: [
                    RenderSettings {
                        activeFrameGraph: ForwardRenderer {
                            camera: camera
                            clearColor: "transparent"
                        }
                    },
                    InputSettings { }
                ]

                PhongMaterial {
                    id: material
                    diffuse:Qt.rgba(0.5,0.5,0,1)
                }



                 PointLight{
                    id:pl2

                    }

               Mesh {
                    id: esh
                    source: "egg1.obj"

                    }

                Transform {
                    id: torusTransform
                    scale3D: Qt.vector3d(5, 5, 5)
                    rotation: fromAxisAndAngle(Qt.vector3d(1, 1, 0), 45)
                }

                Entity {
                    id: torusEntity
                    components: [ esh, material, torusTransform,spherePicker ]
                }

            }
        }


}

模型加载正确,只是我无法用鼠标控制它的旋转。

我认为这与“FirstPersonCameraController”有关

标签: pythonpyqtqmlpyqt5qt3d

解决方案


我目前无法亲自验证这一点,但我假设您必须FirstPersonCameraController在名为sceneRoot.

现在它是Scene3D. 尝试将其移至Camera节点下方,看看是否有效。

顺便说一句:我假设您的意思是您无法控制相机,这就是您所说的

模型加载正确,只是我无法用鼠标控制它的旋转。


推荐阅读