64class CORE_EXPORT QgsGltfUtils
81 static bool accessorToMapCoordinates(
82 const tinygltf::Model &model,
84 const QgsMatrix4x4 &tileTransform,
85 const QgsCoordinateTransform *ecefToTargetCrs,
86 const QgsVector3D &tileTranslationEcef,
87 const QMatrix4x4 *nodeTransform,
97 enum class ResourceType
109 static ResourceType imageResourceType(
const tinygltf::Model &model,
int index );
119 static QImage extractEmbeddedImage(
const tinygltf::Model &model,
int index );
129 static QString linkedImagePath(
const tinygltf::Model &model,
int index );
136 static std::unique_ptr<QMatrix4x4> parseNodeTransform(
const tinygltf::Node &node );
148 static bool loadImageDataWithQImage(
149 tinygltf::Image *image,
const int image_idx, std::string *err, std::string *warn,
int req_width,
int req_height,
const unsigned char *bytes,
int size,
void *user_data
155 static bool extractTextureCoordinates(
const tinygltf::Model &model,
int accessorIndex, QVector<float> &x, QVector<float> &y );
162 static bool loadGltfModel(
const QByteArray &data, tinygltf::Model &model, QString *errors, QString *warnings );
172 static std::size_t sourceSceneForModel(
const tinygltf::Model &model,
bool &ok );
179 struct CORE_EXPORT I3SNodeContext
182 void initFromTile(
const QgsTiledSceneTile &tile,
const QgsCoordinateReferenceSystem &layerCrs,
const QgsCoordinateReferenceSystem &sceneCrs,
const QgsCoordinateTransformContext &transformContext );
188 QVariantMap materialInfo;
195 bool isGlobalMode =
false;
201 QgsCoordinateTransform datasetToSceneTransform;
207 QgsVector3D nodeCenterEcef;
224 static bool loadDracoModel(
const QByteArray &data,
const I3SNodeContext &context, tinygltf::Model &model, QString *errors =
nullptr );
237 static int loadMaterialFromMetadata(
const QVariantMap &materialInfo, tinygltf::Model &model );
243 static bool writeGltfModel(
const tinygltf::Model &model,
const QString &outputFilename );
A simple 4x4 matrix implementation useful for transformation in 3D space.
Represents an individual tile from a tiled scene data source.
A 3D vector (similar to QVector3D) with the difference that it uses double precision instead of singl...