Q3DScatter --> 如何将不同颜色的点添加到点云

Q3DScatter --> How to add a point with a different color to a point cloud

本文关键字:颜色 添加 gt Q3DScatter      更新时间:2023-10-16

我在QT中写了一个程序,该程序可通过使用Q3DSCATTER可视化处理的PointCloud(3D点(。现在,我想添加具有不同颜色的计算出的关键点。那可能吗?任何男孩是否有一些经验?在下面,您可以看到代码的一部分,其中点云被添加到数据数组中。

QScatterDataArray * dataArray = new QScatterDataArray;
dataArray->resize(vector_seg_x->size());
QScatterDataItem * ptrToDataArray = &dataArray->first();
for(int i = 0; i < vector_seg_x->size();i++){
    ptrToDataArray->setPosition(QVector3D(
                                    (double)(iter_seg_x[i]),
                                    (double)(iter_seg_y[i]),
                                    (double)(iter_seg_z[i])));
    ptrToDataArray++;
}
m_graph_seg->seriesList().at(0)->dataProxy()->resetArray(dataArray);

您只能为整个点列表设置颜色/渐变:

Q3DScatter scatter;
scatter.setFlags(scatter.flags() ^ Qt::FramelessWindowHint);
scatter.addSeries(new QScatter3DSeries);
scatter.addSeries(new QScatter3DSeries);
{
    QScatterDataArray *data = new QScatterDataArray;
    *data << QVector3D(0.5f, 0.5f, 0.5f) << QVector3D(-0.3f, -0.5f, -0.4f) << QVector3D(0.0f, -0.3f, 0.2f);
    scatter.seriesList().at(0)->dataProxy()->resetArray(data);
    QLinearGradient linearGrad(QPointF(100, 100), QPointF(200, 200));
    linearGrad.setColorAt(0, Qt::blue);
    linearGrad.setColorAt(1, Qt::red);
    scatter.seriesList().at(0)->setBaseGradient(linearGrad);
    scatter.seriesList().at(0)->setColorStyle(Q3DTheme::ColorStyle::ColorStyleObjectGradient);
}
{
    QScatterDataArray *data = new QScatterDataArray;
    *data << QVector3D(0.f, 0.f, 0.f);
    scatter.seriesList().at(1)->dataProxy()->resetArray(data);
    scatter.seriesList().at(1)->setBaseColor(Qt::green);
}
scatter.show();