Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

QML 3D Resizing model in UI



  • I am trying to implement a basic QML application that loads a 3D model from a .obj file and just display it on the screen. For now I am able to do so, but the object displayed is far too small. Is there a way to stretch/resize the model while rendering to fit its parent window's size or something?

    Here is the code -

    import Qt3D.Core 2.12
    import Qt3D.Render 2.12
    import Qt3D.Extras 2.12
    import Qt3D.Input 2.12
    import QtQuick.Scene3D 2.12
    import QtQuick 2.12 as QQ2
    
    Scene3D {
        id: scene3d
        anchors.fill: parent
        focus: true
        aspects: ["input", "logic"]
        cameraAspectRatioMode: Scene3D.AutomaticAspectRatio
        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, 0.0)
                viewCenter: Qt.vector3d(0.0, 0.0, 0.0)
            }
            
            FirstPersonCameraController {
                camera: camera
            }
            
            components: [
                RenderSettings {
                    activeFrameGraph: ForwardRenderer {
                        camera: camera
                        clearColor: "transparent"
                    }
                },
                InputSettings {
                }
            ]
            
            PhongMaterial {
                id: material
            }
            
            Mesh {
                id: sphereMesh
    //             source: "images/face3d/face_bse_mesh.obj"
                source: "images/robo-obj-pose4/source/d2f0cff60afc40f5afe79156ec7db657.obj"
            }
            
            Transform {
                id: sphereTransform
                property real userAngle: 0.0
                matrix: {
                    var m = Qt.matrix4x4()
                    m.rotate(userAngle, Qt.vector3d(0, 1, 0))
    //                 m.translate(Qt.vector3d(20, 0, 0))
                    return m
                }
            }
            
            QQ2.NumberAnimation {
                target: sphereTransform
                property: "userAngle"
                duration: 10000
                from: 0
                to: 360
                
                loops: QQ2.Animation.Infinite
                running: true
            }
            
            Entity {
                id: sphereEntity
                components: [sphereMesh, material, sphereTransform]
            }
    
        //     InputSettings {
        //         id: inputSettings
        //     }
        // 
        //     OrbitCameraController{
        //         id: orbitCamera
        //         camera: camera
        //     }
        }
    }
    
    

Log in to reply