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