[Bf-blender-cvs] [87f3139] cycles-ptex-49: Temporary hack to ensure packed image pointer

Nicholas Bishop noreply at git.blender.org
Fri Feb 6 17:35:21 CET 2015


Commit: 87f3139a41406b96b431f98bf140d2b5092d5eed
Author: Nicholas Bishop
Date:   Sun Jan 25 22:48:39 2015 +0100
Branches: cycles-ptex-49
https://developer.blender.org/rB87f3139a41406b96b431f98bf140d2b5092d5eed

Temporary hack to ensure packed image pointer

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

M	source/blender/blenkernel/intern/mesh.c

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

diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c
index 7757bab..a614d49 100644
--- a/source/blender/blenkernel/intern/mesh.c
+++ b/source/blender/blenkernel/intern/mesh.c
@@ -52,6 +52,7 @@
 #include "BKE_material.h"
 #include "BKE_modifier.h"
 #include "BKE_multires.h"
+#include "BKE_ptex.h"
 #include "BKE_key.h"
 #include "BKE_mball.h"
 #include "BKE_depsgraph.h"
@@ -2249,6 +2250,9 @@ Mesh *BKE_mesh_new_from_object(
 				if (calc_undeformed)
 					mask |= CD_MASK_ORCO;
 
+				// TODO
+				mask |= CD_MASK_LOOP_PTEX;
+
 				/* Write the display mesh into the dummy mesh */
 				if (render)
 					dm = mesh_create_derived_render(sce, ob, mask);
@@ -2256,8 +2260,41 @@ Mesh *BKE_mesh_new_from_object(
 					dm = mesh_create_derived_view(sce, ob, mask);
 
 				tmpmesh = BKE_mesh_add(bmain, "Mesh");
-				DM_to_mesh(dm, tmpmesh, ob, mask);
+				DM_to_mesh(dm, tmpmesh, ob, mask | CD_MASK_TESSFACE_PTEX);
 				dm->release(dm);
+
+				// TODO: very TODO
+				{
+					Mesh *src_me = ob->data;
+					const int num_layers =
+						CustomData_number_of_layers(&tmpmesh->ldata, CD_LOOP_PTEX);
+					/* const int off = CustomData_get_offset(&tmpmesh->ldata, */
+					/* 									  CD_LOOP_PTEX); */
+					int i;
+
+					BLI_assert(CustomData_number_of_layers(&src_me->ldata,
+														   CD_LOOP_PTEX) ==
+							   num_layers);
+
+					for (i = 0; i < num_layers; i++) {
+						const char *name = CustomData_get_layer_name(&tmpmesh->ldata,
+																	 CD_LOOP_PTEX, i);
+						MLoopPtex *dst = CustomData_get_layer_n
+							(&tmpmesh->ldata, CD_LOOP_PTEX, i);
+						
+						const MLoopPtex *src = CustomData_get_layer_n
+							(&src_me->ldata, CD_LOOP_PTEX, i);
+
+						if (src && dst && name) {
+							if (src->image) {
+								dst->image = src->image;
+							}
+							else {
+								dst->image = BKE_ptex_mesh_image_get(ob, name);
+							}
+						}
+					}
+				}
 			}
 
 			/* BKE_mesh_add/copy gives us a user count we don't need */




More information about the Bf-blender-cvs mailing list