Qt 6 comienza a anunciarse de manera clara y los detalles de esta versión son precisos, en particular a nivel de 3D. Pues en un anunció la gente que esta cargo del desarrollo dio a conocer una nueva API para 3D en Qt Quick: Qt Quick 3D.
Éste competiría con Qt 3D, un motor 3D ya completo integrado con Qt, incluso si ambos usarían la misma abstracción. La principal diferencia entre Qt Quick 3D y Qt 3D sería el nivel de abstracción, siendo Qt Quick 3D más abstracto. El desarrollo de Qt 3D debería continuar, particularmente en términos de rendimiento. Sin embargo, Qt Quick 3D debería reemplazar el motor de renderizado de Qt 3D Studio: Qt Quick 3D está construido sobre esta base. Se proporcionarán herramientas para facilitar la transición a Qt Quick 3D.
Sobre Qt Quick 3D
Para Qt 6, Qt Quick continuará usando un gráfico para renderizar, pero tendrá extensiones para administrar 3D, estas extensiones se llaman Qt Quick 3D.
Su objetivo principal es limitar las dificultades de sincronización entre las partes 2D y 3D de una interfaz: por el momento, ambas son manejadas por motores de renderizado completamente diferentes que no tienen una forma fácil de sincronizar, lo que puede dar una representación bastante extraña para animaciones.
Además, el rendimiento se ve afectado por el uso de dos motores diferentes que no están especialmente diseñados para funcionar juntos. Con Qt Quick 3D, la situación debería ser más simple: un motor de ejecución, Qt Quick, un gráfico de escena, que combina 2D y 3D, una interfaz de edición de interfaz, Qt Design Studio.
La API Qt Quick 3D debe seguir los mismos principios que las API Qt Quick: debe ser fácil de usar, de alto rendimiento, sin tener que comprender los detalles de la implementación del motor de renderizado.
Qt Quick 3D no estará destinado a aplicaciones 3D complejas y específicas, sino a la mayoría de las interfaces gráficas, aquellas que combinan 2D y 3D. (Eventualmente, una parte cada vez más grande de la API de representación debería estar visible, lo que permitirá usos más avanzados).
Qt Quick 3D ya se podrá utilizar con Qt 5, aunque no en su forma final (el La integración completa con Qt Quick requiere algunos cambios en la compatibilidad binaria, solo sucederá con Qt 6): al principio, solo estará disponible una API QML, pero una API C ++ debería seguir rápidamente.
Ademas se ofrecerá una serie de componentes de muy alto nivel para definir una vista del contenido 3D: luces, cámaras, materiales para renderizar, pero no se verán detalles de la implementación.
Por lo tanto, la API debe ser muy simple de usar, incluso si tiene posibilidades limitadas: no será posible adaptar con mucha precisión la forma de mostrar una escena 3D, a diferencia de Qt 3D. En particular, el único motor de renderizado actualmente disponible para Qt Quick 3D se basa en un solo paso hacia adelante (nuevamente, a diferencia de Qt 3D).
Aún así, Qt Quick 3D ya tiene una serie de componentes primitivos: Node será el equivalente 3D de Item para Qt Quick.
La cámara manejará la transformación de una escena 3D en una superficie 2D, con una posición 3D y una proyección.
Mientras que el componente View3D es el único que hereda la clase QQuickItem, en C ++, es el único que se puede mostrar en una escena Qt Quick.
La escena 3D se puede definir como o fuera del subcomponente de View3D; así, una escena puede ser visible desde un único View3D o tener múltiples puntos de vista. View3D representa el punto de vista de un componente de la cámara.
Por el momento, Qt Quick 3D no está integrado con Qt, el módulo correspondiente debe descargarse por separado. Qt 5.12 es la versión mínima necesaria.
El módulo debe integrarse con Qt 5.14, como una vista previa de tecnología, con soporte completo de Qt 5.15. Por el momento, el nuevo motor de renderizado no se usa para todas las aplicaciones.
Fuente: blog.qt.io | ubunlog