Qt3D girar la cámara alrededor de la malla

Recientemente comencé a aprender Qt / QML / C ++ y tratar de construir una escena 3D muy básica para rotar la cámara alrededor de un objeto de malla.

Me resulta muy difícil seguir los ejemplos y me parece que la documentación no proporciona instrucciones útiles. Tampoco parece haber muchos tutoriales, quizás estoy buscando en los lugares equivocados.

main.cpp

#include  #include  #include  #include  int main(int argc, char **argv) { QGuiApplication app(argc, argv); Qt3DExtras::Quick::Qt3DQuickWindow view; // Expose the window as a context property so we can set the aspect ratio view.engine()->qmlEngine()->rootContext()->setContextProperty("_window", &view); view.setSource(QUrl("qrc:/main.qml")); view.setWidth(800); view.setHeight(600); view.show(); return app.exec(); } 

main.qml

 import Qt3D.Core 2.0 import Qt3D.Render 2.0 import Qt3D.Input 2.0 import Qt3D.Extras 2.0 Entity { id: sceneRoot Camera { id: camera projectionType: CameraLens.PerspectiveProjection fieldOfView: 25 aspectRatio: _window.width / _window.height nearPlane : 0.1 farPlane : 1000.0 position: Qt.vector3d( 0, 0.0, 20.0 ) upVector: Qt.vector3d( 0.0, 1.0, 0.0 ) viewCenter: Qt.vector3d( 0.0, 0.0, 0.0 ) } OrbitCameraController { camera: camera } components: [ RenderSettings { activeFrameGraph: ForwardRenderer { clearColor: Qt.rgba(0, 0.5, 1, 1) camera: camera } }, InputSettings { } ] PhongMaterial { id: carMaterial } Mesh { id: carMesh source: "resources/aventador.obj" } Entity { id: carEntity components: [ carMesh, carMaterial ] } } 

¿Cómo consigo que la cámara gire alrededor del objeto de malla?

El OrbitCameraController permite mover la cámara a lo largo de una ruta orbital. Para hacer que gire alrededor de la malla, puede establecer el viewCenter de la cámara en la posición de la malla (traducción de la transformación de la entidad que contiene la malla) y usar su teclado / ratón para rotarla.

Así que añade:

 Transform{ id: carTransform translation: Qt.vector3d(5.0, 5.0, 5.0) //random values, choose your own } 

y agregar la transformación a los componentes de la entidad. Cambia el viewCenter de la cámara a

 viewCenter: carTransform.translation