16#ifndef QGSGLTF3DUTILS_H
17#define QGSGLTF3DUTILS_H
40#define TINYGLTF_NO_STB_IMAGE
41#define TINYGLTF_NO_STB_IMAGE_WRITE
61class _3D_EXPORT QgsGltf3DUtils
65 struct EntityTransform
68 QgsVector3D chunkOriginTargetCrs;
70 QgsMatrix4x4 tileTransform;
72 const QgsCoordinateTransform *ecefToTargetCrs =
nullptr;
77 double zValueScale = 1;
78 double zValueOffset = 0;
94 static Qt3DCore::QEntity *gltfToEntity(
const QByteArray &data,
const EntityTransform &transform,
const QString &baseUri,
const Qgs3DRenderContext &context, QStringList *errors =
nullptr );
100 static Qt3DCore::QEntity *parsedGltfToEntity( tinygltf::Model &model,
const QgsGltf3DUtils::EntityTransform &transform, QString baseUri,
const Qgs3DRenderContext &context, QStringList *errors );
106 struct InstanceChunkTransform
108 QVector3D translation;
109 QQuaternion rotation;
125 static QMatrix3x3 ecefToTargetCrsRotationCorrection(
const QgsVector3D &ecefPos,
const QgsVector3D &mapPos,
const QgsCoordinateTransform &ecefToTargetCrs );
131 static QVector<InstanceChunkTransform> tileSpaceToChunkLocal(
const QgsGltfUtils::InstancedPrimitive &primitive,
const EntityTransform &transform );
137 static void createInstanceBuffer( Qt3DCore::QGeometry *geometry,
const QVector<InstanceChunkTransform> &instances );
143 static QVector<Qt3DCore::QEntity *> createInstancedEntities(
144 tinygltf::Model &model,
const QVector<QgsGltfUtils::InstancedPrimitive> &primitives,
const EntityTransform &transform,
const QString &baseUri,
const QgsMaterialContext &context, QStringList *errors
Rendering context for preparation of 3D entities.
Context settings for a material.