14 #ifndef hifi_GLTFSerializer_h
15 #define hifi_GLTFSerializer_h
20 #include <QtNetwork/QNetworkReply>
21 #include <hfm/ModelFormatLogging.h>
22 #include <hfm/HFMSerializer.h>
25 class GLTFSerializer :
public QObject,
public HFMSerializer {
28 MediaType getMediaType()
const override;
29 std::unique_ptr<hfm::Serializer::Factory> getFactory()
const override;
31 HFMModel::Pointer read(
const hifi::ByteArray& data,
const hifi::VariantHash& mapping,
const hifi::URL& url = hifi::URL())
override;
34 cgltf_data* _data {
nullptr};
36 QVector<hifi::ByteArray> _externalData;
38 glm::mat4 getModelTransform(
const cgltf_node& node);
39 bool getSkinInverseBindMatrices(std::vector<std::vector<float>>& inverseBindMatrixValues);
40 bool generateTargetData(cgltf_accessor *accessor,
float weight, QVector<glm::vec3>& returnVector);
42 bool buildGeometry(
HFMModel& hfmModel,
const hifi::VariantHash& mapping,
const hifi::URL& url);
44 bool readBinary(
const QString& url, cgltf_buffer &buffer);
46 void retriangulate(
const QVector<int>& in_indices,
const QVector<glm::vec3>& in_vertices,
47 const QVector<glm::vec3>& in_normals, QVector<int>& out_indices,
48 QVector<glm::vec3>& out_vertices, QVector<glm::vec3>& out_normals);
50 std::tuple<bool, hifi::ByteArray> requestData(hifi::URL& url);
51 hifi::ByteArray requestEmbeddedData(
const QString& url);
53 QNetworkReply* request(hifi::URL& url,
bool isTest);
55 void setHFMMaterial(HFMMaterial& hfmMat,
const cgltf_material& material);
56 HFMTexture getHFMTexture(
const cgltf_texture *texture);
The runtime model format.
Definition: HFM.h:302
A texture map.
Definition: HFM.h:132