mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-04-19 15:52:53 +00:00
fix: loading of gltf with multiple meshes
This commit is contained in:
parent
94ca0ab79e
commit
826c1d2f2d
@ -547,9 +547,6 @@ namespace
|
|||||||
if (!jRoot.nodes)
|
if (!jRoot.nodes)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (!common.m_bones.empty())
|
|
||||||
throw GltfLoadException("Only scenes with at most one skin are supported");
|
|
||||||
|
|
||||||
const auto rootNode = GetRootNodeForSkin(jRoot, skin).value_or(skin.joints[0]);
|
const auto rootNode = GetRootNodeForSkin(jRoot, skin).value_or(skin.joints[0]);
|
||||||
const auto skinBoneOffset = common.m_bones.size();
|
const auto skinBoneOffset = common.m_bones.size();
|
||||||
common.m_bones.resize(skinBoneOffset + skin.joints.size());
|
common.m_bones.resize(skinBoneOffset + skin.joints.size());
|
||||||
@ -566,13 +563,27 @@ namespace
|
|||||||
if (!jRoot.meshes)
|
if (!jRoot.meshes)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
std::optional<unsigned> alreadyLoadedSkinIndex;
|
||||||
|
|
||||||
for (const auto& loadObject : m_load_objects)
|
for (const auto& loadObject : m_load_objects)
|
||||||
{
|
{
|
||||||
if (loadObject.skinIndex && jRoot.skins)
|
if (loadObject.skinIndex && jRoot.skins)
|
||||||
|
{
|
||||||
|
if (alreadyLoadedSkinIndex)
|
||||||
|
{
|
||||||
|
if (*alreadyLoadedSkinIndex != *loadObject.skinIndex)
|
||||||
|
throw GltfLoadException("Only scenes with at most one skin are supported");
|
||||||
|
|
||||||
|
// Do not load already loaded skin
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
const auto& skin = jRoot.skins.value()[*loadObject.skinIndex];
|
const auto& skin = jRoot.skins.value()[*loadObject.skinIndex];
|
||||||
if (!ConvertSkin(jRoot, skin, common))
|
if (!ConvertSkin(jRoot, skin, common))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
alreadyLoadedSkinIndex = *loadObject.skinIndex;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto& mesh = jRoot.meshes.value()[loadObject.meshIndex];
|
const auto& mesh = jRoot.meshes.value()[loadObject.meshIndex];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user