diff --git a/CHANGELOG.md b/CHANGELOG.md index 32f0005..d0f5265 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,13 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## unreleased +### Added +* Added support for root motion to mot animation loading. + +### Removed +* Removed the "Game Version" property for wimdo and wismhd import. Shader databases are now selected automatically based on the file data. + ## 0.16.0 - 2024-11-27 ### Added * Added support for exporting vertex groups for bones in the skeleton but not in the wimdo bone list. diff --git a/xc3_model_py b/xc3_model_py index 1ca8831..eb8883c 160000 --- a/xc3_model_py +++ b/xc3_model_py @@ -1 +1 @@ -Subproject commit 1ca883159134d46a4a002830e1930e1af6537176 +Subproject commit eb8883c818eda5db8f9a2b9dd084f4a280c3ca1c diff --git a/xenoblade_blender/import_camdo.py b/xenoblade_blender/import_camdo.py index 4d3a17b..f9bc2a5 100644 --- a/xenoblade_blender/import_camdo.py +++ b/xenoblade_blender/import_camdo.py @@ -6,6 +6,7 @@ import math from .import_root import ( + get_database_path, get_image_folder, import_armature, import_model_root, @@ -73,7 +74,7 @@ def import_camdo( ): start = time.time() - database_path = os.path.join(os.path.dirname(__file__), "xcx.bin") + database_path = get_database_path() database = xc3_model_py.shader_database.ShaderDatabase.from_file(database_path) root = xc3_model_py.load_model_legacy(path, database) diff --git a/xenoblade_blender/import_root.py b/xenoblade_blender/import_root.py index f1225bd..1470569 100644 --- a/xenoblade_blender/import_root.py +++ b/xenoblade_blender/import_root.py @@ -12,9 +12,8 @@ from pathlib import Path -def get_database_path(version: str) -> str: - files = {"XC1": "xc1.bin", "XC2": "xc2.bin", "XC3": "xc3.bin"} - return os.path.join(os.path.dirname(__file__), files[version]) +def get_database_path() -> str: + return os.path.join(os.path.dirname(__file__), "xc_combined.bin") def get_image_folder(image_folder: str, filepath: str) -> str: diff --git a/xenoblade_blender/import_wimdo.py b/xenoblade_blender/import_wimdo.py index d263238..ee42860 100644 --- a/xenoblade_blender/import_wimdo.py +++ b/xenoblade_blender/import_wimdo.py @@ -39,17 +39,6 @@ class ImportWimdo(bpy.types.Operator, ImportHelper): type=bpy.types.OperatorFileListElement, options={"HIDDEN", "SKIP_SAVE"} ) - game_version: EnumProperty( - name="Game Version", - description="The game version for the shader database", - items=( - ("XC1", "Xenoblade 1 DE", "Xenoblade Chronicles 1 Definitive Edition"), - ("XC2", "Xenoblade 2", "Xenoblade Chronicles 2"), - ("XC3", "Xenoblade 3", "Xenoblade Chronicles 3"), - ), - default="XC3", - ) - pack_images: BoolProperty( name="Pack Images", description="Pack all images into the Blender file. Increases memory usage and import times but makes the Blender file easier to share by not creating additional files", @@ -79,7 +68,7 @@ def execute(self, context: bpy.types.Context): log_fmt = "%(levelname)s %(name)s %(filename)s:%(lineno)d %(message)s" logging.basicConfig(format=log_fmt, level=logging.INFO) - database_path = get_database_path(self.game_version) + database_path = get_database_path() image_folder = get_image_folder(self.image_folder, self.filepath) # TODO: merge armatures? diff --git a/xenoblade_blender/import_wismhd.py b/xenoblade_blender/import_wismhd.py index 5f58e01..04983ce 100644 --- a/xenoblade_blender/import_wismhd.py +++ b/xenoblade_blender/import_wismhd.py @@ -32,17 +32,6 @@ class ImportWismhd(bpy.types.Operator, ImportHelper): maxlen=255, ) - game_version: EnumProperty( - name="Game Version", - description="The game version for the shader database", - items=( - ("XC1", "Xenoblade 1 DE", "Xenoblade Chronicles 1 Definitive Edition"), - ("XC2", "Xenoblade 2", "Xenoblade Chronicles 2"), - ("XC3", "Xenoblade 3", "Xenoblade Chronicles 3"), - ), - default="XC3", - ) - pack_images: BoolProperty( name="Pack Images", description="Pack all images into the Blender file. Increases memory usage and import times but makes the Blender file easier to share by not creating additional files", @@ -66,7 +55,7 @@ def execute(self, context: bpy.types.Context): log_fmt = "%(levelname)s %(name)s %(filename)s:%(lineno)d %(message)s" logging.basicConfig(format=log_fmt, level=logging.INFO) - database_path = get_database_path(self.game_version) + database_path = get_database_path() image_folder = get_image_folder(self.image_folder, self.filepath) self.import_wismhd( diff --git a/xenoblade_blender/xc1.bin b/xenoblade_blender/xc1.bin deleted file mode 100644 index eaab28a..0000000 Binary files a/xenoblade_blender/xc1.bin and /dev/null differ diff --git a/xenoblade_blender/xc2.bin b/xenoblade_blender/xc2.bin deleted file mode 100644 index c0a3074..0000000 Binary files a/xenoblade_blender/xc2.bin and /dev/null differ diff --git a/xenoblade_blender/xc3.bin b/xenoblade_blender/xc3.bin deleted file mode 100644 index 845cbbb..0000000 Binary files a/xenoblade_blender/xc3.bin and /dev/null differ diff --git a/xenoblade_blender/xc_combined.bin b/xenoblade_blender/xc_combined.bin new file mode 100644 index 0000000..22ed10a Binary files /dev/null and b/xenoblade_blender/xc_combined.bin differ diff --git a/xenoblade_blender/xcx.bin b/xenoblade_blender/xcx.bin deleted file mode 100644 index 964e8f2..0000000 Binary files a/xenoblade_blender/xcx.bin and /dev/null differ