[Bf-blender-cvs] [1dca9cb77c6] hair_guides_grooming: Replace DerivedMesh with Mesh throughout hair code,

Lukas Tönne noreply at git.blender.org
Thu May 24 18:39:32 CEST 2018


Commit: 1dca9cb77c6b4bc55d4a8b0224a220165b226533
Author: Lukas Tönne
Date:   Thu May 24 14:34:28 2018 +0100
Branches: hair_guides_grooming
https://developer.blender.org/rB1dca9cb77c6b4bc55d4a8b0224a220165b226533

Replace DerivedMesh with Mesh throughout hair code,

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

M	intern/cycles/blender/blender_curves.cpp
M	intern/cycles/blender/blender_util.h
M	source/blender/blenkernel/BKE_groom.h
M	source/blender/blenkernel/BKE_hair.h
M	source/blender/blenkernel/BKE_mesh_sample.h
M	source/blender/blenkernel/intern/groom.c
M	source/blender/blenkernel/intern/hair.c
M	source/blender/blenkernel/intern/hair_draw.c
M	source/blender/blenkernel/intern/mesh_sample.c
M	source/blender/draw/engines/eevee/eevee_materials.c
M	source/blender/draw/intern/draw_common.h
M	source/blender/draw/intern/draw_hair.c
M	source/blender/draw/modes/object_mode.c
M	source/blender/editors/object/object_modifier.c
M	source/blender/makesrna/intern/rna_hair.c
M	source/blender/makesrna/intern/rna_modifier.c
M	source/blender/modifiers/intern/MOD_fur.c
M	tests/gtests/blenkernel/BKE_mesh_sample_test.cc

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

diff --git a/intern/cycles/blender/blender_curves.cpp b/intern/cycles/blender/blender_curves.cpp
index 8de91892ff1..417d845537c 100644
--- a/intern/cycles/blender/blender_curves.cpp
+++ b/intern/cycles/blender/blender_curves.cpp
@@ -311,7 +311,7 @@ static void ObtainCacheDataFromHairSystem(Mesh *mesh,
 	
 	BL::Mesh b_mesh(b_ob->data());
 	void *hair_cache = BKE_hair_export_cache_new();
-	BKE_hair_export_cache_update_mesh(hair_cache, b_hsys->ptr.data, 0, b_mesh.ptr.data, 0xFFFFFFFF);
+	BKE_hair_export_cache_update(hair_cache, b_hsys->ptr.data, 0, b_mesh.ptr.data, 0xFFFFFFFF);
 	
 	int totcurves, totverts;
 	BKE_hair_render_get_buffer_size(hair_cache, &totcurves, &totverts);
diff --git a/intern/cycles/blender/blender_util.h b/intern/cycles/blender/blender_util.h
index af0d0aa1c69..1ab935ce317 100644
--- a/intern/cycles/blender/blender_util.h
+++ b/intern/cycles/blender/blender_util.h
@@ -37,7 +37,7 @@ void BKE_image_user_file_path(void *iuser, void *ima, char *path);
 unsigned char *BKE_image_get_pixels_for_frame(void *image, int frame);
 float *BKE_image_get_float_pixels_for_frame(void *image, int frame);
 void* BKE_hair_export_cache_new(void);
-int BKE_hair_export_cache_update_mesh(void *cache, const void *hsys, int subdiv, void *scalp, int requested_data);
+int BKE_hair_export_cache_update(void *cache, const void *hsys, int subdiv, void *scalp, int requested_data);
 void BKE_hair_export_cache_free(void *hcache);
 void BKE_hair_render_get_buffer_size(void* hcache, int *r_totcurves, int *r_totverts);
 void BKE_hair_render_fill_buffers(void* hcache, int vertco_stride, int *r_curvestart, int *r_curvelen, float *r_vertco);
diff --git a/source/blender/blenkernel/BKE_groom.h b/source/blender/blenkernel/BKE_groom.h
index ef15223dd45..49afef10786 100644
--- a/source/blender/blenkernel/BKE_groom.h
+++ b/source/blender/blenkernel/BKE_groom.h
@@ -36,6 +36,7 @@ struct Depsgraph;
 struct Groom;
 struct GroomBundle;
 struct Main;
+struct Mesh;
 struct Object;
 struct Scene;
 
@@ -118,8 +119,7 @@ typedef struct GroomIterator
 		     iter.isectionvertex < (bundle)->numloopverts; \
 		     ++iter.isectionvertex, ++iter.vertex)
 
-/* === Utility functions (DerivedMesh SOON TO BE DEPRECATED!) === */
-struct DerivedMesh;
-struct DerivedMesh* BKE_groom_get_scalp(struct Groom *groom);
+/* === Utility functions === */
+struct Mesh* BKE_groom_get_scalp(struct Groom *groom);
 
 #endif /*  __BKE_GROOM_H__ */
diff --git a/source/blender/blenkernel/BKE_hair.h b/source/blender/blenkernel/BKE_hair.h
index 657ab4b3a0b..c7c6a87c677 100644
--- a/source/blender/blenkernel/BKE_hair.h
+++ b/source/blender/blenkernel/BKE_hair.h
@@ -41,7 +41,6 @@ struct HairPattern;
 struct HairSystem;
 struct HairDrawSettings;
 struct HairGuideData;
-struct DerivedMesh;
 struct Mesh;
 struct MeshSample;
 struct Object;
@@ -88,7 +87,7 @@ void BKE_hair_clear_guides(struct HairSystem *hsys);
 /* === Follicles === */
 
 /* Calculate surface area of a scalp mesh */
-float BKE_hair_calc_surface_area(struct DerivedMesh *scalp);
+float BKE_hair_calc_surface_area(const struct Mesh *scalp);
 
 /* Calculate a density value based on surface area and sample count */
 float BKE_hair_calc_density_from_count(float area, int count);
@@ -103,11 +102,11 @@ float BKE_hair_calc_min_distance_from_density(float density);
 /* Distribute hair follicles on a scalp mesh */
 void BKE_hair_generate_follicles(
         struct HairSystem* hsys,
-        struct DerivedMesh *scalp,
+        struct Mesh *scalp,
         unsigned int seed,
         int count);
 
-void BKE_hair_bind_follicles(struct HairSystem *hsys, struct DerivedMesh *scalp);
+void BKE_hair_bind_follicles(struct HairSystem *hsys, struct Mesh *scalp);
 
 /* === Draw Settings === */
 
@@ -173,14 +172,7 @@ struct HairExportCache* BKE_hair_export_cache_new(void);
  * Returns flags for data that has been updated.
  */
 int BKE_hair_export_cache_update(struct HairExportCache *cache, const struct HairSystem *hsys,
-                                 int subdiv, struct DerivedMesh *scalp, int requested_data);
-
-/* Update an existing export cache to ensure it contains the requested data.
- * Returns flags for data that has been updated.
- * XXX Mesh-based version for Cycles export, until DerivedMesh->Mesh conversion is done.
- */
-int BKE_hair_export_cache_update_mesh(struct HairExportCache *cache, const struct HairSystem *hsys,
-                                      int subdiv, struct  Mesh *scalp, int requested_data);
+                                 int subdiv, struct Mesh *scalp, int requested_data);
 
 /* Free the given export cache */
 void BKE_hair_export_cache_free(struct HairExportCache *cache);
diff --git a/source/blender/blenkernel/BKE_mesh_sample.h b/source/blender/blenkernel/BKE_mesh_sample.h
index bd997a03aca..a99b3b1a8df 100644
--- a/source/blender/blenkernel/BKE_mesh_sample.h
+++ b/source/blender/blenkernel/BKE_mesh_sample.h
@@ -25,7 +25,7 @@
  *  \ingroup bke
  */
 
-struct DerivedMesh;
+struct Mesh;
 struct Key;
 struct KeyBlock;
 struct Mesh;
@@ -38,16 +38,16 @@ struct MeshSampleGenerator;
 
 typedef struct MeshSampleGenerator MeshSampleGenerator;
 
-typedef float (*MeshSampleLoopWeightFp)(struct DerivedMesh *dm, struct MLoop *loop, unsigned int index, void *userdata);
+typedef float (*MeshSampleLoopWeightFp)(struct Mesh *mesh, struct MLoop *loop, unsigned int index, void *userdata);
 typedef void* (*MeshSampleThreadContextCreateFp)(void *userdata, int start);
 typedef void (*MeshSampleThreadContextFreeFp)(void *userdata, void *thread_ctx);
 typedef bool (*MeshSampleRayFp)(void *userdata, void *thread_ctx, float ray_start[3], float ray_end[3]);
 
 /* ==== Utility Functions ==== */
 
-float* BKE_mesh_sample_calc_triangle_weights(struct DerivedMesh *dm, MeshSampleLoopWeightFp loop_weight_cb, void *userdata, float *r_area);
+float* BKE_mesh_sample_calc_triangle_weights(struct Mesh *mesh, MeshSampleLoopWeightFp loop_weight_cb, void *userdata, float *r_area);
 
-void BKE_mesh_sample_weights_from_loc(struct MeshSample *sample, struct DerivedMesh *dm, int face_index, const float loc[3]);
+void BKE_mesh_sample_weights_from_loc(struct MeshSample *sample, struct Mesh *mesh, int looptri_index, const float loc[3]);
 
 
 /* ==== Evaluate ==== */
@@ -58,9 +58,6 @@ bool BKE_mesh_sample_is_volume_sample(const struct MeshSample *sample);
 /* Evaluate position and normal on the given mesh */
 bool BKE_mesh_sample_eval(struct Mesh *mesh, const struct MeshSample *sample, float loc[3], float nor[3], float tang[3]);
 
-/* Evaluate position and normal on the given mesh */
-bool BKE_mesh_sample_eval_DM(struct DerivedMesh *dm, const struct MeshSample *sample, float loc[3], float nor[3], float tang[3]);
-
 /* Evaluate position for the given shapekey */
 bool BKE_mesh_sample_shapekey(struct Key *key, struct KeyBlock *kb, const struct MeshSample *sample, float loc[3]);
 
@@ -91,7 +88,7 @@ void BKE_mesh_sample_free_generator(struct MeshSampleGenerator *gen);
 
 /* ==== Sampling ==== */
 
-void BKE_mesh_sample_generator_bind(struct MeshSampleGenerator *gen, struct DerivedMesh *dm);
+void BKE_mesh_sample_generator_bind(struct MeshSampleGenerator *gen, struct Mesh *mesh);
 void BKE_mesh_sample_generator_unbind(struct MeshSampleGenerator *gen);
 
 unsigned int BKE_mesh_sample_gen_get_max_samples(const struct MeshSampleGenerator *gen);
diff --git a/source/blender/blenkernel/intern/groom.c b/source/blender/blenkernel/intern/groom.c
index cb08ce783c9..ad7d1115fca 100644
--- a/source/blender/blenkernel/intern/groom.c
+++ b/source/blender/blenkernel/intern/groom.c
@@ -51,13 +51,13 @@
 
 #include "BKE_animsys.h"
 #include "BKE_customdata.h"
-#include "BKE_cdderivedmesh.h"
 #include "BKE_global.h"
 #include "BKE_groom.h"
 #include "BKE_hair.h"
 #include "BKE_bvhutils.h"
 #include "BKE_library.h"
 #include "BKE_main.h"
+#include "BKE_mesh.h"
 #include "BKE_mesh_sample.h"
 #include "BKE_object.h"
 #include "BKE_object_facemap.h"
@@ -273,13 +273,11 @@ static bool groom_shape_rebuild(GroomBundle *bundle, int numshapeverts, Object *
 	float (*shape)[2] = MEM_mallocN(sizeof(*shape) * numshapeverts, "groom section shape");
 	
 	Mesh *me = scalp_ob->data;
-	// XXX MeshSample will use Mesh instead of DerivedMesh in the future
-	DerivedMesh *dm = CDDM_from_mesh(me);
 	
 	/* last sample is the center position */
 	MeshSample *center_sample = &bundle->scalp_region[numshapeverts];
 	float center_co[3], center_nor[3], center_tang[3], center_binor[3];
-	if (!BKE_mesh_sample_eval_DM(dm, center_sample, center_co, center_nor, center_tang))
+	if (!BKE_mesh_sample_eval(me, center_sample, center_co, center_nor, center_tang))
 	{
 		result = false;
 		goto cleanup;
@@ -292,7 +290,7 @@ static bool groom_shape_rebuild(GroomBundle *bundle, int numshapeverts, Object *
 	{
 		/* 3D position of the shape vertex origin on the mesh */
 		float co[3], nor[3], tang[3];
-		if (!BKE_mesh_sample_eval_DM(dm, sample, co, nor, tang))
+		if (!BKE_mesh_sample_eval(me, sample, co, nor, tang))
 		{
 			result = false;
 			goto cleanup;
@@ -322,7 +320,6 @@ static bool groom_shape_rebuild(GroomBundle *bundle, int numshapeverts, Object *
 	
 cleanup:
 	MEM_freeN(shape);
-	dm->release(dm);
 	
 	return result;
 }
@@ -410,11 +407,8 @@ static bool groom_bundle_region_from_mesh_fmap(GroomBundle *bundle, Object *scal
 	
 	{
 		/* BVH tree for binding the region center location */
-		DerivedMesh *dm = CDDM_from_mesh(me);
-		DM_ensure_tessface(dm);
 		BVHTreeFromMesh bvhtree;
-		//bvhtree_from_mesh_looptri(&bvhtree, dm, 0.0f, 4, 6);
-		bvhtree_from_mesh_get(&bvhtree, dm, BVHTREE_FROM_FACES, 2);
+		BKE_bvhtree_from_mesh_get(&bvhtree, me, BVHTREE_FROM_LOOPTRI, 2);
 		if (bvhtree.tree != NULL) {
 			BVHTreeNearest nearest;
 			nearest.index = -1;
@@ -425,7 +419,7 @@ static bool groom_bundle_region_from_mesh_fmap(GroomBundle *bundle, Object *scal
 			{
 				/* last sample is the center position */
 				MeshSample *center_sample = &bundle->scalp_region[numshapeverts];
-				BKE_mesh_sample_weights_from_loc(center_sample, dm, nearest.index, nearest.co);
+				BKE_mesh_sample_weights_from_loc(center_sample, me, nearest.index, nearest.co);
 				BLI_assert(BKE_mesh_sample_is_valid(center_sample));
 			}
 		}
@@ -435,7 +429,6 @@ static bool groom_bundle_reg

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list