Merge pull request #91526 from bqqbarbhg/ufbx-bad-skin-fix
FBX: Fix handling missing skins using ufbx importer
This commit is contained in:
commit
4313524ae3
|
@ -693,10 +693,7 @@ Error FBXDocument::_parse_meshes(Ref<FBXState> p_state) {
|
|||
|
||||
// Find the first imported skin deformer
|
||||
for (ufbx_skin_deformer *fbx_skin : fbx_mesh->skin_deformers) {
|
||||
if (!p_state->skin_indices.has(fbx_skin->typed_id)) {
|
||||
continue;
|
||||
}
|
||||
GLTFSkinIndex skin_i = p_state->skin_indices[fbx_skin->typed_id];
|
||||
GLTFSkinIndex skin_i = p_state->original_skin_indices[fbx_skin->typed_id];
|
||||
if (skin_i < 0) {
|
||||
continue;
|
||||
}
|
||||
|
@ -2341,7 +2338,7 @@ Error FBXDocument::_parse_skins(Ref<FBXState> p_state) {
|
|||
HashMap<GLTFNodeIndex, bool> joint_mapping;
|
||||
|
||||
for (const ufbx_skin_deformer *fbx_skin : fbx_scene->skin_deformers) {
|
||||
if (fbx_skin->clusters.count == 0) {
|
||||
if (fbx_skin->clusters.count == 0 || fbx_skin->weights.count == 0) {
|
||||
p_state->skin_indices.push_back(-1);
|
||||
continue;
|
||||
}
|
||||
|
@ -2387,8 +2384,9 @@ Error FBXDocument::_parse_skins(Ref<FBXState> p_state) {
|
|||
}
|
||||
}
|
||||
}
|
||||
p_state->original_skin_indices = p_state->skin_indices.duplicate();
|
||||
Error err = SkinTool::_asset_parse_skins(
|
||||
p_state->skin_indices.duplicate(),
|
||||
p_state->original_skin_indices,
|
||||
p_state->skins.duplicate(),
|
||||
p_state->nodes.duplicate(),
|
||||
p_state->skin_indices,
|
||||
|
|
|
@ -53,6 +53,7 @@ class FBXState : public GLTFState {
|
|||
HashMap<Pair<uint64_t, uint64_t>, GLTFTextureIndex, PairHash<uint64_t, uint64_t>> albedo_transparency_textures;
|
||||
|
||||
Vector<GLTFSkinIndex> skin_indices;
|
||||
Vector<GLTFSkinIndex> original_skin_indices;
|
||||
HashMap<ObjectID, GLTFSkeletonIndex> skeleton3d_to_fbx_skeleton;
|
||||
HashMap<ObjectID, HashMap<ObjectID, GLTFSkinIndex>> skin_and_skeleton3d_to_fbx_skin;
|
||||
HashSet<String> unique_mesh_names; // Not in GLTFState because GLTFState prefixes mesh names with the scene name (or _)
|
||||
|
|
Loading…
Reference in New Issue