From 5267a6496f70574eba9325add5480a8c8b60a65d Mon Sep 17 00:00:00 2001 From: Saracen Date: Sat, 8 May 2021 16:33:22 +0100 Subject: Fix to parsing some Collada with extra vertex semantics referenced only in the vertices section. --- editor/import/collada.cpp | 5 ++ editor/import/editor_import_collada.cpp | 120 ++++++++++++++++++++++++-------- 2 files changed, 95 insertions(+), 30 deletions(-) diff --git a/editor/import/collada.cpp b/editor/import/collada.cpp index e38034dd8c..6760150af9 100644 --- a/editor/import/collada.cpp +++ b/editor/import/collada.cpp @@ -961,6 +961,7 @@ void Collada::_parse_mesh_geometry(XMLParser &parser, String p_id, String p_name } else if (section == "vertices") { MeshData::Vertices vert; String id = parser.get_attribute_value("id"); + int last_ref = 0; while (parser.read() == OK) { if (parser.get_node_type() == XMLParser::NODE_ELEMENT) { @@ -968,6 +969,10 @@ void Collada::_parse_mesh_geometry(XMLParser &parser, String p_id, String p_name String semantic = parser.get_attribute_value("semantic"); String source = _uri_to_id(parser.get_attribute_value("source")); + if (semantic == "TEXCOORD") { + semantic = "TEXCOORD" + itos(last_ref++); + } + vert.sources[semantic] = source; COLLADA_PRINT(section + " input semantic: " + semantic + " source: " + source); diff --git a/editor/import/editor_import_collada.cpp b/editor/import/editor_import_collada.cpp index d3183e5a8d..4a1689fbdf 100644 --- a/editor/import/editor_import_collada.cpp +++ b/editor/import/editor_import_collada.cpp @@ -504,61 +504,121 @@ Error ColladaImport::_create_mesh_surfaces(bool p_optimize, Ref