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);
}

示例项目 @ code.qt.io

© 2024 The Qt Company Ltd. 本文档中的文档贡献版权属于其各自的所有者。本提供的文档许可证根据由自由软件基金会发布的GNU 自由文档许可证版本 1.3条款。Qt 以及相关标志是 The Qt Company Ltd. 在芬兰和/或其他国家/地区注册的商标。所有其他商标均为其各自所有者的财产。