From 1feaf286b43e27f5d077946232a449fa56c96f37 Mon Sep 17 00:00:00 2001 From: sam gateau Date: Wed, 5 Sep 2018 14:35:50 -0700 Subject: [PATCH] keeping position separated from the other attributes --- libraries/fbx/src/FBXReader_Mesh.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/libraries/fbx/src/FBXReader_Mesh.cpp b/libraries/fbx/src/FBXReader_Mesh.cpp index ef2fcc23b4..bb95fb42f7 100644 --- a/libraries/fbx/src/FBXReader_Mesh.cpp +++ b/libraries/fbx/src/FBXReader_Mesh.cpp @@ -763,8 +763,8 @@ void FBXReader::buildModelMesh(FBXMesh& extractedMesh, const QString& url) { bool interleaveNormalsTangents = true; // If has blend shapes allocate and assign buffers for pos and tangents now + hasBlendShapes = true; if (hasBlendShapes) { - auto posBuffer = std::make_shared(); posBuffer->setData(positionsSize, (const gpu::Byte*) vertBuffer->getData() + positionsOffset); vertexBufferStream->addBuffer(posBuffer, 0, positionElement.getSize()); @@ -781,6 +781,19 @@ void FBXReader::buildModelMesh(FBXMesh& extractedMesh, const QString& url) { attribChannel = 2; totalAttribBufferSize = totalVertsSize - positionsSize - normalsAndTangentsSize; + } else { + auto posBuffer = std::make_shared(); + posBuffer->setData(positionsSize, (const gpu::Byte*) vertBuffer->getData() + positionsOffset); + vertexBufferStream->addBuffer(posBuffer, 0, positionElement.getSize()); + + // update channels and attribBuffer size accordingly + interleavePositions = false; + interleaveNormalsTangents = true; + + tangentChannel = 1; + attribChannel = 1; + + totalAttribBufferSize = totalVertsSize - positionsSize; } // Define the vertex format, compute the offset for each attributes as we append them to the vertex format