[Bf-blender-cvs] [d3c5d743826] hair_guides: Change particle conversion for mesh samples from DerivedMesh to Mesh.

Lukas Tönne noreply at git.blender.org
Wed May 23 10:04:29 CEST 2018


Commit: d3c5d7438267ab2a4d225a925104590805237a01
Author: Lukas Tönne
Date:   Tue May 22 05:51:19 2018 +0100
Branches: hair_guides
https://developer.blender.org/rBd3c5d7438267ab2a4d225a925104590805237a01

Change particle conversion for mesh samples from DerivedMesh to Mesh.

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

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

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

diff --git a/source/blender/blenkernel/BKE_mesh_sample.h b/source/blender/blenkernel/BKE_mesh_sample.h
index 94560d8c017..03c30170d72 100644
--- a/source/blender/blenkernel/BKE_mesh_sample.h
+++ b/source/blender/blenkernel/BKE_mesh_sample.h
@@ -107,7 +107,7 @@ struct ParticleSystem;
 struct ParticleData;
 struct BVHTreeFromMesh;
 
-bool BKE_mesh_sample_from_particle(struct MeshSample *sample, struct ParticleSystem *psys, struct DerivedMesh *dm, struct ParticleData *pa);
-bool BKE_mesh_sample_to_particle(struct MeshSample *sample, struct ParticleSystem *psys, struct DerivedMesh *dm, struct BVHTreeFromMesh *bvhtree, struct ParticleData *pa);
+bool BKE_mesh_sample_from_particle(struct MeshSample *sample, struct ParticleSystem *psys, struct Mesh *mesh, struct ParticleData *pa);
+bool BKE_mesh_sample_to_particle(struct MeshSample *sample, struct ParticleSystem *psys, struct Mesh *mesh, struct BVHTreeFromMesh *bvhtree, struct ParticleData *pa);
 
 #endif  /* __BKE_MESH_SAMPLE_H__ */
diff --git a/source/blender/blenkernel/BKE_particle.h b/source/blender/blenkernel/BKE_particle.h
index db10fa87465..0a97b4d72a2 100644
--- a/source/blender/blenkernel/BKE_particle.h
+++ b/source/blender/blenkernel/BKE_particle.h
@@ -50,7 +50,7 @@ struct Main;
 struct Object;
 struct Scene;
 struct Depsgraph;
-struct DerivedMesh;
+struct Mesh;
 struct ModifierData;
 struct MTFace;
 struct MCol;
@@ -429,7 +429,7 @@ void psys_interpolate_face(struct MVert *mvert, struct MFace *mface, struct MTFa
                            float orco[3]);
 float psys_particle_value_from_verts(struct Mesh *mesh, short from, struct ParticleData *pa, float *values);
 void psys_get_from_key(struct ParticleKey *key, float loc[3], float vel[3], float rot[4], float *time);
-int psys_get_index_on_dm(struct ParticleSystem *psys, struct DerivedMesh *dm, ParticleData *pa, int *mapindex, float mapfw[4]);
+int psys_get_index_on_mesh(struct ParticleSystem *psys, struct Mesh *mesh, ParticleData *pa, int *mapindex, float mapfw[4]);
 
 /* BLI_bvhtree_ray_cast callback */
 void BKE_psys_collision_neartest_cb(void *userdata, int index, const struct BVHTreeRay *ray, struct BVHTreeRayHit *hit);
diff --git a/source/blender/blenkernel/intern/mesh_sample.c b/source/blender/blenkernel/intern/mesh_sample.c
index 20807f11108..68b07143574 100644
--- a/source/blender/blenkernel/intern/mesh_sample.c
+++ b/source/blender/blenkernel/intern/mesh_sample.c
@@ -1599,7 +1599,7 @@ int BKE_mesh_sample_generate_batch(MeshSampleGenerator *gen,
 #include "BKE_bvhutils.h"
 #include "BKE_particle.h"
 
-bool BKE_mesh_sample_from_particle(MeshSample *sample, ParticleSystem *psys, DerivedMesh *dm, ParticleData *pa)
+bool BKE_mesh_sample_from_particle(MeshSample *sample, ParticleSystem *psys, Mesh *mesh, ParticleData *pa)
 {
 	MVert *mverts;
 	MFace *mface;
@@ -1609,11 +1609,11 @@ bool BKE_mesh_sample_from_particle(MeshSample *sample, ParticleSystem *psys, Der
 	float vec[3];
 	float w[4];
 	
-	if (!psys_get_index_on_dm(psys, dm, pa, &mapindex, mapfw))
+	if (!psys_get_index_on_mesh(psys, mesh, pa, &mapindex, mapfw))
 		return false;
 	
-	mface = dm->getTessFaceData(dm, mapindex, CD_MFACE);
-	mverts = dm->getVertDataArray(dm, CD_MVERT);
+	mface = mesh->mface;
+	mverts = mesh->mvert;
 	
 	co1 = mverts[mface->v1].co;
 	co2 = mverts[mface->v2].co;
@@ -1651,19 +1651,19 @@ bool BKE_mesh_sample_from_particle(MeshSample *sample, ParticleSystem *psys, Der
 		return false;
 }
 
-bool BKE_mesh_sample_to_particle(MeshSample *sample, ParticleSystem *UNUSED(psys), DerivedMesh *dm, BVHTreeFromMesh *bvhtree, ParticleData *pa)
+bool BKE_mesh_sample_to_particle(MeshSample *sample, ParticleSystem *UNUSED(psys), Mesh *mesh, BVHTreeFromMesh *bvhtree, ParticleData *pa)
 {
 	BVHTreeNearest nearest;
 	float vec[3], nor[3], tang[3];
 	
-	BKE_mesh_sample_eval(dm, sample, vec, nor, tang);
+	BKE_mesh_sample_eval(mesh, sample, vec, nor, tang);
 	
 	nearest.index = -1;
 	nearest.dist_sq = FLT_MAX;
 	BLI_bvhtree_find_nearest(bvhtree->tree, vec, &nearest, bvhtree->nearest_callback, bvhtree);
 	if (nearest.index >= 0) {
-		MFace *mface = dm->getTessFaceData(dm, nearest.index, CD_MFACE);
-		MVert *mverts = dm->getVertDataArray(dm, CD_MVERT);
+		MFace *mface = mesh->mface;
+		MVert *mverts = mesh->mvert;
 		
 		float *co1 = mverts[mface->v1].co;
 		float *co2 = mverts[mface->v2].co;
diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c
index d2e9630eb9b..bbb5960341c 100644
--- a/source/blender/blenkernel/intern/particle.c
+++ b/source/blender/blenkernel/intern/particle.c
@@ -1398,7 +1398,7 @@ int psys_particle_dm_face_lookup(
 	return DMCACHE_NOTFOUND;
 }
 
-static int psys_map_index_on_dm(Mesh *mesh, int from, int index, int index_dmcache, const float fw[4], float UNUSED(foffset), int *mapindex, float mapfw[4])
+static int psys_map_index_on_mesh(Mesh *mesh, int from, int index, int index_dmcache, const float fw[4], float UNUSED(foffset), int *mapindex, float mapfw[4])
 {
 	if (index < 0)
 		return 0;
@@ -1458,10 +1458,9 @@ static int psys_map_index_on_dm(Mesh *mesh, int from, int index, int index_dmcac
 	return 1;
 }
 
-int psys_get_index_on_dm(ParticleSystem *psys, DerivedMesh *dm, ParticleData *pa, int *mapindex, float mapfw[4])
+int psys_get_index_on_mesh(ParticleSystem *psys, Mesh *mesh, ParticleData *pa, int *mapindex, float mapfw[4])
 {
-	BLI_assert(false && "Replace DerivedMesh with Mesh!");
-	return psys_map_index_on_dm(dm, psys->part->from, pa->num, pa->num_dmcache, pa->fuv, pa->foffset, mapindex, mapfw);
+	return psys_map_index_on_mesh(mesh, psys->part->from, pa->num, pa->num_dmcache, pa->fuv, pa->foffset, mapindex, mapfw);
 }
 
 /* interprets particle data to get a point on a mesh in object space */
@@ -1473,7 +1472,7 @@ void psys_particle_on_dm(Mesh *mesh_final, int from, int index, int index_dmcach
 	float (*orcodata)[3];
 	int mapindex;
 
-	if (!psys_map_index_on_dm(mesh_final, from, index, index_dmcache, fw, foffset, &mapindex, mapfw)) {
+	if (!psys_map_index_on_mesh(mesh_final, from, index, index_dmcache, fw, foffset, &mapindex, mapfw)) {
 		if (vec) { vec[0] = vec[1] = vec[2] = 0.0; }
 		if (nor) { nor[0] = nor[1] = 0.0; nor[2] = 1.0; }
 		if (orco) { orco[0] = orco[1] = orco[2] = 0.0; }
@@ -1538,7 +1537,7 @@ float psys_particle_value_from_verts(Mesh *mesh, short from, ParticleData *pa, f
 	float mapfw[4];
 	int mapindex;
 
-	if (!psys_map_index_on_dm(mesh, from, pa->num, pa->num_dmcache, pa->fuv, pa->foffset, &mapindex, mapfw))
+	if (!psys_map_index_on_mesh(mesh, from, pa->num, pa->num_dmcache, pa->fuv, pa->foffset, &mapindex, mapfw))
 		return 0.0f;
 	
 	return psys_interpolate_value_from_verts(mesh, from, mapindex, mapfw, values);



More information about the Bf-blender-cvs mailing list