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