diff --git a/src/meshlabplugins/io_gltf/io_gltf.cpp b/src/meshlabplugins/io_gltf/io_gltf.cpp index 28b671573..3e8d49909 100644 --- a/src/meshlabplugins/io_gltf/io_gltf.cpp +++ b/src/meshlabplugins/io_gltf/io_gltf.cpp @@ -166,9 +166,9 @@ void loadMesh( throw MLException("File positions are not 3D coordinates!"); - const tinygltf::BufferView posbw = model.bufferViews[posAccessor.bufferView]; + const tinygltf::BufferView& posbw = model.bufferViews[posAccessor.bufferView]; const std::vector& posdata = model.buffers[posbw.buffer].data; - unsigned int posOffset = posbw.byteOffset; + unsigned int posOffset = posbw.byteOffset + posAccessor.byteOffset; std::vector ivp; if (posAccessor.componentType == TINYGLTF_COMPONENT_TYPE_FLOAT) { @@ -185,7 +185,8 @@ void loadMesh( } //triangles - if (p.indices >= 0 && p.indices < model.accessors.size()) { + if (p.mode == 4 && p.indices >= 0 && + (unsigned int)p.indices < model.accessors.size()) { const tinygltf::Accessor& triAccessor = model.accessors[p.indices];