Explore the simple mesh pure pos triangle list idea

This commit is contained in:
Sam Gateau 2019-10-20 23:59:59 -07:00 committed by sabrina-shanman
parent 503973ae7c
commit 927e08acdb
3 changed files with 32 additions and 0 deletions

View file

@ -260,6 +260,8 @@ public:
graphics::MeshPointer _mesh;
bool wasCompressed { false };
MeshIndexedTrianglesPos _meshAsIndexedTrianglePos;
};
/// A single animation frame.

View file

@ -139,4 +139,24 @@ ReweightedDeformers getReweightedDeformers(const size_t numMeshVertices, const s
return reweightedDeformers;
}
MeshIndexedTrianglesPos generateMeshIndexedTrianglePos(const std::vector<glm::vec3>& srcVertices, const std::vector<HFMMeshPart> srcParts) {
auto newIndicesCount = 0;
for (const auto& part : srcParts) {
newIndicesCount += part.triangleIndices.size() + part.quadTrianglesIndices.size();
}
MeshIndexedTrianglesPos dest;
dest.indices.reserve(newIndicesCount);
for (const auto& part : srcParts) {
dest.indices.insert(dest.indices.end(), part.triangleIndices.cbegin(), part.triangleIndices.cend());
dest.indices.insert(dest.indices.end(), part.quadTrianglesIndices.cbegin(), part.quadTrianglesIndices.cend());
}
dest.vertices = srcVertices;
return dest;
}
};

View file

@ -36,6 +36,16 @@ public:
const uint16_t DEFAULT_SKINNING_WEIGHTS_PER_VERTEX = 4;
ReweightedDeformers getReweightedDeformers(const size_t numMeshVertices, const std::vector<hfm::SkinCluster> skinClusters, const uint16_t weightsPerVertex = DEFAULT_SKINNING_WEIGHTS_PER_VERTEX);
struct MeshIndexedTrianglesPos {
public:
std::vector<glm::vec3> vertices;
std::vector<uint32_t> indices;
};
MeshIndexedTrianglesPos generateMeshIndexedTrianglePos(const std::vector<glm::vec3>& srcVertices, const std::vector<HFMMeshPart> srcParts);
};
#endif // #define hifi_hfm_ModelMath_h