forked from bartvdbraak/blender
etch-a-ton RNA and UI, back in 2.5
This commit is contained in:
parent
fcc27ca8aa
commit
b8141658a8
@ -1379,6 +1379,48 @@ class VIEW3D_PT_transform_orientations(bpy.types.Panel):
|
||||
col.itemR(orientation, "name")
|
||||
col.itemO("tfm.delete_orientation", text="Delete")
|
||||
|
||||
class VIEW3D_PT_etch_a_ton(bpy.types.Panel):
|
||||
__space_type__ = 'VIEW_3D'
|
||||
__region_type__ = 'UI'
|
||||
__label__ = "Skeleton Sketching"
|
||||
__default_closed__ = True
|
||||
|
||||
def poll(self, context):
|
||||
scene = context.space_data
|
||||
ob = context.active_object
|
||||
return scene and ob and ob.type == 'ARMATURE' and ob.mode == 'EDIT'
|
||||
|
||||
def draw_header(self, context):
|
||||
layout = self.layout
|
||||
toolsettings = context.scene.tool_settings
|
||||
|
||||
layout.itemR(toolsettings, "bone_sketching", text="")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
toolsettings = context.scene.tool_settings
|
||||
|
||||
col = layout.column()
|
||||
|
||||
col.itemR(toolsettings, "etch_quick")
|
||||
col.itemR(toolsettings, "etch_overdraw")
|
||||
|
||||
col.itemR(toolsettings, "etch_convert_mode")
|
||||
|
||||
if toolsettings.etch_convert_mode == "LENGTH":
|
||||
col.itemR(toolsettings, "etch_length_limit")
|
||||
elif toolsettings.etch_convert_mode == "ADAPTIVE":
|
||||
col.itemR(toolsettings, "etch_adaptive_limit")
|
||||
elif toolsettings.etch_convert_mode == "FIXED":
|
||||
col.itemR(toolsettings, "etch_subdivision_number")
|
||||
elif toolsettings.etch_convert_mode == "RETARGET":
|
||||
col.itemR(toolsettings, "etch_template")
|
||||
col.itemR(toolsettings, "etch_roll_mode")
|
||||
col.itemR(toolsettings, "etch_autoname")
|
||||
col.itemR(toolsettings, "etch_number")
|
||||
col.itemR(toolsettings, "etch_side")
|
||||
|
||||
|
||||
# Operators
|
||||
|
||||
class OBJECT_OT_select_pattern(bpy.types.Operator):
|
||||
@ -1497,6 +1539,7 @@ bpy.types.register(VIEW3D_PT_3dview_meshdisplay)
|
||||
bpy.types.register(VIEW3D_PT_3dview_curvedisplay)
|
||||
bpy.types.register(VIEW3D_PT_background_image)
|
||||
bpy.types.register(VIEW3D_PT_transform_orientations)
|
||||
bpy.types.register(VIEW3D_PT_etch_a_ton)
|
||||
|
||||
bpy.ops.add(OBJECT_OT_select_pattern)
|
||||
|
||||
|
@ -214,6 +214,22 @@ void ED_keymap_armature(wmKeyConfig *keyconf)
|
||||
keymap= WM_keymap_find(keyconf, "Armature", 0, 0);
|
||||
keymap->poll= ED_operator_editarmature;
|
||||
|
||||
/* Armature -> Etch-A-Ton ------------------------ */
|
||||
WM_keymap_add_item(keymap, "SKETCH_OT_delete", XKEY, KM_PRESS, 0, 0);
|
||||
WM_keymap_add_item(keymap, "SKETCH_OT_delete", DELKEY, KM_PRESS, 0, 0);
|
||||
WM_keymap_add_item(keymap, "SKETCH_OT_finish_stroke", SELECTMOUSE, KM_PRESS, 0, 0);
|
||||
WM_keymap_add_item(keymap, "SKETCH_OT_cancel_stroke", ESCKEY, KM_PRESS, 0, 0);
|
||||
WM_keymap_add_item(keymap, "SKETCH_OT_select", SELECTMOUSE, KM_PRESS, 0, 0);
|
||||
|
||||
/* sketch poll checks mode */
|
||||
WM_keymap_add_item(keymap, "SKETCH_OT_gesture", ACTIONMOUSE, KM_PRESS, KM_SHIFT, 0);
|
||||
WM_keymap_add_item(keymap, "SKETCH_OT_draw_stroke", ACTIONMOUSE, KM_PRESS, 0, 0);
|
||||
kmi = WM_keymap_add_item(keymap, "SKETCH_OT_draw_stroke", ACTIONMOUSE, KM_PRESS, KM_CTRL, 0);
|
||||
RNA_boolean_set(kmi->ptr, "snap", 1);
|
||||
WM_keymap_add_item(keymap, "SKETCH_OT_draw_preview", MOUSEMOVE, KM_ANY, 0, 0);
|
||||
kmi = WM_keymap_add_item(keymap, "SKETCH_OT_draw_preview", MOUSEMOVE, KM_ANY, KM_CTRL, 0);
|
||||
RNA_boolean_set(kmi->ptr, "snap", 1);
|
||||
|
||||
/* only set in editmode armature, by space_view3d listener */
|
||||
// WM_keymap_add_item(keymap, "ARMATURE_OT_hide", HKEY, KM_PRESS, 0, 0);
|
||||
WM_keymap_add_item(keymap, "ARMATURE_OT_align", AKEY, KM_PRESS, KM_CTRL|KM_ALT, 0);
|
||||
@ -278,22 +294,6 @@ void ED_keymap_armature(wmKeyConfig *keyconf)
|
||||
/* 2) set roll */
|
||||
kmi= WM_keymap_add_item(keymap, "TFM_OT_transform", RKEY, KM_PRESS, KM_CTRL, 0);
|
||||
RNA_enum_set(kmi->ptr, "mode", TFM_BONE_ROLL);
|
||||
|
||||
/* Armature -> Etch-A-Ton ------------------------ */
|
||||
WM_keymap_add_item(keymap, "SKETCH_OT_delete", XKEY, KM_PRESS, 0, 0);
|
||||
WM_keymap_add_item(keymap, "SKETCH_OT_delete", DELKEY, KM_PRESS, 0, 0);
|
||||
WM_keymap_add_item(keymap, "SKETCH_OT_finish_stroke", SELECTMOUSE, KM_PRESS, 0, 0);
|
||||
WM_keymap_add_item(keymap, "SKETCH_OT_cancel_stroke", ESCKEY, KM_PRESS, 0, 0);
|
||||
WM_keymap_add_item(keymap, "SKETCH_OT_select", SELECTMOUSE, KM_PRESS, 0, 0);
|
||||
|
||||
/* sketch poll checks mode */
|
||||
WM_keymap_add_item(keymap, "SKETCH_OT_gesture", ACTIONMOUSE, KM_PRESS, KM_SHIFT, 0);
|
||||
WM_keymap_add_item(keymap, "SKETCH_OT_draw_stroke", ACTIONMOUSE, KM_PRESS, 0, 0);
|
||||
kmi = WM_keymap_add_item(keymap, "SKETCH_OT_draw_stroke", ACTIONMOUSE, KM_PRESS, KM_CTRL, 0);
|
||||
RNA_boolean_set(kmi->ptr, "snap", 1);
|
||||
WM_keymap_add_item(keymap, "SKETCH_OT_draw_preview", MOUSEMOVE, KM_ANY, 0, 0);
|
||||
kmi = WM_keymap_add_item(keymap, "SKETCH_OT_draw_preview", MOUSEMOVE, KM_ANY, KM_CTRL, 0);
|
||||
RNA_boolean_set(kmi->ptr, "snap", 1);
|
||||
|
||||
/* Pose ------------------------ */
|
||||
/* only set in posemode, by space_view3d listener */
|
||||
|
@ -1169,6 +1169,7 @@ typedef enum SculptFlags {
|
||||
#define SK_RETARGET_AUTONAME 1
|
||||
|
||||
/* toolsettings->skgen_retarget_roll */
|
||||
#define SK_RETARGET_ROLL_NONE 0
|
||||
#define SK_RETARGET_ROLL_VIEW 1
|
||||
#define SK_RETARGET_ROLL_JOINT 2
|
||||
|
||||
|
@ -95,6 +95,15 @@ static PointerRNA rna_Scene_objects_get(CollectionPropertyIterator *iter)
|
||||
return rna_pointer_inherit_refine(&iter->parent, &RNA_Object, ((Base*)internal->link)->object);
|
||||
}
|
||||
|
||||
static void rna_Scene_skgen_etch_template_set(PointerRNA *ptr, PointerRNA value)
|
||||
{
|
||||
ToolSettings *ts = (ToolSettings*)ptr->data;
|
||||
if(value.data && ((Object*)value.data)->type == OB_ARMATURE)
|
||||
ts->skgen_template = value.data;
|
||||
else
|
||||
ts->skgen_template = NULL;
|
||||
}
|
||||
|
||||
static PointerRNA rna_Scene_active_object_get(PointerRNA *ptr)
|
||||
{
|
||||
Scene *scene= (Scene*)ptr->data;
|
||||
@ -523,6 +532,19 @@ static void rna_def_tool_settings(BlenderRNA *brna)
|
||||
{AUTOKEY_MODE_EDITKEYS, "REPLACE_KEYS", 0, "Replace", ""},
|
||||
{0, NULL, 0, NULL, NULL}};
|
||||
|
||||
static EnumPropertyItem retarget_roll_items[] = {
|
||||
{SK_RETARGET_ROLL_NONE, "NONE", 0, "None", "Don't adjust roll."},
|
||||
{SK_RETARGET_ROLL_VIEW, "VIEW", 0, "View", "Roll bones to face the view."},
|
||||
{SK_RETARGET_ROLL_JOINT, "JOINT", 0, "Joint", "Roll bone to original joint plane offset."},
|
||||
{0, NULL, 0, NULL, NULL}};
|
||||
|
||||
static EnumPropertyItem sketch_convert_items[] = {
|
||||
{SK_CONVERT_CUT_FIXED, "FIXED", 0, "Fixed", "Subdivide stroke in fixed number of bones."},
|
||||
{SK_CONVERT_CUT_LENGTH, "LENGTH", 0, "Length", "Subdivide stroke in bones of specific length."},
|
||||
{SK_CONVERT_CUT_ADAPTATIVE, "ADAPTIVE", 0, "Adaptive", "Subdivide stroke adaptively, with more subdivision in curvier parts."},
|
||||
{SK_CONVERT_RETARGET, "RETARGET", 0, "Retarget", "Retarget template bone chain to stroke."},
|
||||
{0, NULL, 0, NULL, NULL}};
|
||||
|
||||
srna= RNA_def_struct(brna, "ToolSettings", NULL);
|
||||
RNA_def_struct_ui_text(srna, "Tool Settings", "");
|
||||
|
||||
@ -638,6 +660,70 @@ static void rna_def_tool_settings(BlenderRNA *brna)
|
||||
prop= RNA_def_property(srna, "vertex_group_weight", PROP_FLOAT, PROP_FACTOR);
|
||||
RNA_def_property_float_sdna(prop, NULL, "vgroup_weight");
|
||||
RNA_def_property_ui_text(prop, "Vertex Group Weight", "Weight to assign in vertex groups.");
|
||||
|
||||
/* etch-a-ton */
|
||||
prop= RNA_def_property(srna, "bone_sketching", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "bone_sketching", BONE_SKETCHING);
|
||||
RNA_def_property_ui_text(prop, "Use Bone Sketching", "DOC BROKEN");
|
||||
// RNA_def_property_ui_icon(prop, ICON_EDIT, 0);
|
||||
|
||||
prop= RNA_def_property(srna, "etch_quick", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "bone_sketching", BONE_SKETCHING_QUICK);
|
||||
RNA_def_property_ui_text(prop, "Quick Sketching", "DOC BROKEN");
|
||||
|
||||
prop= RNA_def_property(srna, "etch_overdraw", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "bone_sketching", BONE_SKETCHING_ADJUST);
|
||||
RNA_def_property_ui_text(prop, "Overdraw Sketching", "DOC BROKEN");
|
||||
|
||||
prop= RNA_def_property(srna, "etch_autoname", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "skgen_retarget_options", SK_RETARGET_AUTONAME);
|
||||
RNA_def_property_ui_text(prop, "Autoname", "DOC BROKEN");
|
||||
|
||||
prop= RNA_def_property(srna, "etch_number", PROP_STRING, PROP_NONE);
|
||||
RNA_def_property_string_sdna(prop, NULL, "skgen_num_string");
|
||||
RNA_def_property_ui_text(prop, "Number", "DOC BROKEN");
|
||||
|
||||
prop= RNA_def_property(srna, "etch_side", PROP_STRING, PROP_NONE);
|
||||
RNA_def_property_string_sdna(prop, NULL, "skgen_num_string");
|
||||
RNA_def_property_ui_text(prop, "Side", "DOC BROKEN");
|
||||
|
||||
prop= RNA_def_property(srna, "etch_template", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_pointer_sdna(prop, NULL, "skgen_template");
|
||||
RNA_def_property_flag(prop, PROP_EDITABLE);
|
||||
RNA_def_property_struct_type(prop, "Object");
|
||||
RNA_def_property_pointer_funcs(prop, NULL, "rna_Scene_skgen_etch_template_set", NULL);
|
||||
RNA_def_property_ui_text(prop, "Template", "Template armature that will be retargeted to the stroke.");
|
||||
|
||||
prop= RNA_def_property(srna, "etch_subdivision_number", PROP_INT, PROP_NONE);
|
||||
RNA_def_property_int_sdna(prop, NULL, "skgen_subdivision_number");
|
||||
RNA_def_property_range(prop, 1, 10000);
|
||||
RNA_def_property_ui_text(prop, "Subdivisions", "Number of bones in the subdivided stroke.");
|
||||
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
|
||||
|
||||
prop= RNA_def_property(srna, "etch_adaptive_limit", PROP_FLOAT, PROP_FACTOR);
|
||||
RNA_def_property_float_sdna(prop, NULL, "skgen_correlation_limit");
|
||||
RNA_def_property_range(prop, 0.00001, 1.0);
|
||||
RNA_def_property_ui_range(prop, 0.01, 1.0, 0.01, 2);
|
||||
RNA_def_property_ui_text(prop, "Limit", "Number of bones in the subdivided stroke.");
|
||||
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
|
||||
|
||||
prop= RNA_def_property(srna, "etch_length_limit", PROP_FLOAT, PROP_DISTANCE);
|
||||
RNA_def_property_float_sdna(prop, NULL, "skgen_length_limit");
|
||||
RNA_def_property_range(prop, 0.00001, 100000.0);
|
||||
RNA_def_property_ui_range(prop, 0.001, 100.0, 0.1, 3);
|
||||
RNA_def_property_ui_text(prop, "Length", "Number of bones in the subdivided stroke.");
|
||||
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
|
||||
|
||||
prop= RNA_def_property(srna, "etch_roll_mode", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_bitflag_sdna(prop, NULL, "skgen_retarget_roll");
|
||||
RNA_def_property_enum_items(prop, retarget_roll_items);
|
||||
RNA_def_property_ui_text(prop, "Retarget roll mode", "Method used to adjust the roll of bones when retargeting.");
|
||||
|
||||
prop= RNA_def_property(srna, "etch_convert_mode", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_bitflag_sdna(prop, NULL, "bone_sketching_convert");
|
||||
RNA_def_property_enum_items(prop, sketch_convert_items);
|
||||
RNA_def_property_ui_text(prop, "Stroke conversion method", "Method used to convert stroke to bones.");
|
||||
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user