Add reset empty transforms option

This commit is contained in:
Pyogenics
2025-01-19 12:19:27 +00:00
parent d3988cd10f
commit caf3caee50
2 changed files with 9 additions and 2 deletions

View File

@@ -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

View File

@@ -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)")