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. Animation, 3D development
Qt 6.11 is out! See what's new in the release blog

Animation, 3D development

Scheduled Pinned Locked Moved Unsolved QML and Qt Quick
30 Posts 4 Posters 17.0k Views 3 Watching
  • 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.
  • ? A Former User

    Hi!

    @Naveen_D said in Animation, 3D development:

    can anyone help me how to create and .obj object

    You don't do that yourself but either buy ready-made models or pay a digital artist to create one specifically for you. Google "buy 3d models".

    how to load it and display in Qml?

    See Mesh QML Type,

    Mesh {
        id: mesh
        source: "cars/BMW/i8.obj"
    }
    
    Naveen_DN Offline
    Naveen_DN Offline
    Naveen_D
    wrote on last edited by
    #8
    This post is deleted!
    ? 1 Reply Last reply
    0
    • Naveen_DN Naveen_D

      This post is deleted!

      ? Offline
      ? Offline
      A Former User
      wrote on last edited by
      #9

      @Naveen_D said in Animation, 3D development:

      is there any open source from where i can take 3D models

      Maybe use google search?

      1 Reply Last reply
      0
      • mrjjM Offline
        mrjjM Offline
        mrjj
        Lifetime Qt Champion
        wrote on last edited by
        #10

        I used from this place
        https://www.turbosquid.com/Search/3D-Models/free/obj

        Maybe this one :)
        https://www.turbosquid.com/3d-models/3d-mercedes-benz-sls-amg-model/644946

        Naveen_DN 1 Reply Last reply
        0
        • ? A Former User

          Hi!

          @Naveen_D said in Animation, 3D development:

          can anyone help me how to create and .obj object

          You don't do that yourself but either buy ready-made models or pay a digital artist to create one specifically for you. Google "buy 3d models".

          how to load it and display in Qml?

          See Mesh QML Type,

          Mesh {
              id: mesh
              source: "cars/BMW/i8.obj"
          }
          
          Naveen_DN Offline
          Naveen_DN Offline
          Naveen_D
          wrote on last edited by
          #11

          @Wieland i tried with the following code:

          import Qt3D.Core 2.0
          import Qt3D.Render 2.0
          import Qt3D.Extras 2.0
          
          
          Mesh {
              id: mesh
              source: "qrc:/seat_leon.obj"
          }
          
          

          but didn't get the output. is there anything else i need to do for getting the output ?

          1 Reply Last reply
          0
          • mrjjM mrjj

            I used from this place
            https://www.turbosquid.com/Search/3D-Models/free/obj

            Maybe this one :)
            https://www.turbosquid.com/3d-models/3d-mercedes-benz-sls-amg-model/644946

            Naveen_DN Offline
            Naveen_DN Offline
            Naveen_D
            wrote on last edited by
            #12

            @mrjj ya i got that thank you

            1 Reply Last reply
            0
            • ? Offline
              ? Offline
              A Former User
              wrote on last edited by
              #13

              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()
                  }
              }
              
              Naveen_DN S 2 Replies Last reply
              3
              • ? A Former User

                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()
                    }
                }
                
                Naveen_DN Offline
                Naveen_DN Offline
                Naveen_D
                wrote on last edited by
                #14

                @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

                1 Reply Last reply
                0
                • ? Offline
                  ? Offline
                  A Former User
                  wrote on last edited by
                  #15

                  That's just how FirstPersonCameraController works. You could either implement your own camera controller or - instead of moving the camera - dynamically change gearTransform.

                  Naveen_DN 3 Replies Last reply
                  3
                  • ? A Former User

                    That's just how FirstPersonCameraController works. You could either implement your own camera controller or - instead of moving the camera - dynamically change gearTransform.

                    Naveen_DN Offline
                    Naveen_DN Offline
                    Naveen_D
                    wrote on last edited by
                    #16
                    This post is deleted!
                    1 Reply Last reply
                    0
                    • ? A Former User

                      That's just how FirstPersonCameraController works. You could either implement your own camera controller or - instead of moving the camera - dynamically change gearTransform.

                      Naveen_DN Offline
                      Naveen_DN Offline
                      Naveen_D
                      wrote on last edited by
                      #17

                      @Wieland

                      You could either implement your own camera controller

                      How i can develop my own camera controller is there any example for this ?

                      1 Reply Last reply
                      0
                      • ? A Former User

                        That's just how FirstPersonCameraController works. You could either implement your own camera controller or - instead of moving the camera - dynamically change gearTransform.

                        Naveen_DN Offline
                        Naveen_DN Offline
                        Naveen_D
                        wrote on last edited by
                        #18

                        @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{}
                        }
                        
                        1 Reply Last reply
                        0
                        • Naveen_DN Offline
                          Naveen_DN Offline
                          Naveen_D
                          wrote on last edited by
                          #19

                          hi, any updates on the above query ?
                          Thank you

                          1 Reply Last reply
                          0
                          • ? Offline
                            ? Offline
                            A Former User
                            wrote on last edited by
                            #20

                            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?

                            Naveen_DN 2 Replies Last reply
                            0
                            • ? A Former User

                              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?

                              Naveen_DN Offline
                              Naveen_DN Offline
                              Naveen_D
                              wrote on last edited by
                              #21

                              @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

                              1 Reply Last reply
                              0
                              • ? A Former User

                                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?

                                Naveen_DN Offline
                                Naveen_DN Offline
                                Naveen_D
                                wrote on last edited by
                                #22

                                @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.

                                ? 1 Reply Last reply
                                0
                                • Naveen_DN Naveen_D

                                  @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.

                                  ? Offline
                                  ? Offline
                                  A Former User
                                  wrote on last edited by
                                  #23

                                  @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.

                                  Naveen_DN 1 Reply Last reply
                                  1
                                  • ? A Former User

                                    @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.

                                    Naveen_DN Offline
                                    Naveen_DN Offline
                                    Naveen_D
                                    wrote on last edited by
                                    #24

                                    @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 result

                                    Transform{
                                                        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

                                    1 Reply Last reply
                                    0
                                    • Naveen_DN Offline
                                      Naveen_DN Offline
                                      Naveen_D
                                      wrote on last edited by
                                      #25

                                      Any updates on the above query.. ?
                                      Thank you.

                                      1 Reply Last reply
                                      0
                                      • ? Offline
                                        ? Offline
                                        A Former User
                                        wrote on last edited by
                                        #26

                                        What makes you think that you could apply a color animation to a spatial transformation? That doesn't make any sense.

                                        Naveen_DN 2 Replies Last reply
                                        1
                                        • ? A Former User

                                          What makes you think that you could apply a color animation to a spatial transformation? That doesn't make any sense.

                                          Naveen_DN Offline
                                          Naveen_DN Offline
                                          Naveen_D
                                          wrote on last edited by Naveen_D
                                          #27

                                          @Wieland Ok thank you...

                                          1. 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]
                                                              }
                                                          }
                                                      }
                                                  }
                                              }
                                          
                                          1. 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
                                          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