Asset Pipeline: Improve Performance #235

Merged
2 changed files with 22 additions and 4 deletions
Showing only changes of commit e235a9dc5e - Show all commits

View File

@ -10,7 +10,7 @@ from .transfer_functions import (
materials,
)
from typing import List
from ... import constants
from ... import constants, logging
from .transfer_util import (
transfer_data_add_entry,
check_transfer_data_entry,
@ -108,9 +108,10 @@ def apply_transfer_data_items(
td_type_key: str,
transfer_data_dicts: List[dict],
):
logger = logging.get_logger()
# Get source/target from first item in list, because all items in list are same object/type
if target_obj is None:
print(f"Failed to Transfer Data for {transfer_data_dict.id_data.name}")
logger.warning(f"Failed to Transfer {td_type_key.title()} from {source_obj.name}")
return
for transfer_data_dict in transfer_data_dicts:
@ -122,7 +123,7 @@ def apply_transfer_data_items(
if td_type_key == constants.VERTEX_GROUP_KEY:
# Transfer All Vertex Groups in one go
print(f"Transferring all Vertex Groups from {source_obj.name} to {target_obj.name}")
logger.debug(f"Transferring All Vertex Groups from {source_obj.name} to {target_obj.name}.")
vertex_groups.transfer_vertex_groups(
vertex_group_names=[item["name"] for item in transfer_data_dicts],
target_obj=target_obj,
@ -130,6 +131,9 @@ def apply_transfer_data_items(
)
if td_type_key == constants.MODIFIER_KEY:
for transfer_data_dict in transfer_data_dicts:
logger.debug(
f"Transferring Modifier {transfer_data_dict['name']} from {source_obj.name} to {target_obj.name}."
)
modifers.transfer_modifier(
modifier_name=transfer_data_dict["name"],
target_obj=target_obj,
@ -137,12 +141,16 @@ def apply_transfer_data_items(
)
if td_type_key == constants.CONSTRAINT_KEY:
for transfer_data_dict in transfer_data_dicts:
logger.debug(
f"Transferring Constraint {transfer_data_dict['name']} from {source_obj.name} to {target_obj.name}."
)
constraints.transfer_constraint(
constraint_name=transfer_data_dict["name"],
target_obj=target_obj,
source_obj=source_obj,
)
if td_type_key == constants.MATERIAL_SLOT_KEY:
logger.debug(f"Transferring Materials from {source_obj.name} to {target_obj.name}.")
for transfer_data_dict in transfer_data_dicts:
materials.transfer_materials(
target_obj=target_obj,
@ -150,6 +158,9 @@ def apply_transfer_data_items(
)
if td_type_key == constants.SHAPE_KEY_KEY:
for transfer_data_dict in transfer_data_dicts:
logger.debug(
f"Transferring Shape Key {transfer_data_dict['name']} from {source_obj.name} to {target_obj.name}."
)
shape_keys.transfer_shape_key(
context=context,
target_obj=target_obj,
@ -158,6 +169,9 @@ def apply_transfer_data_items(
)
if td_type_key == constants.ATTRIBUTE_KEY:
for transfer_data_dict in transfer_data_dicts:
logger.debug(
f"Transferring Attribute {transfer_data_dict['name']} from {source_obj.name} to {target_obj.name}."
)
attributes.transfer_attribute(
target_obj=target_obj,
source_obj=source_obj,
@ -165,6 +179,9 @@ def apply_transfer_data_items(
)
if td_type_key == constants.PARENT_KEY:
for transfer_data_dict in transfer_data_dicts:
logger.debug(
f"Transferring Parent Relationship from {source_obj.name} to {target_obj.name}."
)
parent.transfer_parent(
target_obj=target_obj,
source_obj=source_obj,

View File

@ -40,9 +40,10 @@ def transfer_vertex_groups(
target_obj: bpy.types.Object,
source_obj: bpy.types.Object,
):
logger = logging.get_logger()
for vertex_group_name in vertex_group_names:
if not source_obj.vertex_groups.get(vertex_group_name):
print(f"ERROR Vertex Group {vertex_group_name} not found in {source_obj.name}")
logger.error(f"Vertex Group {vertex_group_name} not found in {source_obj.name}")
return
# If topology matches transfer directly, otherwise use vertex proximity