[Bf-blender-cvs] [5730fba] hair_immediate_fixes: New mesh sample evaluation function for shape key data.

Lukas Tönne noreply at git.blender.org
Fri Dec 5 14:42:55 CET 2014


Commit: 5730fba94e26af5f9c8a59857755a3a66c42747d
Author: Lukas Tönne
Date:   Sun Nov 30 10:58:16 2014 +0100
Branches: hair_immediate_fixes
https://developer.blender.org/rB5730fba94e26af5f9c8a59857755a3a66c42747d

New mesh sample evaluation function for shape key data.

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

M	source/blender/blenkernel/BKE_mesh_sample.h
M	source/blender/blenkernel/intern/mesh_sample.c

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

diff --git a/source/blender/blenkernel/BKE_mesh_sample.h b/source/blender/blenkernel/BKE_mesh_sample.h
index bc125af..e407d66 100644
--- a/source/blender/blenkernel/BKE_mesh_sample.h
+++ b/source/blender/blenkernel/BKE_mesh_sample.h
@@ -26,12 +26,15 @@
  */
 
 struct DerivedMesh;
+struct Key;
+struct KeyBlock;
 
 struct MSurfaceSample;
 
 /* ==== Evaluate ==== */
 
 bool BKE_mesh_sample_eval(struct DerivedMesh *dm, const struct MSurfaceSample *sample, float loc[3], float nor[3]);
+bool BKE_mesh_sample_shapekey(struct Key *key, struct KeyBlock *kb, const struct MSurfaceSample *sample, float loc[3]);
 
 
 /* ==== Sampling ==== */
diff --git a/source/blender/blenkernel/intern/mesh_sample.c b/source/blender/blenkernel/intern/mesh_sample.c
index 7300dbe..65995a6 100644
--- a/source/blender/blenkernel/intern/mesh_sample.c
+++ b/source/blender/blenkernel/intern/mesh_sample.c
@@ -26,6 +26,7 @@
 
 #include "MEM_guardedalloc.h"
 
+#include "DNA_key_types.h"
 #include "DNA_mesh_types.h"
 #include "DNA_meshdata_types.h"
 
@@ -76,6 +77,27 @@ bool BKE_mesh_sample_eval(DerivedMesh *dm, const MSurfaceSample *sample, float l
 	return true;
 }
 
+bool BKE_mesh_sample_shapekey(Key *key, KeyBlock *kb, const MSurfaceSample *sample, float loc[3])
+{
+	float *v1, *v2, *v3;
+	
+	BLI_assert(key->elemsize == 3 * sizeof(float));
+	BLI_assert(sample->orig_verts[0] < (unsigned int)kb->totelem);
+	BLI_assert(sample->orig_verts[1] < (unsigned int)kb->totelem);
+	BLI_assert(sample->orig_verts[2] < (unsigned int)kb->totelem);
+	
+	v1 = (float *)kb->data + sample->orig_verts[0] * 3;
+	v2 = (float *)kb->data + sample->orig_verts[1] * 3;
+	v3 = (float *)kb->data + sample->orig_verts[2] * 3;
+	
+	madd_v3_v3fl(loc, v1, sample->orig_weights[0]);
+	madd_v3_v3fl(loc, v2, sample->orig_weights[1]);
+	madd_v3_v3fl(loc, v3, sample->orig_weights[2]);
+	
+	/* TODO use optional vgroup weights to determine if a shapeky actually affects the sample */
+	return true;
+}
+
 
 /* ==== Sampling ==== */




More information about the Bf-blender-cvs mailing list