16#ifndef QGSPOINTCLOUDLAYERCHUNKLOADER_P_H
17#define QGSPOINTCLOUDLAYERCHUNKLOADER_P_H
39#include <QFutureWatcher>
40#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
41#include <Qt3DRender/QGeometry>
42#include <Qt3DRender/QBuffer>
44#include <Qt3DCore/QGeometry>
45#include <Qt3DCore/QBuffer>
47#include <Qt3DRender/QMaterial>
59class QgsPointCloudLayerChunkLoaderFactory :
public QgsChunkLoaderFactory
70 double zValueScale,
double zValueOffset,
int pointBudget );
73 virtual QgsChunkLoader *createChunkLoader( QgsChunkNode *node )
const override;
74 virtual QgsChunkNode *createRootNode()
const override;
75 virtual QVector<QgsChunkNode *> createChildren( QgsChunkNode *node )
const override;
76 virtual int primitivesCount( QgsChunkNode *node )
const override;
80 std::unique_ptr< QgsPointCloud3DSymbol > mSymbol;
81 double mZValueScale = 1.0;
82 double mZValueOffset = 0;
83 int mPointBudget = 1000000;
84 bool mTriangulate =
false;
97class QgsPointCloudLayerChunkLoader :
public QgsChunkLoader
107 QgsPointCloudLayerChunkLoader(
const QgsPointCloudLayerChunkLoaderFactory *factory, QgsChunkNode *node, std::unique_ptr< QgsPointCloud3DSymbol > symbol,
109 ~QgsPointCloudLayerChunkLoader()
override;
111 virtual void cancel()
override;
112 virtual Qt3DCore::QEntity *createEntity( Qt3DCore::QEntity *parent )
override;
115 const QgsPointCloudLayerChunkLoaderFactory *mFactory;
116 std::unique_ptr<QgsPointCloud3DSymbolHandler> mHandler;
118 QFutureWatcher<void> *mFutureWatcher =
nullptr;
132class QgsPointCloudLayerChunkedEntity :
public QgsChunkedEntity
137 double zValueScale,
double zValueOffset,
int pointBudget );
139 QVector<QgsRayCastingUtils::RayHit> rayIntersection(
const QgsRayCastingUtils::Ray3D &ray,
const QgsRayCastingUtils::RayCastContext &context )
const override;
141 ~QgsPointCloudLayerChunkedEntity();
Encapsulates the render context for a 3D point cloud rendering operation.
Represents a indexed point clouds data in octree.
A rectangle specified with double values.