[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58925] branches/ soc-2013-meshdata_transfer: Vertex Groups transfer: registering its operator, other transfer function: changes in the description/error reports strings
Walid Shouman
eng.walidshouman at gmail.com
Mon Aug 5 07:27:50 CEST 2013
Revision: 58925
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58925
Author: walid
Date: 2013-08-05 05:27:49 +0000 (Mon, 05 Aug 2013)
Log Message:
-----------
Vertex Groups transfer: registering its operator, other transfer function: changes in the description/error reports strings
Modified Paths:
--------------
branches/soc-2013-meshdata_transfer/release/scripts/startup/bl_ui/space_view3d_toolbar.py
branches/soc-2013-meshdata_transfer/source/blender/bmesh/tools/bmesh_data_transfer.c
branches/soc-2013-meshdata_transfer/source/blender/bmesh/tools/bmesh_data_transfer.h
branches/soc-2013-meshdata_transfer/source/blender/editors/mesh/mesh_data.c
branches/soc-2013-meshdata_transfer/source/blender/editors/object/object_intern.h
branches/soc-2013-meshdata_transfer/source/blender/editors/object/object_ops.c
branches/soc-2013-meshdata_transfer/source/blender/editors/object/object_shapekey.c
branches/soc-2013-meshdata_transfer/source/blender/editors/object/object_vgroup.c
Modified: branches/soc-2013-meshdata_transfer/release/scripts/startup/bl_ui/space_view3d_toolbar.py
===================================================================
--- branches/soc-2013-meshdata_transfer/release/scripts/startup/bl_ui/space_view3d_toolbar.py 2013-08-05 05:20:09 UTC (rev 58924)
+++ branches/soc-2013-meshdata_transfer/release/scripts/startup/bl_ui/space_view3d_toolbar.py 2013-08-05 05:27:49 UTC (rev 58925)
@@ -117,6 +117,7 @@
col.operator("object.shape_key_transfer_new", text="Transfer Shapekeys (new)")
col.operator("mesh.uv_transfer_new", text="Transfer UVs (new)")
col.operator("mesh.vertex_color_transfer_new", text="Transfer Colors (new)")
+ col.operator("object.vgroup_transfer_new", text="Transfer Vertex Groups (new)")
class VIEW3D_PT_tools_rigidbody(View3DPanel, Panel):
Modified: branches/soc-2013-meshdata_transfer/source/blender/bmesh/tools/bmesh_data_transfer.c
===================================================================
--- branches/soc-2013-meshdata_transfer/source/blender/bmesh/tools/bmesh_data_transfer.c 2013-08-05 05:20:09 UTC (rev 58924)
+++ branches/soc-2013-meshdata_transfer/source/blender/bmesh/tools/bmesh_data_transfer.c 2013-08-05 05:27:49 UTC (rev 58925)
@@ -2119,8 +2119,7 @@
int count;
} float_pool;
-bool BM_mesh_vertex_group_copy(BMesh *bm_src, BMesh* bm_dst,ST_ShapekeyGroupMode replace_mode, int *act_shapekey_lay,
- float tmp_mat[4][4])
+bool BM_mesh_vertex_group_copy(BMesh *bm_src, BMesh* bm_dst, ReplaceGroupMode replace_mode, float tmp_mat[4][4])
{
//-----algorithm definitions start
struct BMBVHTree *bmtree_src = NULL;
@@ -2188,27 +2187,25 @@
}
tmp_weight = MEM_mallocN(sizeof(*tmp_weight) * exp_vert_per_face, "tmp_weight bmesh_data_transfer.c");
- if (replace_mode == ST_APPEND_SHAPEKEY_GROUPS) {
- //add 1 to skip the basis
+ if (replace_mode == APPEND_GROUPS) {
src_lay_start = 0;
src_lay_end = tot_layer_src;
- dst_lay_start = tot_layer_dst - tot_layer_src + 1;
+ dst_lay_start = tot_layer_dst - tot_layer_src;
dst_lay_end = tot_layer_dst;
}
- else if ((replace_mode == ST_REPLACE_ENOUGH_SHAPEKEY_GROUPS) || (replace_mode == ST_REPLACE_ALL_SHAPEKEY_GROUPS)) {
+ else if ((replace_mode == REPLACE_ENOUGH_GROUPS) || (replace_mode == REPLACE_ALL_GROUPS)) {
src_lay_start = 0;
src_lay_end = tot_layer_src;
dst_lay_start = 0;
dst_lay_end = tot_layer_src;
}
- else if (replace_mode == ST_REPLACE_ACTIVE_SHAPEKEY_GROUP) {
- //passed shapekey reperesents the # of shapekeys (starts from one), however lay_start uses it as an index
- src_lay_start = act_shapekey_lay[0] - 1;
- src_lay_end = act_shapekey_lay[0];
- dst_lay_start = act_shapekey_lay[1] - 1;
- dst_lay_end = act_shapekey_lay[1];
+ else if (replace_mode == REPLACE_ACTIVE_GROUP) {
+ src_lay_start = CustomData_get_active_layer_index(&bm_src->ldata, CD_MDEFORMVERT);
+ src_lay_end = src_lay_start + 1; //stopping condition
+ dst_lay_start = CustomData_get_active_layer_index(&bm_dst->ldata, CD_MDEFORMVERT);
+ dst_lay_end = dst_lay_start + 1;
}
for (src_lay_iter = src_lay_start, dst_lay_iter = dst_lay_start; src_lay_iter < src_lay_end;
Modified: branches/soc-2013-meshdata_transfer/source/blender/bmesh/tools/bmesh_data_transfer.h
===================================================================
--- branches/soc-2013-meshdata_transfer/source/blender/bmesh/tools/bmesh_data_transfer.h 2013-08-05 05:20:09 UTC (rev 58924)
+++ branches/soc-2013-meshdata_transfer/source/blender/bmesh/tools/bmesh_data_transfer.h 2013-08-05 05:27:49 UTC (rev 58925)
@@ -68,8 +68,7 @@
int UNUSED_interp_pow, int UNUSED_no_pow, bool UNUSED_USE_NORMALS, ST_ShapekeyGroupMode replace_mode,
int *act_shapekey_lay, float tmp_mat[4][4]);
void BM_mesh_shapekey_copy_index(BMesh *bm_src, BMesh *bm_dst);
-bool BM_mesh_vertex_group_copy(BMesh *bm_src, BMesh* bm_dst,ST_ShapekeyGroupMode replace_mode, int *act_shapekey_lay,
- float tmp_mat[4][4]);
+bool BM_mesh_vertex_group_copy(BMesh *bm_src, BMesh* bm_dst, ReplaceGroupMode replace_mode, float tmp_mat[4][4]);
bool BM_mesh_vertex_color_copy(BMesh *bm_src, BMesh* bm_dst, ReplaceGroupMode replace_mode, float tmp_mat[4][4]);
#endif /* __BMESH_DATA_TRANSFER_H__ */
Modified: branches/soc-2013-meshdata_transfer/source/blender/editors/mesh/mesh_data.c
===================================================================
--- branches/soc-2013-meshdata_transfer/source/blender/editors/mesh/mesh_data.c 2013-08-05 05:20:09 UTC (rev 58924)
+++ branches/soc-2013-meshdata_transfer/source/blender/editors/mesh/mesh_data.c 2013-08-05 05:27:49 UTC (rev 58925)
@@ -540,7 +540,7 @@
if (num_src_lay < 1) {
//the source should have UV layers
BKE_report(op->reports, RPT_ERROR,
- "Transfer failed no UV groups were found (source mesh should have -at least- UV group)");
+ "Transfer failed no UV groups were found (source mesh should have -at least- 1 UV group)");
return false;
}
@@ -783,7 +783,7 @@
if (num_src_lay < 1) {
//the source should have UV layers
BKE_report(op->reports, RPT_ERROR,
- "Transfer failed no color groups were found (source mesh should have -at least- UV group)");
+ "Transfer failed no color groups were found (source mesh should have -at least- 1 Vertex col group)");
return false;
}
Modified: branches/soc-2013-meshdata_transfer/source/blender/editors/object/object_intern.h
===================================================================
--- branches/soc-2013-meshdata_transfer/source/blender/editors/object/object_intern.h 2013-08-05 05:20:09 UTC (rev 58924)
+++ branches/soc-2013-meshdata_transfer/source/blender/editors/object/object_intern.h 2013-08-05 05:27:49 UTC (rev 58925)
@@ -229,6 +229,7 @@
void OBJECT_OT_vertex_weight_set_active(struct wmOperatorType *ot);
void OBJECT_OT_vertex_weight_normalize_active_vertex(struct wmOperatorType *ot);
void OBJECT_OT_vertex_weight_copy(struct wmOperatorType *ot);
+void OBJECT_OT_vgroup_transfer_new(struct wmOperatorType *ot);
/* object_shapekey.c */
void OBJECT_OT_shape_key_add(struct wmOperatorType *ot);
Modified: branches/soc-2013-meshdata_transfer/source/blender/editors/object/object_ops.c
===================================================================
--- branches/soc-2013-meshdata_transfer/source/blender/editors/object/object_ops.c 2013-08-05 05:20:09 UTC (rev 58924)
+++ branches/soc-2013-meshdata_transfer/source/blender/editors/object/object_ops.c 2013-08-05 05:27:49 UTC (rev 58925)
@@ -201,6 +201,7 @@
WM_operatortype_append(OBJECT_OT_vertex_weight_set_active);
WM_operatortype_append(OBJECT_OT_vertex_weight_normalize_active_vertex);
WM_operatortype_append(OBJECT_OT_vertex_weight_copy);
+ WM_operatortype_append(OBJECT_OT_vgroup_transfer_new);
WM_operatortype_append(OBJECT_OT_game_property_new);
WM_operatortype_append(OBJECT_OT_game_property_remove);
Modified: branches/soc-2013-meshdata_transfer/source/blender/editors/object/object_shapekey.c
===================================================================
--- branches/soc-2013-meshdata_transfer/source/blender/editors/object/object_shapekey.c 2013-08-05 05:20:09 UTC (rev 58924)
+++ branches/soc-2013-meshdata_transfer/source/blender/editors/object/object_shapekey.c 2013-08-05 05:27:49 UTC (rev 58925)
@@ -844,7 +844,7 @@
/* identifiers */
ot->name = "Transfer Shape Key (new)";
ot->idname = "OBJECT_OT_shape_key_transfer_new";
- ot->description = "Transfer () shape key to the selected objects";
+ ot->description = "Transfer shapekey groups to the selected objects";
/* api callbacks */
ot->poll = shape_key_poll; //don't know how to edit this yet!!
Modified: branches/soc-2013-meshdata_transfer/source/blender/editors/object/object_vgroup.c
===================================================================
--- branches/soc-2013-meshdata_transfer/source/blender/editors/object/object_vgroup.c 2013-08-05 05:20:09 UTC (rev 58924)
+++ branches/soc-2013-meshdata_transfer/source/blender/editors/object/object_vgroup.c 2013-08-05 05:27:49 UTC (rev 58925)
@@ -200,6 +200,186 @@
}
}
+typedef enum TransferMode {
+ SPATIAL_TRANSFER = 1,
+ PROJECTION_TRANSFER = 2
+} TransferMode;
+
+static EnumPropertyItem transfer_mode_item[] = {
+ {SPATIAL_TRANSFER,
+ "SPATIAL_TRANSFER", 0, "Spatial transfer", "Copy by analyzing the spatial relations"},
+ {PROJECTION_TRANSFER,
+ "PROJECTION_TRANSFER", 0, "Projection transfer", "Copy by projecting the desitnation onto the source"},
+ {0, NULL, 0, NULL, NULL}
+};
+
+static EnumPropertyItem replace_mode_item[] = {
+ {REPLACE_ACTIVE_GROUP,
+ "REPLACE_ACTIVE_GROUP", 0, "Active", "Overwrite active group only"},
+ {REPLACE_ENOUGH_GROUPS,
+ "REPLACE_ENOUGH_GROUPS", 0, "Enough", "Overwrite source groups only as needed"},
+ {REPLACE_ALL_GROUPS,
+ "REPLACE_ALL_GROUPS", 0, "All", "Overwrite all groups"},
+ {APPEND_GROUPS,
+ "APPEND_GROUPS", 0, "Append", "Add groups without overwriting"},
+ {0, NULL, 0, NULL, NULL}
+};
+
+typedef enum FromToActive {
+ FROM_ACTIVE = 1,
+ TO_ACTIVE = 2
+} FromToActive;
+
+static EnumPropertyItem from_to_active[] = {
+ {FROM_ACTIVE,
+ "FROM_ACTIVE", 0, "From active", "Transfer to different objects"},
+ {TO_ACTIVE,
+ "TO_ACTIVE", 0, "To active", "Better to faster tweek the output"},
+ {0, NULL, 0, NULL, NULL}
+};
+
+
+static bool ED_mesh_vgroup_transfer(Object *ob_dst, Object *ob_src, bContext *UNUSED(C), Scene *UNUSED(scene), wmOperator * op)
+{
+ Mesh *me_dst, *me_src;
+ BMesh *bm_dst, *bm_src;
+
+ ReplaceGroupMode replace_mode = RNA_enum_get(op->ptr, "replace_mode");
+ TransferMode transfer_mode = RNA_enum_get(op->ptr, "transfer_mode");
+ bDeformGroup *dg_dst; //used to remove the layers
+
+ int num_src_lay, num_dst_lay;
+
+ int i;
+
+ float tmp_mat[4][4];
+
+ int CD_src;
+ int active_dst, active_src;
+ char *src_name;
+
+ invert_m4_m4(ob_src->imat, ob_src->obmat);
+ mul_m4_m4m4(tmp_mat, ob_src->imat, ob_dst->obmat);
+
+ me_dst = ob_dst->data;
+ me_src = ob_src->data;
+
+ //manipulating the layers first as its interface uses the Mesh structure not the BMesh
+ num_src_lay = CustomData_number_of_layers(&me_src->vdata, CD_MDEFORMVERT);
+ num_dst_lay = CustomData_number_of_layers(&me_dst->vdata, CD_MDEFORMVERT);
+
+ if (num_src_lay < 1) {
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list