16#ifndef QGSGLTF3DUTILS_H
17#define QGSGLTF3DUTILS_H
45#define TINYGLTF_NO_STB_IMAGE
46#define TINYGLTF_NO_STB_IMAGE_WRITE
68class _3D_EXPORT QgsGltf3DUtils
72 struct EntityTransform
75 QgsVector3D chunkOriginTargetCrs;
77 QgsMatrix4x4 tileTransform;
79 const QgsCoordinateTransform *ecefToTargetCrs =
nullptr;
84 double zValueScale = 1;
85 double zValueOffset = 0;
101 static Qt3DCore::QEntity *gltfToEntity(
const QByteArray &data,
const EntityTransform &transform,
const QString &baseUri,
const Qgs3DRenderContext &context, QStringList *errors =
nullptr );
107 static Qt3DCore::QEntity *parsedGltfToEntity( tinygltf::Model &model,
const QgsGltf3DUtils::EntityTransform &transform, QString baseUri,
const Qgs3DRenderContext &context, QStringList *errors );
113 struct InstanceChunkTransform
115 QVector3D translation;
116 QQuaternion rotation;
132 static QMatrix3x3 ecefToTargetCrsRotationCorrection(
const QgsVector3D &ecefPos,
const QgsVector3D &mapPos,
const QgsCoordinateTransform &ecefToTargetCrs );
138 static QVector<InstanceChunkTransform> tileSpaceToChunkLocal(
const QgsGltfUtils::InstancedPrimitive &primitive,
const EntityTransform &transform );
144 static void createInstanceBuffer( Qt3DCore::QGeometry *geometry,
const QVector<InstanceChunkTransform> &instances );
150 static QVector<Qt3DCore::QEntity *> createInstancedEntities(
151 tinygltf::Model &model,
const QVector<QgsGltfUtils::InstancedPrimitive> &primitives,
const EntityTransform &transform,
const QString &baseUri,
const QgsMaterialContext &context, QStringList *errors
166 static std::vector<QgsMeshNodeData> buildGltfGeometries(
const QString &filePath,
const QgsMaterialContext &context, QStringList *errors =
nullptr, Qt3DCore::QNode *bufferParent =
nullptr );
Rendering context for preparation of 3D entities.
Context settings for a material.