En esta página

Qt 3D: Ejemplo C++ de formas básicas

Muestra cuatro formas básicas que ofrece Qt 3D y configura una malla para cada una de ellas.

Captura de pantalla con cuatro objetos 3D: un toroide, un cilindro, un cuboide y una esfera.

Basic Shapes muestra cuatro formas básicas que ofrece Qt 3D: un toroide, un cilindro, un cubo y una esfera. El ejemplo también muestra cómo incrustar una escena de Qt 3D en un widget y conectar con otros widgets.

Ejecución del ejemplo

Para ejecutar el ejemplo desde Qt Creatorabra el modo Welcome y seleccione el ejemplo de Examples. Para más información, consulta Qt Creator: Tutorial: Construir y ejecutar.

Configuración de una malla toroidal

A modo de ejemplo, vamos a ver cómo configurar una malla toroidal. Primero, instanciamos el QTorusMesh, y luego establecemos los parámetros específicos de la malla, que para torus son radio, radio menor, y el número de anillos y rodajas.

m_torus = new Qt3DExtras::QTorusMesh();
m_torus->setRadius(1.0f);
m_torus->setMinorRadius(0.4f);
m_torus->setRings(100);
m_torus->setSlices(20);

El tamaño y la posición del toro pueden ajustarse con componentes de transformación. Creamos componentes de escala, traslación y rotación y los añadimos al componente QTransform.

Qt3DCore::QTransform *torusTransform = new Qt3DCore::QTransform();
torusTransform->setScale(2.0f);
torusTransform->setRotation(QQuaternion::fromAxisAndAngle(QVector3D(0.0f, 1.0f, 0.0f), 25.0f));
torusTransform->setTranslation(QVector3D(5.0f, 4.0f, 0.0f));

Para cambiar el color difuso de la malla, creamos un QPhongMaterial y establecemos su color difuso.

Qt3DExtras::QPhongMaterial *torusMaterial = new Qt3DExtras::QPhongMaterial();
torusMaterial->setDiffuse(QColor(QRgb(0xbeb32b)));

El paso final es añadir el toro a un árbol de entidades, y lo hacemos creando un QEntity con una entidad padre y añadiendo los componentes de malla, material y transformación creados anteriormente.

m_torusEntity = new Qt3DCore::QEntity(m_rootEntity);
m_torusEntity->addComponent(m_torus);
m_torusEntity->addComponent(torusMaterial);
m_torusEntity->addComponent(torusTransform);

Podemos controlar la visibilidad de la entidad definiendo si tiene un padre o no. Es decir, si forma parte de un árbol de entidades o no.

void SceneModifier::enableTorus(bool enabled)
{
    m_torusEntity->setEnabled(enabled);
}

Proyecto de ejemplo @ code.qt.io

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.