Asset Pipeline v2 #145
@ -14,6 +14,7 @@ TASK_LAYER_NAMES = [item[1] for item in TASK_LAYER_TYPES]
|
|||||||
TRANSFER_DATA_TYPES = [
|
TRANSFER_DATA_TYPES = [
|
||||||
("NONE", "None", ""),
|
("NONE", "None", ""),
|
||||||
("GROUP_VERTEX", "Vertex Group", ""),
|
("GROUP_VERTEX", "Vertex Group", ""),
|
||||||
|
("GROUP_VCOL", "Color Attribute", ""),
|
||||||
("MODIFIER", "Modifier", ""),
|
("MODIFIER", "Modifier", ""),
|
||||||
("CONSTRAINT", "Constraint", ""),
|
("CONSTRAINT", "Constraint", ""),
|
||||||
("MATERIAL", "Material Slot", ""),
|
("MATERIAL", "Material Slot", ""),
|
||||||
@ -22,9 +23,10 @@ TRANSFER_DATA_TYPES = [
|
|||||||
TRANSFER_DATA_KEYS = [item[0] for item in TRANSFER_DATA_TYPES]
|
TRANSFER_DATA_KEYS = [item[0] for item in TRANSFER_DATA_TYPES]
|
||||||
|
|
||||||
VERTEX_GROUP_KEY = TRANSFER_DATA_KEYS[1]
|
VERTEX_GROUP_KEY = TRANSFER_DATA_KEYS[1]
|
||||||
MODIFIER_KEY = TRANSFER_DATA_KEYS[2]
|
VERTEX_COLOR_KEY = TRANSFER_DATA_KEYS[2]
|
||||||
CONSTRAINT_KEY = TRANSFER_DATA_KEYS[3]
|
MODIFIER_KEY = TRANSFER_DATA_KEYS[3]
|
||||||
MATERIAL_SLOT_KEY = TRANSFER_DATA_KEYS[4]
|
CONSTRAINT_KEY = TRANSFER_DATA_KEYS[4]
|
||||||
|
MATERIAL_SLOT_KEY = TRANSFER_DATA_KEYS[5]
|
||||||
|
|
||||||
|
|
||||||
PUBLISH_TYPES = [
|
PUBLISH_TYPES = [
|
||||||
|
@ -53,6 +53,7 @@ def get_transfer_data(obj: bpy.types.Object, task_layer_name: str, temp_transfer
|
|||||||
transfer_functions.get_material_slots(obj, task_layer_name, temp_transfer_data)
|
transfer_functions.get_material_slots(obj, task_layer_name, temp_transfer_data)
|
||||||
transfer_functions.get_modifiers(obj, task_layer_name, temp_transfer_data)
|
transfer_functions.get_modifiers(obj, task_layer_name, temp_transfer_data)
|
||||||
transfer_functions.get_constraints(obj, task_layer_name, temp_transfer_data)
|
transfer_functions.get_constraints(obj, task_layer_name, temp_transfer_data)
|
||||||
|
transfer_functions.get_vertex_colors(obj, task_layer_name, temp_transfer_data)
|
||||||
|
|
||||||
|
|
||||||
def apply_transfer_data(context: bpy.types.Context, transfer_data_map) -> None:
|
def apply_transfer_data(context: bpy.types.Context, transfer_data_map) -> None:
|
||||||
@ -81,6 +82,12 @@ def apply_transfer_data(context: bpy.types.Context, transfer_data_map) -> None:
|
|||||||
obj_target=target_obj,
|
obj_target=target_obj,
|
||||||
obj_source=item.id_data,
|
obj_source=item.id_data,
|
||||||
)
|
)
|
||||||
|
if item.type == constants.VERTEX_COLOR_KEY:
|
||||||
|
transfer_functions.transfer_vertex_colors(
|
||||||
|
vertex_color_name=item.name,
|
||||||
|
obj_target=target_obj,
|
||||||
|
obj_source=item.id_data,
|
||||||
|
)
|
||||||
if item.type == constants.MODIFIER_KEY:
|
if item.type == constants.MODIFIER_KEY:
|
||||||
print(f"Transfering Data {constants.MODIFIER_KEY}: {name}")
|
print(f"Transfering Data {constants.MODIFIER_KEY}: {name}")
|
||||||
transfer_functions.transfer_modifier(item, target_obj)
|
transfer_functions.transfer_modifier(item, target_obj)
|
||||||
|
@ -59,6 +59,53 @@ def transfer_vertex_group(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def vertex_color_is_missing(item):
|
||||||
|
obj = item.id_data
|
||||||
|
if item.type == constants.VERTEX_COLOR_KEY and not obj.data.vertex_colors.get(
|
||||||
|
item["name"]
|
||||||
|
):
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
def get_vertex_colors(obj, task_layer_name, new_transfer_data):
|
||||||
|
ownership = obj.transfer_data_ownership
|
||||||
|
if not obj.type == "MESH":
|
||||||
|
return
|
||||||
|
for vertex_color in obj.data.vertex_colors:
|
||||||
|
# Only add new ownership item if vertex color doesn't have an owner
|
||||||
|
matches = transfer_core.check_transfer_data_entry(
|
||||||
|
ownership, vertex_color.name, constants.VERTEX_COLOR_KEY
|
||||||
|
)
|
||||||
|
if len(matches) == 0:
|
||||||
|
item = new_transfer_data.add()
|
||||||
|
item.name = vertex_color.name
|
||||||
|
item.owner = task_layer_name
|
||||||
|
item.type = constants.VERTEX_COLOR_KEY
|
||||||
|
item.obj = obj
|
||||||
|
|
||||||
|
|
||||||
|
def transfer_vertex_colors(
|
||||||
|
vertex_color_name: str,
|
||||||
|
obj_target: bpy.types.Object,
|
||||||
|
obj_source: bpy.types.Object,
|
||||||
|
):
|
||||||
|
old_color = obj_target.data.vertex_colors.get(vertex_color_name)
|
||||||
|
if old_color:
|
||||||
|
obj_target.data.vertex_colors.remove(old_color)
|
||||||
|
transfer_color = obj_source.data.vertex_colors.get(vertex_color_name)
|
||||||
|
new_color = obj_target.data.vertex_colors.new(
|
||||||
|
name=transfer_color.name, do_init=False
|
||||||
|
)
|
||||||
|
for loop in obj_target.data.loops:
|
||||||
|
new_color.data[loop.index].color = transfer_color.data[loop.index].color
|
||||||
|
# ABOVE FOR LOOP IS FOR TOPOLOGY THAT MATCHES
|
||||||
|
# BELOW COMMENTED OUT CODE IS FOR TOPOLOGY THAT DOESN'T MATCH
|
||||||
|
# else:
|
||||||
|
# for vcol_from in obj_source.data.vertex_colors:
|
||||||
|
# vcol_to = obj_target.data.vertex_colors.new(name=vcol_from.name, do_init=False)
|
||||||
|
# transfer_corner_data(obj_source, obj_target, vcol_from.data, vcol_to.data, data_suffix = 'color')
|
||||||
|
|
||||||
|
|
||||||
# MODIFIERS
|
# MODIFIERS
|
||||||
def modifiers_is_missing(item):
|
def modifiers_is_missing(item):
|
||||||
obj = item.id_data
|
obj = item.id_data
|
||||||
|
@ -21,6 +21,7 @@ def draw_transfer_data(
|
|||||||
) -> None:
|
) -> None:
|
||||||
"""Draw UI List of Transfer Data"""
|
"""Draw UI List of Transfer Data"""
|
||||||
vertex_groups = []
|
vertex_groups = []
|
||||||
|
vertex_colors = []
|
||||||
material_slots = []
|
material_slots = []
|
||||||
modifiers = []
|
modifiers = []
|
||||||
constraints = []
|
constraints = []
|
||||||
@ -28,6 +29,8 @@ def draw_transfer_data(
|
|||||||
for item in ownership:
|
for item in ownership:
|
||||||
if item.type == constants.VERTEX_GROUP_KEY:
|
if item.type == constants.VERTEX_GROUP_KEY:
|
||||||
vertex_groups.append(item)
|
vertex_groups.append(item)
|
||||||
|
if item.type == constants.VERTEX_COLOR_KEY:
|
||||||
|
vertex_colors.append(item)
|
||||||
if item.type == constants.MATERIAL_SLOT_KEY:
|
if item.type == constants.MATERIAL_SLOT_KEY:
|
||||||
material_slots.append(item)
|
material_slots.append(item)
|
||||||
if item.type == constants.MODIFIER_KEY:
|
if item.type == constants.MODIFIER_KEY:
|
||||||
@ -36,6 +39,7 @@ def draw_transfer_data(
|
|||||||
constraints.append(item)
|
constraints.append(item)
|
||||||
|
|
||||||
draw_transfer_data_type(layout, vertex_groups)
|
draw_transfer_data_type(layout, vertex_groups)
|
||||||
|
draw_transfer_data_type(layout, vertex_colors)
|
||||||
draw_transfer_data_type(layout, modifiers)
|
draw_transfer_data_type(layout, modifiers)
|
||||||
draw_transfer_data_type(layout, material_slots)
|
draw_transfer_data_type(layout, material_slots)
|
||||||
draw_transfer_data_type(layout, constraints)
|
draw_transfer_data_type(layout, constraints)
|
||||||
|
Loading…
Reference in New Issue
Block a user