Qt 3D: Basic Shapes C++ Example¶
Shows four basic shapes that Qt 3D offers and sets up a mesh for each of them.
Basic Shapes shows four basic shapes that Qt 3D offers: a torus, a cylinder, a cube, and a sphere. The example also shows how to embed a Qt 3D scene into a widget and connect with other widgets.
Running the Example¶
To run the example from Qt Creator , open the Welcome mode and select the example from Examples. For more information, visit Building and Running an Example.
Setting Up a Torus Mesh¶
As an example, we go through how to set up a torus mesh. First, we instantiate the
QTorusMesh, and then we set the mesh specific parameters, which for torus are radius, minor radius, and the number of rings and slices.
m_torus = Qt3DExtras.QTorusMesh() m_torus.setRadius(1.0f) m_torus.setMinorRadius(0.4f) m_torus.setRings(100) m_torus.setSlices(20)
The size and position of the torus can be adjusted with transform components. We create scale, translation, and rotation components and add them into the
Qt3DCore.QTransform torusTransform = 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))
To change the diffuse color of the mesh, we create a
QPhongMaterial and set its diffuse color.
Qt3DExtras.QPhongMaterial torusMaterial = Qt3DExtras.QPhongMaterial() torusMaterial.setDiffuse(QColor(QRgb(0xbeb32b)))
The final step is to add the torus into an entity tree, and we do that by creating a
QEntity with a parent entity and adding the previously created mesh, material, and transform components into it.
m_torusEntity = Qt3DCore.QEntity(m_rootEntity) m_torusEntity.addComponent(m_torus) m_torusEntity.addComponent(torusMaterial) m_torusEntity.addComponent(torusTransform)
We can control the visibility of the entity by defining whether it has a parent or not. That is, whether it is part of an entity tree or not.
def enableTorus(self, enabled): m_torusEntity.setEnabled(enabled)
© 2022 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.