[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