fix error logging bruh
reee
This commit is contained in:
+3
-3
@@ -201,7 +201,7 @@ def apply_pose_as_rest(context: Context, armature_obj: Object, meshes: List[Obje
|
|||||||
return True, t("Operation.pose_applied")
|
return True, t("Operation.pose_applied")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Error applying pose as rest: {str(e)}")
|
logger.error(f"Error applying pose as rest:", exception=e)
|
||||||
return False, str(e)
|
return False, str(e)
|
||||||
|
|
||||||
def apply_armature_to_mesh(armature_obj: Object, mesh_obj: Object) -> None:
|
def apply_armature_to_mesh(armature_obj: Object, mesh_obj: Object) -> None:
|
||||||
@@ -336,7 +336,7 @@ def join_mesh_objects(context: Context, meshes: List[Object], progress: Optional
|
|||||||
return joined_mesh
|
return joined_mesh
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Failed to join meshes: {str(e)}")
|
logger.error(f"Failed to join meshes:", exception=e)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
@@ -366,7 +366,7 @@ def fix_uv_coordinates(context: Context) -> None:
|
|||||||
logger.debug(f"UV Fix - Successfully processed {obj.name}")
|
logger.debug(f"UV Fix - Successfully processed {obj.name}")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.warning(f"UV Fix - Skipped processing for {obj.name}: {str(e)}")
|
logger.warning(f"UV Fix - Skipped processing for {obj.name}:", exception=e)
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
bpy.ops.object.mode_set(mode='OBJECT')
|
bpy.ops.object.mode_set(mode='OBJECT')
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ def import_multi_files(
|
|||||||
progress.update(file["name"])
|
progress.update(file["name"])
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Import failed: {str(e)}", exc_info=True)
|
logger.error(f"Import failed:", exception=e)
|
||||||
raise
|
raise
|
||||||
|
|
||||||
ImportMethod = Callable[[str, List[Dict[str, str]], str], None]
|
ImportMethod = Callable[[str, List[Dict[str, str]], str], None]
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ def configure_logging(enabled: bool = False) -> None:
|
|||||||
logger.addHandler(handler)
|
logger.addHandler(handler)
|
||||||
|
|
||||||
def error_with_traceback(msg, *args, **kwargs):
|
def error_with_traceback(msg, *args, **kwargs):
|
||||||
if kwargs.get('exc_info', False) or isinstance(msg, Exception):
|
if isinstance(kwargs.get('exception', None), Exception):
|
||||||
full_msg = f"{msg}\n{traceback.format_exc()}"
|
full_msg = f"{msg}\n{traceback.format_exc()}"
|
||||||
_original_error(full_msg, *args, **{**kwargs, 'exc_info': False})
|
_original_error(full_msg, *args, **{**kwargs, 'exc_info': False})
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ class AvatarToolkit_OT_ConvertResonite(Operator):
|
|||||||
progress.step(t("Tools.convert_resonite.processing", name=bone.name))
|
progress.step(t("Tools.convert_resonite.processing", name=bone.name))
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Error during Resonite conversion: {str(e)}")
|
logger.error(f"Error during Resonite conversion:", exception=e)
|
||||||
self.report({'ERROR'}, str(e))
|
self.report({'ERROR'}, str(e))
|
||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
|
|
||||||
@@ -100,7 +100,7 @@ class AvatarToolkit_OT_ConvertResonite(Operator):
|
|||||||
try:
|
try:
|
||||||
bpy.ops.object.mode_set(mode='OBJECT')
|
bpy.ops.object.mode_set(mode='OBJECT')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.warning(f"Error returning to object mode: {str(e)}")
|
logger.warning(f"Error returning to object mode:", exception=e)
|
||||||
|
|
||||||
if translate_bone_fails > 0:
|
if translate_bone_fails > 0:
|
||||||
logger.info(f"Conversion completed with {translate_bone_fails} untranslated bones")
|
logger.info(f"Conversion completed with {translate_bone_fails} untranslated bones")
|
||||||
|
|||||||
@@ -306,6 +306,6 @@ class AvatarToolKit_OT_AtlasMaterials(Operator):
|
|||||||
return {"FINISHED"}
|
return {"FINISHED"}
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Error creating material atlas: {str(e)}", exc_info=True)
|
logger.error(f"Error creating material atlas:", exception=e)
|
||||||
self.report({'ERROR'}, t("TextureAtlas.atlas_error"))
|
self.report({'ERROR'}, t("TextureAtlas.atlas_error"))
|
||||||
raise e
|
raise e
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ class AvatarToolkit_OT_MergeArmature(bpy.types.Operator):
|
|||||||
return {'FINISHED'}
|
return {'FINISHED'}
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Error merging armatures: {str(e)}")
|
logger.error(f"Error merging armatures:", exception=e)
|
||||||
self.report({'ERROR'}, str(e))
|
self.report({'ERROR'}, str(e))
|
||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
|
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ class AvatarToolkit_OT_AttachMesh(Operator):
|
|||||||
return {'FINISHED'}
|
return {'FINISHED'}
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Failed to attach mesh: {str(e)}")
|
logger.error(f"Failed to attach mesh:", exception=e)
|
||||||
self.report({'ERROR'}, str(e))
|
self.report({'ERROR'}, str(e))
|
||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
|
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ class CreateEyesAV3Button(bpy.types.Operator):
|
|||||||
return {'FINISHED'}
|
return {'FINISHED'}
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Eye tracking setup failed: {str(e)}")
|
logger.error(f"Eye tracking setup failed:", exception=e)
|
||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
|
|
||||||
class CreateEyesSDK2Button(bpy.types.Operator):
|
class CreateEyesSDK2Button(bpy.types.Operator):
|
||||||
@@ -197,7 +197,7 @@ class CreateEyesSDK2Button(bpy.types.Operator):
|
|||||||
return {'FINISHED'}
|
return {'FINISHED'}
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Eye tracking setup failed: {str(e)}")
|
logger.error(f"Eye tracking setup failed:", exception=e)
|
||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
|
|
||||||
class EyeTrackingBackup:
|
class EyeTrackingBackup:
|
||||||
@@ -223,7 +223,7 @@ class EyeTrackingBackup:
|
|||||||
json.dump(self.bone_positions, f)
|
json.dump(self.bone_positions, f)
|
||||||
return True
|
return True
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Backup failed: {str(e)}")
|
logger.error(f"Backup failed:", exception=e)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def restore_bone_positions(self, armature) -> bool:
|
def restore_bone_positions(self, armature) -> bool:
|
||||||
@@ -244,7 +244,7 @@ class EyeTrackingBackup:
|
|||||||
|
|
||||||
return True
|
return True
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Restore failed: {str(e)}")
|
logger.error(f"Restore failed:", exception=e)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
class EyeTrackingValidator:
|
class EyeTrackingValidator:
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ class AvatarToolkit_OT_CombineMaterials(Operator):
|
|||||||
try:
|
try:
|
||||||
num_combined = self.consolidate_materials(meshes)
|
num_combined = self.consolidate_materials(meshes)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Material consolidation failed: {str(e)}")
|
logger.error(f"Material consolidation failed:", exception=e)
|
||||||
self.report({'ERROR'}, t("Optimization.error.consolidation"))
|
self.report({'ERROR'}, t("Optimization.error.consolidation"))
|
||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
progress.step("Consolidated materials")
|
progress.step("Consolidated materials")
|
||||||
@@ -121,7 +121,7 @@ class AvatarToolkit_OT_CombineMaterials(Operator):
|
|||||||
try:
|
try:
|
||||||
num_cleaned = self.clean_material_slots(meshes)
|
num_cleaned = self.clean_material_slots(meshes)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Material slot cleanup failed: {str(e)}")
|
logger.error(f"Material slot cleanup failed:", exception=e)
|
||||||
self.report({'ERROR'}, t("Optimization.error.slot_cleanup"))
|
self.report({'ERROR'}, t("Optimization.error.slot_cleanup"))
|
||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
progress.step("Cleaned material slots")
|
progress.step("Cleaned material slots")
|
||||||
@@ -129,7 +129,7 @@ class AvatarToolkit_OT_CombineMaterials(Operator):
|
|||||||
try:
|
try:
|
||||||
num_removed = clear_unused_data_blocks()
|
num_removed = clear_unused_data_blocks()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Data block cleanup failed: {str(e)}")
|
logger.error(f"Data block cleanup failed:", exception=e)
|
||||||
self.report({'ERROR'}, t("Optimization.error.data_cleanup"))
|
self.report({'ERROR'}, t("Optimization.error.data_cleanup"))
|
||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
progress.step("Removed unused data blocks")
|
progress.step("Removed unused data blocks")
|
||||||
@@ -142,7 +142,7 @@ class AvatarToolkit_OT_CombineMaterials(Operator):
|
|||||||
return {'FINISHED'}
|
return {'FINISHED'}
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Failed to combine materials: {str(e)}")
|
logger.error(f"Failed to combine materials:", exception=e)
|
||||||
self.report({'ERROR'}, t("Optimization.error.combine_materials", error=str(e)))
|
self.report({'ERROR'}, t("Optimization.error.combine_materials", error=str(e)))
|
||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
|
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ class AvatarToolkit_OT_JoinAllMeshes(Operator):
|
|||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Failed to join meshes: {str(e)}")
|
logger.error(f"Failed to join meshes:", exception=e)
|
||||||
self.report({'ERROR'}, t("Optimization.error.join_meshes", error=str(e)))
|
self.report({'ERROR'}, t("Optimization.error.join_meshes", error=str(e)))
|
||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
|
|
||||||
@@ -96,6 +96,6 @@ class AvatarToolkit_OT_JoinSelectedMeshes(Operator):
|
|||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Failed to join selected meshes: {str(e)}")
|
logger.error(f"Failed to join selected meshes:", exception=e)
|
||||||
self.report({'ERROR'}, t("Optimization.error.join_selected", error=str(e)))
|
self.report({'ERROR'}, t("Optimization.error.join_selected", error=str(e)))
|
||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
|
|||||||
@@ -164,7 +164,7 @@ class AvatarToolkit_OT_RemoveDoubles(Operator):
|
|||||||
return {'RUNNING_MODAL'}
|
return {'RUNNING_MODAL'}
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Error in execute: {str(e)}")
|
logger.error(f"Error in execute:", exception=e)
|
||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
|
|
||||||
def modify_mesh(self, context: Context, mesh: MeshEntry) -> None:
|
def modify_mesh(self, context: Context, mesh: MeshEntry) -> None:
|
||||||
@@ -188,7 +188,7 @@ class AvatarToolkit_OT_RemoveDoubles(Operator):
|
|||||||
mesh["mesh"].select_set(False)
|
mesh["mesh"].select_set(False)
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Error in modify_mesh: {str(e)}")
|
logger.error(f"Error in modify_mesh:", exception=e)
|
||||||
|
|
||||||
def modify_mesh_advanced(self, context: Context, mesh_entry: MeshEntry) -> int:
|
def modify_mesh_advanced(self, context: Context, mesh_entry: MeshEntry) -> int:
|
||||||
"""Advanced mesh modification with shape key handling"""
|
"""Advanced mesh modification with shape key handling"""
|
||||||
@@ -221,7 +221,7 @@ class AvatarToolkit_OT_RemoveDoubles(Operator):
|
|||||||
return len(final_merged_vertex_group)
|
return len(final_merged_vertex_group)
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Error in modify_mesh_advanced: {str(e)}")
|
logger.error(f"Error in modify_mesh_advanced:", exception=e)
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
def apply_final_merging(self, context: Context, mesh_entry: MeshEntry, vertex_group: list[int], merge_distance: float) -> None:
|
def apply_final_merging(self, context: Context, mesh_entry: MeshEntry, vertex_group: list[int], merge_distance: float) -> None:
|
||||||
@@ -310,5 +310,5 @@ class AvatarToolkit_OT_RemoveDoubles(Operator):
|
|||||||
return {'RUNNING_MODAL'}
|
return {'RUNNING_MODAL'}
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Error in modal: {str(e)}")
|
logger.error(f"Error in modal:", exception=e)
|
||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ class AvatarToolkit_OT_StartPoseMode(Operator):
|
|||||||
|
|
||||||
return {'FINISHED'}
|
return {'FINISHED'}
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Failed to start pose mode: {str(e)}")
|
logger.error(f"Failed to start pose mode:", exception=e)
|
||||||
self.report({'ERROR'}, t("PoseMode.error.start", error=str(e)))
|
self.report({'ERROR'}, t("PoseMode.error.start", error=str(e)))
|
||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
|
|
||||||
@@ -86,7 +86,7 @@ class AvatarToolkit_OT_StopPoseMode(Operator):
|
|||||||
bpy.ops.object.mode_set(mode='OBJECT')
|
bpy.ops.object.mode_set(mode='OBJECT')
|
||||||
return {'FINISHED'}
|
return {'FINISHED'}
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Failed to stop pose mode: {str(e)}")
|
logger.error(f"Failed to stop pose mode:", exception=e)
|
||||||
self.report({'ERROR'}, t("PoseMode.error.stop", error=str(e)))
|
self.report({'ERROR'}, t("PoseMode.error.stop", error=str(e)))
|
||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
|
|
||||||
@@ -130,7 +130,7 @@ class AvatarToolkit_OT_ApplyPoseAsRest(Operator, BatchPoseOperationMixin):
|
|||||||
|
|
||||||
return {'FINISHED'}
|
return {'FINISHED'}
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Failed to apply pose as shape key: {str(e)}")
|
logger.error(f"Failed to apply pose as shape key:", exception=e)
|
||||||
self.report({'ERROR'}, t("PoseMode.error.shapekey", error=str(e)))
|
self.report({'ERROR'}, t("PoseMode.error.shapekey", error=str(e)))
|
||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
|
|
||||||
@@ -161,6 +161,6 @@ class AvatarToolkit_OT_ApplyPoseAsShapekey(Operator, BatchPoseOperationMixin):
|
|||||||
logger.info("Successfully applied pose as rest")
|
logger.info("Successfully applied pose as rest")
|
||||||
return {'FINISHED'}
|
return {'FINISHED'}
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Failed to apply pose as rest: {str(e)}")
|
logger.error(f"Failed to apply pose as rest:", exception=e)
|
||||||
self.report({'ERROR'}, t("PoseMode.error.rest_pose", error=str(e)))
|
self.report({'ERROR'}, t("PoseMode.error.rest_pose", error=str(e)))
|
||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ class AvatarToolkit_OT_ApplyTransforms(Operator):
|
|||||||
return {'FINISHED'}
|
return {'FINISHED'}
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Failed to apply transforms: {str(e)}")
|
logger.error(f"Failed to apply transforms:", exception=e)
|
||||||
self.report({'ERROR'}, str(e))
|
self.report({'ERROR'}, str(e))
|
||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
|
|
||||||
@@ -87,6 +87,6 @@ class AvatarToolkit_OT_CleanShapekeys(Operator):
|
|||||||
return {'FINISHED'}
|
return {'FINISHED'}
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Failed to clean shape keys: {str(e)}")
|
logger.error(f"Failed to clean shape keys:", exception=e)
|
||||||
self.report({'ERROR'}, str(e))
|
self.report({'ERROR'}, str(e))
|
||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ class AvatarToolkit_OT_ConnectBones(Operator):
|
|||||||
return {'FINISHED'}
|
return {'FINISHED'}
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Failed to connect bones: {str(e)}")
|
logger.error(f"Failed to connect bones:", exception=e)
|
||||||
self.report({'ERROR'}, str(e))
|
self.report({'ERROR'}, str(e))
|
||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
|
|
||||||
@@ -105,7 +105,7 @@ class AvatarToolkit_OT_MergeToActive(Operator):
|
|||||||
return {'FINISHED'}
|
return {'FINISHED'}
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Failed to merge bones: {str(e)}")
|
logger.error(f"Failed to merge bones:", exception=e)
|
||||||
self.report({'ERROR'}, str(e))
|
self.report({'ERROR'}, str(e))
|
||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
|
|
||||||
@@ -157,6 +157,6 @@ class AvatarToolkit_OT_MergeToParent(Operator):
|
|||||||
return {'FINISHED'}
|
return {'FINISHED'}
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Failed to merge bones: {str(e)}")
|
logger.error(f"Failed to merge bones:", exception=e)
|
||||||
self.report({'ERROR'}, str(e))
|
self.report({'ERROR'}, str(e))
|
||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ class AvatarToolkit_OT_ConvertRigifyToUnity(Operator):
|
|||||||
return {'FINISHED'}
|
return {'FINISHED'}
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Failed to convert Rigify: {str(e)}", exc_info=True)
|
logger.error(f"Failed to convert Rigify:", exception=e)
|
||||||
self.report({'ERROR'}, str(e))
|
self.report({'ERROR'}, str(e))
|
||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
|
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ class AvatarToolkit_OT_StandardizeArmature(Operator):
|
|||||||
return {'FINISHED'}
|
return {'FINISHED'}
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Failed to standardize armature: {str(e)}")
|
logger.error(f"Failed to standardize armature:", exception=e)
|
||||||
self.report({'ERROR'}, str(e))
|
self.report({'ERROR'}, str(e))
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -246,7 +246,7 @@ class AvatarToolkit_OT_AlignUVEdgesToTarget(Operator):
|
|||||||
logger.info(f"Finished mesh {source} for UV's")
|
logger.info(f"Finished mesh {source} for UV's")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Error processing source {source}: {str(e)}")
|
logger.error(f"Error processing source {source}:", exception=e)
|
||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
|
|
||||||
bpy.ops.object.mode_set(mode=prev_mode)
|
bpy.ops.object.mode_set(mode=prev_mode)
|
||||||
|
|||||||
@@ -222,7 +222,7 @@ class ATOOLKIT_OT_create_visemes(Operator):
|
|||||||
self.report({'INFO'}, t("Visemes.success"))
|
self.report({'INFO'}, t("Visemes.success"))
|
||||||
return {'FINISHED'}
|
return {'FINISHED'}
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Error creating visemes: {str(e)}")
|
logger.error(f"Error creating visemes:", exception=e)
|
||||||
self.report({'ERROR'}, str(e))
|
self.report({'ERROR'}, str(e))
|
||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
|
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ class AvatarToolKit_OT_ExpandSectionMaterials(Operator):
|
|||||||
|
|
||||||
return {'FINISHED'}
|
return {'FINISHED'}
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Error loading materials: {str(e)}", exc_info=True)
|
logger.error(f"Error loading materials:", exception=e)
|
||||||
self.report({'ERROR'}, t("TextureAtlas.load_error"))
|
self.report({'ERROR'}, t("TextureAtlas.load_error"))
|
||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user