Unsolved Animation, 3D development
-
@mrjj ya i got that thank you
-
Here's an almost minimal example in QML:
GearEntity.qml
import Qt3D.Core 2.0 import Qt3D.Render 2.0 import Qt3D.Input 2.0 import Qt3D.Extras 2.0 Entity { id: gearEntity Mesh { id: gearMesh source: "qrc:///assets/gear.obj" } Transform { id: gearTransform scale3D: Qt.vector3d(45, 45, 45) rotation: fromAxisAndAngle(Qt.vector3d(1, 0, 0), 45) } PhongMaterial { id: gearMaterial } Entity { id: torusEntity components: [ gearMesh, gearTransform, gearMaterial ] } }
RootEntity.qml
import Qt3D.Core 2.0 import Qt3D.Render 2.0 import Qt3D.Input 2.0 import Qt3D.Extras 2.0 Entity { id: rootEntity 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 {} ] GearEntity {} }
main.qml
import QtQuick 2.7 import QtQuick.Window 2.3 import QtQuick.Controls 2.0 import QtQuick.Layouts 1.3 import QtQuick.Scene3D 2.0 import Qt3D.Core 2.0 import Qt3D.Render 2.0 import Qt3D.Extras 2.0 ApplicationWindow { visible: true visibility: Window.Maximized Rectangle { anchors.fill: parent gradient: Gradient { GradientStop { position: 0.0; color: "blue" } GradientStop { position: 1.0; color: "grey" } } } Scene3D { id: scene3d anchors.fill: parent focus: true aspects: ["input", "logic"] cameraAspectRatioMode: Scene3D.AutomaticAspectRatio RootEntity {} } Button { text: "Exit" onClicked: Qt.quit() } }
-
@Wieland thank you... i got the output.
I have one doubt, in the output when i try to rotate the object it is not rotating in the same place, instead the camera is rotating(i guess), is there any way to fix the camera and rotate the object in 360 deg ?
Thank you -
That's just how
FirstPersonCameraController
works. You could either implement your own camera controller or - instead of moving the camera - dynamically changegearTransform
. -
This post is deleted! -
@Wieland
You could either implement your own camera controller
How i can develop my own camera controller is there any example for this ?
-
@Wieland
I have made few changes in the code shared by you, what i have done is, Using blender software i have sliced the car obj for few diff parts like door, wheel, window, bonet etc and i have rearranged the whole car by adding the car parts in the code.
Now when i try to add some animation for each of the part, for example i want the door to open and close as usual as it does normally, but what is happening,the door part is taking car body as the center and it is rotating inwards in the given angle. how can i change this to make it work properly.
here is the code,import Qt3D.Core 2.0 import Qt3D.Render 2.0 import Qt3D.Input 2.0 import Qt3D.Extras 2.0 import QtQuick 2.5 Entity { id: carFrontLeftDoorEntity Mesh { id: carFrontLeftDoorMesh source: "qrc:/Meshes/Car_FrontLeftDoor.obj" } Transform { id: carFrontLeftDoorMeshTransform scale3D: Qt.vector3d(1.5,1.5,1.5) rotation: fromAxisAndAngle(Qt.vector3d(1, 0, 1), 30) rotationY: 0 SequentialAnimation { loops: Animation.Infinite running: true NumberAnimation { target: carFrontLeftDoorMeshTransform property: "rotationY" from: 0; to: 15 duration: 2000 easing.type: Easing.InOutQuad } } } PhongMaterial { id: carFrontLeftDoorMeshMaterial ambient: Qt.rgba( 0.0,0.0,0.0, 0.6 ) diffuse: Qt.rgba( 0.3, 0.0, 128, 0.2 ) } Entity { id: carFrontLeftDoorMeshtorusEntity components: [ carFrontLeftDoorMesh, carFrontLeftDoorMeshTransform, carFrontLeftDoorMeshMaterial ] } }
this i have added in the gearentity.qml as separate part.
Entity { id: gearEntity CarRawBody{} CarFrontGlass{} CarBonet{} CarDikki{} CarFrontLeftWheel{} CarRearLeftWheel{} CarFrontLeftDoor{} CarRearLeftDoor{} CarFrontLeftWindow{} CarRearLeftWindow{} }
-
hi, any updates on the above query ?
Thank you -
Hi! Sorry, that it already just too complex / incomplete for me to test and help with. Can you boil it down to a simpler question or a minimal runnable example that I - or anyone else who reads this - can use to reproduce the issue?
-
@Wieland ya sure.. i will reproduce it and post the example code..
Can you please guide in the following issue also
Thank you.
https://forum.qt.io/topic/84633/camera-rotation-around-a-mesh -
@Wieland Hi,
I have few doubts regarding rotating an object in 3D,
For ex, i have a car model, which i have sliced in blender, to get door as a separate object and whole car as a separate object, i have exported both as .obj files and i have assembled them in the code.
Now what is happening, when i try to rotate the door which is separate object using number animation, it is rotating with respect to car's origin not w.r.t to door's so, i want to rotate it based on it's own axis or origin. not w.r.t car's origin.
I have tried the following code but didn't get the excepted result.// Car front door // Mesh { id: carDoorMesh source: "qrc:/Meshes/CarFrontDoor_modified.obj" } PhongMaterial{ id: carDoorMaterial } Transform { id: carDoorTransform property real userAngle: 0.0 matrix: { var m= Qt.matrix4x4(); m.translate(Qt.vector3d(0.501096,1.5006,1.78036)) m.rotate(userAngle, Qt.vector3d(0,1,0)) m.translate(Qt.vector3d(-0.501096,-1.5006,-1.75036)) return m } NumberAnimation on rotationY { to: -45 duration: 1000 running: true } }
i got the respective values from blender.
Any guidance is appreciated
Thank you. -
@Naveen_D No offense, but this has nothing to do with Qt really but only with your lack of a basic understanding of how transformation matrices work. Seriously, get a book on linear algebra or you'll never get this to work.
-
@Wieland Hi,
If i want to give color animation for a particular part of the 3d object, here for eg, car tire or door etc how can i do that? i want to show color animation for car tire, from existing color to red and back to same color and once started, it should be running continuously.
I tried with the following code within transform, but didn't get the resultTransform{ id: frontRightDoorWheelTireTransform property real userAngle: 0.0 property real userDistance: 0.0 matrix: { var m= Qt.matrix4x4(); m.translate(0.57005,-0.462196,-2.27110) m.rotate(userAngle,Qt.vector3d(1,0,0)) m.translate(-0.57005,0.462196,2.27110) return m; } translation: Qt.vector3d(userDistance,0,0) ColorAnimation { id: frontRightDoorWheelTireAnimation from: "#171512" to: "red" duration: 2000 running: true } }
Thank you,
Naveen -
Any updates on the above query.. ?
Thank you. -
What makes you think that you could apply a color animation to a spatial transformation? That doesn't make any sense.
-
@Wieland Ok thank you...
- one more thing, i have a scene 3D function in which i am rendering my car entity, but i am not able to rotate it, when it runs the object is still at one place i am not able to move it. can you please guide me through this
here is the code
import QtQuick 2.5 import Qt3D.Core 2.0 import Qt3D.Render 2.0 import Qt3D.Input 2.0 import Qt3D.Extras 2.0 import QtQuick.Scene3D 2.0 import QtQuick.Window 2.2 import QtQuick.Controls 1.4 import QtQuick.Layouts 1.1 ApplicationWindow { id: appWindow visible: true width: Screen.width height: Screen.height Rectangle { width: parent.width height: parent.height color: "Transparent" // 3D scene Scene3D { id: scene3d anchors.fill: parent aspects: "input" Entity { id: root components: [ RenderSettings { activeFrameGraph: ForwardRenderer { clearColor: "#0D8EA2" camera: camera } }, InputSettings { } ] Camera { id: camera property real topPosition: 3.0 property real topPos: 0.5 projectionType: CameraLens.PerspectiveProjection fieldOfView: 25 nearPlane : 0.1 farPlane : 1000.0 position: Qt.vector3d( 15.0, topPosition, 20.5) upVector: Qt.vector3d(0.0,1.0,0.0) viewCenter: carBodySlicedTransform.translation } OrbitCameraController {camera: camera} // car Base Mesh{ id: baseMesh source: "qrc:/Meshes/CarBase.obj" } PhongAlphaMaterial{ id: baseMaterial diffuse: "#7bc0ce" alpha: 1.0 } Transform{ id: baseTransform translation: Qt.vector3d(0.0,-1.0,0.0) } // car Body sliced Mesh { id: carBodySlicedMesh source: "qrc:/Meshes/CarBodySliced.obj" } PhongAlphaMaterial { id: carBodySlicedMaterial shininess: 500.0 specular: "#62788d" diffuse: "#62788d" alpha: 1.0 } Transform { id: carBodySlicedTransform property real userAngle: 0.0 property real userDistance: 0.0 property real xAngleValue: 0.0 property real yAngleValue: 0.0 property real zAngleValue: 0.0 matrix: { var m = Qt.matrix4x4(); m.rotate(userAngle, Qt.vector3d(xAngleValue, yAngleValue, zAngleValue)); m.translate(Qt.vector3d(userDistance, 0, 0)); return m; } translation: Qt.vector3d(0.0,0.0,0.0) NumberAnimation on rotationY { id: carAnimation to: 360 duration: 5000 running: false } } // main car body entity Entity { id: carMainEntity components: [ carBodySlicedMesh, carBodySlicedMaterial, carBodySlicedTransform ] // car base entity Entity{ id: carBaseEntity components: [baseMesh, baseMaterial, baseTransform] } } } } }
- Also i want to know how to apply animation to zoom the car based certain condition for eg: if i want to show the engine part of the car then i want to zoom the car towards that particular part in show it using animation.
Thank you
- one more thing, i have a scene 3D function in which i am rendering my car entity, but i am not able to rotate it, when it runs the object is still at one place i am not able to move it. can you please guide me through this
-
Hi, can anyone guide me.. regarding above question
Thank you -
@Wieland Hi, how can i place the camera within the car, so that i can give the inside view of the car in 3D development environment.
Thank you -
hi is there any good tutorial for this ? thanks