How to zoom in/out or resize a 3D model rendered in QML from a .obj file
Unsolved
General and Desktop
-
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"] height: parent.height width: parent.width 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 { id: inputSettings } ] PhongMaterial { id: material } Mesh { id: sphereMesh // source: "images/face3d/face_bse_mesh.obj" source: "images/robo-obj-pose4/source/d2f0cff60afc40f5afe79156ec7db657.obj" } Transform { id: modelTransform 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: modelTransform property: "userAngle" duration: 10000 from: 0 to: 360 loops: QQ2.Animation.Infinite running: true } Entity { id: sphereEntity components: [sphereMesh, material, modelTransform] } OrbitCameraController{ id: orbitCamera camera: camera } } }