Qt 3D:基本形状 C++ 示例
显示 Qt 3D 提供的四个基本形状,并为每个形状设置一个网格。
基本形状显示了 Qt 3D 提供的四个基本形状:一个环面、一个圆柱体、一个立方体和一个球体。示例还展示了如何将 Qt 3D 场景嵌入到小部件中并与其他小部件连接。
运行示例
要从 Qt Creator 中运行示例,请打开欢迎模式并从示例中选择示例。有关更多信息,请访问构建和运行示例。
设置环面网格
以环面为例,我们讲解如何设置环面网格。首先,我们实例化QTorusMesh
,然后设置网格特定的参数,对于环面来说包括半径、副半径以及圆环数和切片数。
m_torus = new Qt3DExtras::QTorusMesh(); m_torus->setRadius(1.0f); m_torus->setMinorRadius(0.4f); m_torus->setRings(100); m_torus->setSlices(20);
可以使用变换组件调整环面的大小和位置。我们创建比例、平移和旋转组件,并将它们添加到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));
要更改网格的漫反射颜色,我们创建一个QPhongMaterial
并设置其漫反射颜色。
Qt3DExtras::QPhongMaterial *torusMaterial = new Qt3DExtras::QPhongMaterial(); torusMaterial->setDiffuse(QColor(QRgb(0xbeb32b)));
最后一步是将环面添加到实体树中,我们通过创建一个带有父实体的QEntity
来实现,并将前面创建的网格、材质和变换组件添加到其中。
m_torusEntity = new Qt3DCore::QEntity(m_rootEntity); m_torusEntity->addComponent(m_torus); m_torusEntity->addComponent(torusMaterial); m_torusEntity->addComponent(torusTransform);
我们可以通过定义它是否有父实体来控制实体的可见性。也就是说,它是否是实体树的组成部分。
void SceneModifier::enableTorus(bool enabled) { m_torusEntity->setEnabled(enabled); }
© 2024 The Qt Company Ltd. 本文档中的文档贡献版权属于其各自的所有者。本提供的文档许可证根据由自由软件基金会发布的GNU 自由文档许可证版本 1.3条款。Qt 以及相关标志是 The Qt Company Ltd. 在芬兰和/或其他国家/地区注册的商标。所有其他商标均为其各自所有者的财产。