[Bf-blender-cvs] [68f470bc35a] rigid_deform: bind operator

Jacques Lucke noreply at git.blender.org
Thu Jan 31 19:55:35 CET 2019


Commit: 68f470bc35a024548025d05cffa41b18942f0f12
Author: Jacques Lucke
Date:   Sun Dec 9 12:32:02 2018 +0100
Branches: rigid_deform
https://developer.blender.org/rB68f470bc35a024548025d05cffa41b18942f0f12

bind operator

===================================================================

M	release/scripts/startup/bl_ui/properties_data_modifier.py
M	source/blender/editors/object/object_intern.h
M	source/blender/editors/object/object_modifier.c
M	source/blender/editors/object/object_ops.c
M	source/blender/makesdna/DNA_modifier_types.h
M	source/blender/makesrna/RNA_access.h
M	source/blender/modifiers/intern/MOD_rigiddeform.c

===================================================================

diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py
index 8e31e7d6961..28cfa9bf6fa 100644
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@ -1635,6 +1635,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
 
     def RIGID_DEFORM(self, layout, ob, md):
         layout.prop_search(md, "anchor_group_name", ob, "vertex_groups", text="Anchors")
+        layout.operator("object.rigiddeform_bind", text="Bind")
 
 
 class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
diff --git a/source/blender/editors/object/object_intern.h b/source/blender/editors/object/object_intern.h
index 1ef0b0f268c..f72eec99763 100644
--- a/source/blender/editors/object/object_intern.h
+++ b/source/blender/editors/object/object_intern.h
@@ -174,6 +174,7 @@ void OBJECT_OT_skin_loose_mark_clear(struct wmOperatorType *ot);
 void OBJECT_OT_skin_radii_equalize(struct wmOperatorType *ot);
 void OBJECT_OT_skin_armature_create(struct wmOperatorType *ot);
 void OBJECT_OT_laplaciandeform_bind(struct wmOperatorType *ot);
+void OBJECT_OT_rigiddeform_bind(struct wmOperatorType *ot);
 void OBJECT_OT_surfacedeform_bind(struct wmOperatorType *ot);
 
 /* grease pencil modifiers */
diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c
index 02ee1f9c360..3d017e69138 100644
--- a/source/blender/editors/object/object_modifier.c
+++ b/source/blender/editors/object/object_modifier.c
@@ -2342,6 +2342,44 @@ void OBJECT_OT_laplaciandeform_bind(wmOperatorType *ot)
 	edit_modifier_properties(ot);
 }
 
+/************************ RigidDeform bind operator *********************/
+
+static bool rigiddeform_bind_poll(bContext *C)
+{
+	return edit_modifier_poll_generic(C, &RNA_RigidDeformModifier, 0);
+}
+
+static int rigiddeform_bind_exec(bContext *UNUSED(C), wmOperator *UNUSED(op))
+{
+	printf("Hello World\n");
+	return OPERATOR_FINISHED;
+}
+
+static int rigiddeform_bind_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
+{
+	if (edit_modifier_invoke_properties(C, op))
+		return rigiddeform_bind_exec(C, op);
+	else
+		return OPERATOR_CANCELLED;
+}
+
+void OBJECT_OT_rigiddeform_bind(wmOperatorType *ot)
+{
+	/* identifiers */
+	ot->name = "Rigid Deform Bind";
+	ot->description = "Bind current mesh as relaxed state to rigid deform modifier";
+	ot->idname = "OBJECT_OT_rigiddeform_bind";
+
+	/* api callbacks */
+	ot->poll = rigiddeform_bind_poll;
+	ot->invoke = rigiddeform_bind_invoke;
+	ot->exec = rigiddeform_bind_exec;
+
+	/* flags */
+	ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO | OPTYPE_INTERNAL;
+	edit_modifier_properties(ot);
+}
+
 /************************ sdef bind operator *********************/
 
 static bool surfacedeform_bind_poll(bContext *C)
diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c
index eb9dd0bbe28..f32f23b49d0 100644
--- a/source/blender/editors/object/object_ops.c
+++ b/source/blender/editors/object/object_ops.c
@@ -259,6 +259,7 @@ void ED_operatortypes_object(void)
 	WM_operatortype_append(OBJECT_OT_drop_named_material);
 	WM_operatortype_append(OBJECT_OT_unlink_data);
 	WM_operatortype_append(OBJECT_OT_laplaciandeform_bind);
+	WM_operatortype_append(OBJECT_OT_rigiddeform_bind);
 
 	WM_operatortype_append(TRANSFORM_OT_vertex_random);
 
diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h
index 02eabdc04b6..5d58efe423b 100644
--- a/source/blender/makesdna/DNA_modifier_types.h
+++ b/source/blender/makesdna/DNA_modifier_types.h
@@ -1948,9 +1948,15 @@ enum {
 #define MOD_MESHSEQ_READ_ALL \
 	(MOD_MESHSEQ_READ_VERT | MOD_MESHSEQ_READ_POLY | MOD_MESHSEQ_READ_UV | MOD_MESHSEQ_READ_COLOR)
 
+typedef struct RigidDeformModifierBindData {
+	int *anchor_indices;
+} RigidDeformModifierBindData;
+
 typedef struct RigidDeformModifierData {
 	ModifierData modifier;
 	char anchor_group_name[64];  /* MAX_VGROUP_NAME */
+	RigidDeformModifierBindData *bind_data;
+	char bind_next_execution, pad[7];
 } RigidDeformModifierData;
 
 #endif  /* __DNA_MODIFIER_TYPES_H__ */
diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h
index 671b3dd871e..2368819b0ac 100644
--- a/source/blender/makesrna/RNA_access.h
+++ b/source/blender/makesrna/RNA_access.h
@@ -524,6 +524,7 @@ extern StructRNA RNA_RenderSettings;
 extern StructRNA RNA_RigidBodyJointConstraint;
 extern StructRNA RNA_RigidBodyObject;
 extern StructRNA RNA_RigidBodyWorld;
+extern StructRNA RNA_RigidDeformModifier;
 extern StructRNA RNA_SPHFluidSettings;
 extern StructRNA RNA_Scene;
 extern StructRNA RNA_SceneDisplay;
diff --git a/source/blender/modifiers/intern/MOD_rigiddeform.c b/source/blender/modifiers/intern/MOD_rigiddeform.c
index 7f40dddde9a..2da1d1235fa 100644
--- a/source/blender/modifiers/intern/MOD_rigiddeform.c
+++ b/source/blender/modifiers/intern/MOD_rigiddeform.c
@@ -50,6 +50,10 @@ static void deformVerts(
 
 static void initData(ModifierData *md)
 {
+	RigidDeformModifierData *rdmd = (RigidDeformModifierData *)md;
+	rdmd->anchor_group_name[0] = '\0';
+	rdmd->bind_data = NULL;
+	rdmd->bind_next_execution = false;
 }
 
  ModifierTypeInfo modifierType_RigidDeform = {



More information about the Bf-blender-cvs mailing list