Browse Source

Fix FBX texture path resolving

bqqbarbhg 1 year ago
parent
commit
2a757e4897
1 changed files with 6 additions and 2 deletions
  1. 6 2
      modules/fbx/fbx_document.cpp

+ 6 - 2
modules/fbx/fbx_document.cpp

@@ -990,8 +990,8 @@ Error FBXDocument::_parse_images(Ref<FBXState> p_state, const String &p_base_pat
 	for (int texture_i = 0; texture_i < static_cast<int>(fbx_scene->texture_files.count); texture_i++) {
 	for (int texture_i = 0; texture_i < static_cast<int>(fbx_scene->texture_files.count); texture_i++) {
 		const ufbx_texture_file &fbx_texture_file = fbx_scene->texture_files[texture_i];
 		const ufbx_texture_file &fbx_texture_file = fbx_scene->texture_files[texture_i];
 		String path = _as_string(fbx_texture_file.filename);
 		String path = _as_string(fbx_texture_file.filename);
-		path = ProjectSettings::get_singleton()->localize_path(path);
-		if (path.is_absolute_path() && !path.is_resource_file()) {
+		// Use only filename for absolute paths to avoid portability issues.
+		if (path.is_absolute_path()) {
 			path = path.get_file();
 			path = path.get_file();
 		}
 		}
 		if (!p_base_path.is_empty()) {
 		if (!p_base_path.is_empty()) {
@@ -2239,6 +2239,10 @@ Error FBXDocument::_parse_lights(Ref<FBXState> p_state) {
 }
 }
 
 
 String FBXDocument::_get_texture_path(const String &p_base_dir, const String &p_source_file_path) const {
 String FBXDocument::_get_texture_path(const String &p_base_dir, const String &p_source_file_path) const {
+	// Check if the original path exists first.
+	if (FileAccess::exists(p_source_file_path)) {
+		return p_source_file_path.strip_edges();
+	}
 	const String tex_file_name = p_source_file_path.get_file();
 	const String tex_file_name = p_source_file_path.get_file();
 	const Vector<String> subdirs = {
 	const Vector<String> subdirs = {
 		"", "textures/", "Textures/", "images/",
 		"", "textures/", "Textures/", "images/",