[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [61042] trunk/blender/source/blender: Fix [#37266] Skin modifier can't be copied.

Bastien Montagne montagne29 at wanadoo.fr
Fri Nov 1 09:31:36 CET 2013


Revision: 61042
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=61042
Author:   mont29
Date:     2013-11-01 08:31:36 +0000 (Fri, 01 Nov 2013)
Log Message:
-----------
Fix [#37266] Skin modifier can't be copied.

Patch by Martin Felke, many thanks.

When copying that modifier across objects, we also have to ensure that a skin CDLayer is present in dest objects (just as when adding it).

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_modifier.h
    trunk/blender/source/blender/blenkernel/intern/object.c
    trunk/blender/source/blender/editors/object/object_modifier.c

Modified: trunk/blender/source/blender/blenkernel/BKE_modifier.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_modifier.h	2013-11-01 08:03:25 UTC (rev 61041)
+++ trunk/blender/source/blender/blenkernel/BKE_modifier.h	2013-11-01 08:31:36 UTC (rev 61042)
@@ -357,6 +357,7 @@
 bool          modifiers_isCorrectableDeformed(struct Scene *scene, struct Object *ob);
 void          modifier_freeTemporaryData(struct ModifierData *md);
 bool          modifiers_isPreview(struct Object *ob);
+void          modifier_skin_customdata_ensure(struct Object *ob);
 
 typedef struct CDMaskLink {
 	struct CDMaskLink *next;

Modified: trunk/blender/source/blender/blenkernel/intern/object.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/object.c	2013-11-01 08:03:25 UTC (rev 61041)
+++ trunk/blender/source/blender/blenkernel/intern/object.c	2013-11-01 08:31:36 UTC (rev 61042)
@@ -32,7 +32,7 @@
 
 #include <string.h>
 #include <math.h>
-#include <stdio.h>			
+#include <stdio.h>
 
 #include "MEM_guardedalloc.h"
 
@@ -256,6 +256,11 @@
 
 		if (!BKE_object_support_modifier_type_check(ob_dst, md->type))
 			continue;
+		
+		if (md->type == eModifierType_Skin) {
+			/* ensure skin-node customdata exists */
+			modifier_skin_customdata_ensure(ob_dst);
+		}
 
 		nmd = modifier_new(md->type);
 		BLI_strncpy(nmd->name, md->name, sizeof(nmd->name));

Modified: trunk/blender/source/blender/editors/object/object_modifier.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_modifier.c	2013-11-01 08:03:25 UTC (rev 61041)
+++ trunk/blender/source/blender/editors/object/object_modifier.c	2013-11-01 08:31:36 UTC (rev 61042)
@@ -87,7 +87,6 @@
 
 #include "object_intern.h"
 
-static void modifier_skin_customdata_ensure(struct Object *ob);
 static void modifier_skin_customdata_delete(struct Object *ob);
 
 /******************************** API ****************************/
@@ -1434,7 +1433,7 @@
 
 /************************** skin modifier ***********************/
 
-static void modifier_skin_customdata_ensure(Object *ob)
+void modifier_skin_customdata_ensure(Object *ob)
 {
 	Mesh *me = ob->data;
 	BMesh *bm = me->edit_btmesh ? me->edit_btmesh->bm : NULL;




More information about the Bf-blender-cvs mailing list