diff --git a/io_scene_a3d/A3DBlenderImporter.py b/io_scene_a3d/A3DBlenderImporter.py index bd2d3ab..167310d 100644 --- a/io_scene_a3d/A3DBlenderImporter.py +++ b/io_scene_a3d/A3DBlenderImporter.py @@ -33,13 +33,14 @@ from .A3DObjects import ( ) class A3DBlenderImporter: - def __init__(self, modelData, create_collection=True): + def __init__(self, modelData, create_collection=True, reset_empty_transform=True): self.modelData = modelData self.materials = [] self.meshes = [] # User settings self.create_collection = create_collection + self.reset_empty_transform = reset_empty_transform def importData(self): print("Importing A3D model data into blender") @@ -192,4 +193,8 @@ class A3DBlenderImporter: x, y, z, w = transform.rotation ob.rotation_quaternion = (w, x, y, z) + if self.reset_empty_transform: + if transform.scale == (0.0, 0.0, 0.0): ob.scale = (1.0, 1.0, 1.0) + if transform.rotation == (0.0, 0.0, 0.0, 0.0): ob.rotation_quaternion = (1.0, 0.0, 0.0, 0.0) + return ob \ No newline at end of file diff --git a/io_scene_a3d/__init__.py b/io_scene_a3d/__init__.py index 137b9ec..7b18a11 100644 --- a/io_scene_a3d/__init__.py +++ b/io_scene_a3d/__init__.py @@ -42,6 +42,7 @@ class ImportA3D(Operator, ImportHelper): # User options #try_import_textures: BoolProperty(name="Search for textures", description="Automatically search for lightmap, track and wheel textures and attempt to apply them", default=True) create_collection: BoolProperty(name="Create collection", description="Create a collection to hold all the model objects", default=True) + reset_empty_transform: BoolProperty(name="Reset empty transforms", description="Reset rotation and scale if it is set to 0, more useful for version 2 models like props", default=True) def draw(self, context): import_panel_options(self.layout, self) @@ -59,7 +60,7 @@ class ImportA3D(Operator, ImportHelper): modelData.read(file) # Import data into blender - modelImporter = A3DBlenderImporter(modelData, self.create_collection) + modelImporter = A3DBlenderImporter(modelData, self.create_collection, self.reset_empty_transform) modelImporter.importData() return {"FINISHED"} @@ -73,6 +74,7 @@ def import_panel_options(layout, operator): if body: #body.prop(operator, "try_import_textures") body.prop(operator, "create_collection") + body.prop(operator, "reset_empty_transform") def menu_func_import_a3d(self, context): self.layout.operator(ImportA3D.bl_idname, text="Alternativa3D HTML5 (.a3d)")