summaryrefslogtreecommitdiff
path: root/indra/newview/gltf/llgltfloader.cpp
diff options
context:
space:
mode:
authorAndrey Kleshchev <andreykproductengine@lindenlab.com>2025-05-28 12:02:50 +0300
committerAndrey Kleshchev <117672381+akleshchev@users.noreply.github.com>2025-05-28 20:19:11 +0300
commit4c60231c3fa52a0875ff5ddd7cc4e416f839da95 (patch)
tree87467add08563859619ab33603cb569c95eadbde /indra/newview/gltf/llgltfloader.cpp
parent078cc9b0c1dc00b55bad9b3152651a66e8e2e79f (diff)
#4080 Rigged mesh support #6
For now not touching normalizeVolumeFaces() to not brick dae upload
Diffstat (limited to 'indra/newview/gltf/llgltfloader.cpp')
-rw-r--r--indra/newview/gltf/llgltfloader.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/indra/newview/gltf/llgltfloader.cpp b/indra/newview/gltf/llgltfloader.cpp
index 1f8733f4ff..f16efe2ff1 100644
--- a/indra/newview/gltf/llgltfloader.cpp
+++ b/indra/newview/gltf/llgltfloader.cpp
@@ -468,6 +468,8 @@ bool LLGLTFLoader::populateModelFromMesh(LLModel* pModel, const LL::GLTF::Mesh&
if (skinIdx >= 0)
{
+ vert.weights = glm::vec4(prim.mWeights[i]);
+
auto accessorIdx = prim.mAttributes["JOINTS_0"];
LL::GLTF::Accessor::ComponentType componentType = LL::GLTF::Accessor::ComponentType::UNSIGNED_BYTE;
if (accessorIdx >= 0)
@@ -487,8 +489,11 @@ bool LLGLTFLoader::populateModelFromMesh(LLModel* pModel, const LL::GLTF::Mesh&
{
vert.joints = glm::unpackUint4x16(prim.mJoints[i]);
}
-
- vert.weights = glm::vec4(prim.mWeights[i]);
+ else
+ {
+ vert.joints = glm::zero<glm::u16vec4>();
+ vert.weights = glm::zero<glm::vec4>();
+ }
}
vertices.push_back(vert);
}
@@ -659,8 +664,8 @@ bool LLGLTFLoader::populateModelFromMesh(LLModel* pModel, const LL::GLTF::Mesh&
}
}
- // Call normalizeVolumeFaces to compute proper extents
- pModel->normalizeVolumeFaces();
+ // Call normalizeVolumeFacesAndWeights to compute proper extents
+ pModel->normalizeVolumeFacesAndWeights();
// Fill joint names, bind matrices and prepare to remap weight indices
if (skinIdx >= 0)