Qt Quick 3D - Robot Arm Example

 // Copyright (C) 2022 The Qt Company Ltd.
 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause

 import QtQuick
 import QtQuick3D

 Node {
     id: rootNode
     property int rotation1
     property int rotation2
     property int rotation3
     property int rotation4
     property int clawsAngle

     readonly property alias hand_position: hand_grab_t.scenePosition
     readonly property alias hand_hinge_position: hand_hinge.scenePosition
     readonly property alias arm_position: arm.scenePosition
     readonly property alias forearm_position: forearm.scenePosition
     readonly property alias root_position: root.scenePosition

     Model {
         id: base
         scale.x: 100
         scale.y: 100
         scale.z: 100
         source: "meshes/base.mesh"
         eulerRotation.x: -90

         DefaultMaterial {
             id: steel_material
             diffuseColor: "#ff595959"
         }

         DefaultMaterial {
             id: plastic_material
         }
         materials: [steel_material, plastic_material]

         Model {
             id: root
             y: -5.96047e-08
             z: 1.0472
             eulerRotation.z: rotation4
             source: "meshes/root.mesh"

             DefaultMaterial {
                 id: plastic_color_material
                 diffuseColor: "#41cd52"
             }
             materials: [plastic_material, plastic_color_material, steel_material]

             Model {
                 id: forearm
                 x: 5.32907e-15
                 y: -0.165542
                 z: 1.53472
                 eulerRotation.x: rotation3
                 source: "meshes/forearm.mesh"
                 materials: [plastic_material, steel_material]

                 Model {
                     id: arm
                     x: -7.43453e-07
                     y: 0.667101
                     z: 2.23365
                     eulerRotation.x: rotation2
                     source: "meshes/arm.mesh"

                     DefaultMaterial {
                         id: plastic_qt_material
                         diffuseMap: Texture {
                             source: "maps/qt.png"
                             pivotU: 0.5
                             pivotV: 0.5
                             generateMipmaps: true
                             mipFilter: Texture.Linear
                         }
                     }
                     materials: [plastic_material, plastic_qt_material, steel_material]

                     Model {
                         id: hand_hinge
                         x: 7.43453e-07
                         y: 0.0635689
                         z: 2.12289
                         eulerRotation.x: rotation1
                         source: "meshes/hand_hinge.mesh"
                         materials: [plastic_material]

                         Model {
                             id: hand
                             x: 3.35649e-06
                             y: 2.38419e-07
                             z: 0.366503
                             source: "meshes/hand.mesh"
                             materials: [plastic_material, steel_material]

                             Model {
                                 id: hand_grab_t_hinge_2
                                 x: -9.5112e-07
                                 y: 0.323057
                                 z: 0.472305
                                 eulerRotation: hand_grab_t_hinge_1.eulerRotation
                                 source: "meshes/hand_grab_t_hinge_2.mesh"
                                 materials: [steel_material]
                             }

                             Model {
                                 id: hand_grab_t_hinge_1
                                 x: -9.3061e-07
                                 y: 0.143685
                                 z: 0.728553
                                 eulerRotation.x: clawsAngle * -1
                                 source: "meshes/hand_grab_t_hinge_1.mesh"
                                 materials: [steel_material]

                                 Model {
                                     id: hand_grab_t
                                     x: -2.42588e-06
                                     y: -0.0327932
                                     z: 0.414757
                                     eulerRotation.x: hand_grab_t_hinge_1.eulerRotation.x * -1
                                     source: "meshes/hand_grab_t.mesh"
                                     materials: [plastic_color_material, steel_material]
                                 }
                             }

                             Model {
                                 id: hand_grab_b_hinge_1
                                 x: -9.38738e-07
                                 y: -0.143685
                                 z: 0.728553
                                 eulerRotation.x: clawsAngle
                                 source: "meshes/hand_grab_b_hinge_1.mesh"
                                 materials: [steel_material]

                                 Model {
                                     id: hand_grab_b
                                     x: -2.41775e-06
                                     y: 0.0327224
                                     z: 0.413965
                                     eulerRotation.x: hand_grab_b_hinge_1.eulerRotation.x * -1
                                     source: "meshes/hand_grab_b.mesh"
                                     materials: [plastic_color_material, steel_material]
                                 }
                             }

                             Model {
                                 id: hand_grab_b_hinge_2
                                 x: -9.5112e-07
                                 y: -0.323058
                                 z: 0.472305
                                 eulerRotation: hand_grab_b_hinge_1.eulerRotation
                                 source: "meshes/hand_grab_b_hinge_2.mesh"
                                 materials: [steel_material]
                             }
                         }
                     }
                 }
             }
         }
     }
 }