Option to prioritize active color at export #104435
@ -482,6 +482,13 @@ class ExportFBX(bpy.types.Operator, ExportHelper):
|
|||||||
description="Export vertex color attributes",
|
description="Export vertex color attributes",
|
||||||
default='SRGB',
|
default='SRGB',
|
||||||
)
|
)
|
||||||
|
prioritize_active_color: BoolProperty(
|
||||||
|
name="Prioritize Active Color",
|
||||||
|
description="Make sure active color will be exported first. Could be important "
|
||||||
|
"since some other software can discard other color attributes besides the first one "
|
||||||
|
"(e.g. 3ds Max, Substance Painter)",
|
||||||
|
|||||||
|
default=False,
|
||||||
|
)
|
||||||
use_subsurf: BoolProperty(
|
use_subsurf: BoolProperty(
|
||||||
name="Export Subdivision Surface",
|
name="Export Subdivision Surface",
|
||||||
description="Export the last Catmull-Rom subdivision modifier as FBX subdivision "
|
description="Export the last Catmull-Rom subdivision modifier as FBX subdivision "
|
||||||
@ -787,6 +794,7 @@ class FBX_PT_export_geometry(bpy.types.Panel):
|
|||||||
#~ sub.enabled = operator.mesh_smooth_type in {'OFF'}
|
#~ sub.enabled = operator.mesh_smooth_type in {'OFF'}
|
||||||
sub.prop(operator, "use_tspace")
|
sub.prop(operator, "use_tspace")
|
||||||
layout.prop(operator, "colors_type")
|
layout.prop(operator, "colors_type")
|
||||||
|
layout.prop(operator, "prioritize_active_color")
|
||||||
|
|
||||||
|
|
||||||
class FBX_PT_export_armature(bpy.types.Panel):
|
class FBX_PT_export_armature(bpy.types.Panel):
|
||||||
|
@ -1257,7 +1257,12 @@ def fbx_data_mesh_elements(root, me_obj, scene_data, done_meshes):
|
|||||||
fbx_lcidx_dtype = np.int32
|
fbx_lcidx_dtype = np.int32
|
||||||
t_lvi = None
|
t_lvi = None
|
||||||
|
|
||||||
for colindex, collayer in enumerate(me.color_attributes):
|
color_attributes = me.color_attributes
|
||||||
|
if scene_data.settings.prioritize_active_color:
|
||||||
|
active_color = me.color_attributes.active_color
|
||||||
|
color_attributes = sorted(color_attributes, key=lambda x: x == active_color, reverse=True)
|
||||||
|
|
||||||
|
for colindex, collayer in enumerate(color_attributes):
|
||||||
is_point = collayer.domain == "POINT"
|
is_point = collayer.domain == "POINT"
|
||||||
vcollen = len(me.vertices if is_point else me.loops)
|
vcollen = len(me.vertices if is_point else me.loops)
|
||||||
# Each rgba component is flattened in the array
|
# Each rgba component is flattened in the array
|
||||||
@ -3290,6 +3295,7 @@ def save_single(operator, scene, depsgraph, filepath="",
|
|||||||
bake_space_transform=False,
|
bake_space_transform=False,
|
||||||
armature_nodetype='NULL',
|
armature_nodetype='NULL',
|
||||||
colors_type='SRGB',
|
colors_type='SRGB',
|
||||||
|
prioritize_active_color=False,
|
||||||
**kwargs
|
**kwargs
|
||||||
):
|
):
|
||||||
|
|
||||||
@ -3357,7 +3363,7 @@ def save_single(operator, scene, depsgraph, filepath="",
|
|||||||
add_leaf_bones, bone_correction_matrix, bone_correction_matrix_inv,
|
add_leaf_bones, bone_correction_matrix, bone_correction_matrix_inv,
|
||||||
bake_anim, bake_anim_use_all_bones, bake_anim_use_nla_strips, bake_anim_use_all_actions,
|
bake_anim, bake_anim_use_all_bones, bake_anim_use_nla_strips, bake_anim_use_all_actions,
|
||||||
bake_anim_step, bake_anim_simplify_factor, bake_anim_force_startend_keying,
|
bake_anim_step, bake_anim_simplify_factor, bake_anim_force_startend_keying,
|
||||||
False, media_settings, use_custom_props, colors_type,
|
False, media_settings, use_custom_props, colors_type, prioritize_active_color
|
||||||
)
|
)
|
||||||
|
|
||||||
import bpy_extras.io_utils
|
import bpy_extras.io_utils
|
||||||
|
@ -1489,7 +1489,7 @@ FBXExportSettings = namedtuple("FBXExportSettings", (
|
|||||||
"bone_correction_matrix", "bone_correction_matrix_inv",
|
"bone_correction_matrix", "bone_correction_matrix_inv",
|
||||||
"bake_anim", "bake_anim_use_all_bones", "bake_anim_use_nla_strips", "bake_anim_use_all_actions",
|
"bake_anim", "bake_anim_use_all_bones", "bake_anim_use_nla_strips", "bake_anim_use_all_actions",
|
||||||
"bake_anim_step", "bake_anim_simplify_factor", "bake_anim_force_startend_keying",
|
"bake_anim_step", "bake_anim_simplify_factor", "bake_anim_force_startend_keying",
|
||||||
"use_metadata", "media_settings", "use_custom_props", "colors_type",
|
"use_metadata", "media_settings", "use_custom_props", "colors_type", "prioritize_active_color"
|
||||||
))
|
))
|
||||||
|
|
||||||
# Helper container gathering some data we need multiple times:
|
# Helper container gathering some data we need multiple times:
|
||||||
|
Loading…
Reference in New Issue
Block a user
No closed-source software names please, this can cause copyright etc. issues. ;)
That information could save some time to users but I guess it's better to be safe than sorry 🥲
Indeed (also, no end point in UI messages ;) )