Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. QML and Qt Quick
  4. How should I set up FirstPersonCameraController?

How should I set up FirstPersonCameraController?

Scheduled Pinned Locked Moved Solved QML and Qt Quick
2 Posts 1 Posters 270 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Anton1978A Offline
    Anton1978A Offline
    Anton1978
    wrote on last edited by
    #1

    Good day. Now it's definitely a matter of
    my inability to FirstPersonCameraController.
    As I understand it, it must be attached to some object.
    Everything seems to have been done correctly, but there is no reaction to the mouse and keyboard.

    import QtQuick 2.15
    import QtQuick.Window 2.14
    import QtQuick3D 1.15
    import QtQuick.Scene3D 2.0
    
    Window {
        width: 800
        height: 600
        visible: true
        title: qsTr("Hello World 3D")
    
        Scene3D {
            anchors.fill: parent
            anchors.bottomMargin: 50.0
            anchors.rightMargin: 50.0
            Mega3DScene {}
        }
    }
    

    Or maybe the whole scene just moves with him?
    I'm confused.
    Mega3DScene.qml file:

    import QtQuick 2.15
    import Qt3D.Core 2.0
    import Qt3D.Extras 2.15
    import Qt3D.Input 2.0
    import Qt3D.Render 2.0
    import Qt3D.Logic 2.0
    import QtQuick.Window 2.14
    
    
    Entity {
        id: rootEtity
    
        SkyboxEntity {
            baseName: "qrc:/Items/Item/skybox"
            extension: ".tga"
        }
    
        Entity{
            TorusMesh {
                id: torusMesh
                radius: 15.0
                minorRadius: 6.0
                slices: 16
                rings: 32
            }
            PhongMaterial{
                id: torusMaterial
                diffuse: Qt.rgba(0,0,1,0)
                ambient: Qt.rgba(0.15,0,0,1)
            }
            Transform {
                id: torusTransform
                translation: Qt.vector3d(0.0,0.0,0.0)
                SequentialAnimation on rotationY {
                    loops: Animation.Infinite
                    NumberAnimation {
                        duration: 3000
                        to: -360
                        from: 0
                        easing.type:Easing.InQuad
                    }
                }
            }
            id: torusEntity
            components: [torusMesh,torusMaterial,torusTransform]
        }
    
        Entity{
            PointLight{
                id: pointLight01
                color: Qt.rgba(1,0.5,0.5,0)
            }
            Transform{
                id: lightTransform01
                translation: Qt.vector3d(0.0,0.0,30.0)
            }
            id: pintLightEntity01
            components: [pointLight01,lightTransform01]
        }
    
        Entity{
            id: pintLightEntity
            PointLight{
                id: pointLight02
                color: Qt.rgba(1,0.5,0.5,0)
            }
            Transform{
                id: lightTransform02
                translation: Qt.vector3d(0.0,0.0,-30.0)
            }
            components: [pointLight02,lightTransform02]
        }
    
        Entity{
            SceneLoader{
                id: sceneLoader01
                source: "qrc:/Items/Item/teaPort.obj"
            }
            Transform{
                id: lightTransform03
                translation: Qt.vector3d(0.0,-5.0,-30.0)
                scale: 0.3
            }
            components: [sceneLoader01,lightTransform03]
        }
    
        Entity{
            SceneLoader{
                id: sceneLoader02
                source: "qrc:/Items/Item/text.obj"
            }
            Transform{
                id: lightTransform04
                translation: Qt.vector3d(0.0,-5.0,30.0)
                scale: 0.3
            }
            
            
            components: [sceneLoader02,lightTransform04]
        }
    
        Camera {
            id: mainCamera
            projectionType: CameraLens.PerspectiveProjection
            fieldOfView: 60.0
            aspectRatio: 16.0 / 9.0
            nearPlane: 0.1
            farPlane: 1000.0
            position: Qt.vector3d(0.0,0.0,50.0)
            upVector: Qt.vector3d(0.0,1.0,0.0)
            viewCenter: Qt.vector3d(0.0,0.0,0.0)
        }
    
        FirstPersonCameraController{
            id: controllerFirst
            camera: mainCamera
        }
    
        components: [
            RenderSettings {
                activeFrameGraph: ForwardRenderer{
                    clearColor: Qt.rgba(1,1,1,1)
                    camera: mainCamera
                }
            },
            InputSettings{}
        ]
    }
    
    1 Reply Last reply
    0
    • Anton1978A Offline
      Anton1978A Offline
      Anton1978
      wrote on last edited by
      #2

      Everything is working. In short, I was sure that if I clicked on Scene3D with the mouse, it was immediately in focus.
      It turns out that something is wrong, you need to give its focus programmatically.

              Scene3D {
                  id: scene3d
                  anchors.fill: parent
                  anchors.leftMargin: 200
                  anchors.topMargin: 10
                  anchors.rightMargin: 10
                  anchors.bottomMargin: 10
                  focus: true
                  aspects: ["input", "logic"]
                  cameraAspectRatioMode: Scene3D.AutomaticAspectRatio
      
                  Mega3DScene{}
              }
      
      1 Reply Last reply
      0

      • Login

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved