Qt3D Как переместить ось вращения в центр объекта?

Я работаю над простым 3D-приложением, в котором я вращаю 3D-объект на основе значений Quaternion, которые я считываю с датчика MPU6050.

В качестве ссылки я использовал приведенный ниже код из примера simple-qml:

Entity {
id: sceneRoot

property real x: 0.5
property real y: -0.5
property real z: 0.5
property real w: 0.5

onWChanged: console.log("3W: "+w)
onXChanged: console.log("3X: "+x)
onYChanged: console.log("3Y: "+y)
onZChanged: console.log("3Z: "+z)


Camera {
    id: camera
    projectionType: CameraLens.PerspectiveProjection
    fieldOfView: 90
    nearPlane : 0.1
    farPlane : 100
    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 { }
]

PhongMaterial {
    id: material
}

Mesh
{
    id: arrowMesh
    source: "/3dObj/resources/3dObj/arrow.obj"

}

Transform
{
    id: arrowTransform

    //Default/Reset position
    //Arrow head facing towards the screen
    //x:90,y:90,z:0
    property int eXAngle: 90
    property int eYAngle: 90
    property int eZAngle: 0

    rotation:
    {
        //MPU6050 gives values in quaternion
        Qt.quaternion(sceneRoot.w,sceneRoot.x,sceneRoot.y,sceneRoot.z)


    }
    scale: 0.05

}
Entity {
    id: sphereEntity
    components: [ arrowMesh, material, arrowTransform ]

}
}

Проблема, с которой я сталкиваюсь, заключается в том, что вращение происходит вокруг головки стрелки (трехмерного объекта) вместо центра стрелки, а также объекта для определенных значений кватерниона увеличивается.

Какие вещи мне нужно изменить, чтобы я мог вращать объект в одиночку вокруг его центра без каких-либо эффектов масштабирования?

Также я попробовал три типа projectionType.

Мне нужно, чтобы 3D работал так, как показано на ссылке ниже: пример Arduino MPU6050

0 ответов

Другие вопросы по тегам