[Bf-blender-cvs] [4e05dd1dc5f] hair_guides hair_guides_grooming: Replace DerivedMesh with Mesh throughout hair code,

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


Commit: 4e05dd1dc5ff214d36813c4d96f84ef97fc08361
Author: Lukas Tönne
Date:   Thu May 24 14:34:28 2018 +0100
Branches: hair_guides hair_guides_grooming
https://developer.blender.org/rB4e05dd1dc5ff214d36813c4d96f84ef97fc08361

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_hair.h
M	source/blender/blenkernel/BKE_mesh_sample.h
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_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/hair.c b/source/blender/blenkernel/intern/hair.c
index ff86b27d8ce..560e242dd0d 100644
--- a/source/blender/blenkernel/intern/hair.c
+++ b/source/blender/blenkernel/intern/hair.c
@@ -43,10 +43,10 @@
 #include "BLI_string_utils.h"
 
 #include "DNA_hair_types.h"
+#include "DNA_mesh_types.h"
+#include "DNA_meshdata_types.h"
 #include "DNA_object_types.h"
 
-#include "BKE_DerivedMesh.h"
-#include "BKE_cdderivedmesh.h"
 #include "BKE_hair.h"
 #include "BKE_library.h"
 #include "BKE_mesh.h"
@@ -116,14 +116,14 @@ void BKE_hair_free(HairSystem *hsys)
 }
 
 /* Calculate surface area of a scalp mesh */
-float BKE_hair_calc_surface_area(struct DerivedMesh *scalp)
+float BKE_hair_calc_surface_area(const Mesh *scalp)
 {
 	BLI_assert(scalp != NULL);
 	
-	int numpolys = scalp->getNumPolys(scalp);
-	MPoly *mpolys = scalp->getPolyArray(scalp);
-	MLoop *mloops = scalp->getLoopArray(scalp);
-	MVert *mverts = scalp->getVertArray(scalp);
+	int numpolys = scalp->totpoly;
+	MPoly *mpolys = scalp->mpoly;
+	MLoop *mloops = scalp->mloop;
+	MVert *mverts = scalp->mvert;
 
 	float area = 0.0f;
 	for (int i = 0; i < numpolys; ++i)
@@ -166,7 +166,7 @@ float BKE_hair_calc_min_distance_from_density(float density)
 /* Distribute hair follicles on a scalp mesh */
 void BKE_hair_generate_follicles(
         HairSystem* hsys,
-        struct DerivedMesh *scalp,
+        struct Mesh *scalp,
         unsigned int seed,
         int count)
 {
@@ -400,7 +400,7 @@ static void hair_fiber_find_closest_strand(
 	hair_fiber_sort_weights(follicle);
 }
 
-void BKE_hair_bind_follicles(HairSystem *hsys, DerivedMesh *scalp)
+void BKE_hair_bind_follicles(HairSystem *hsys, Mesh *scalp)
 {
 	if (!(hsys->flag & HAIR_SYSTEM_UPDATE_FOLLICLE_BINDING))
 	{
@@ -417,7 +417,7 @@ void BKE_hair_bind_follicles(HairSystem *hsys, DerivedMesh *scalp)
 	{
 		for (int i = 0; i < num_strands; ++i) {
 			float nor[3], tang[3];
-			if (!BKE_mesh_sample_eval_DM(scalp, &hsys->guides.curves[i].mesh_sample, strandloc[i], nor, tang)) {
+			if (!BKE_mesh_sample_eval(scalp, &hsys->guides.curves[i].mesh_sample, strandloc[i], nor, tang)) {
 				zero_v3(strandloc[i]);
 			}
 		}
@@ -432,7 +432,7 @@ void BKE_hair_bind_follicles(HairSystem *hsys, DerivedMesh *scalp)
 	HairFollicle *follicle = pattern->follicles;
 	for (int i = 0; i < pattern->num_follicles; ++i, ++follicle) {
 		float loc[3], nor[3], tang[3];
-		if (BKE_mesh_sample_eval_DM(scalp, &follicle->mesh_sample, loc, nor, tang)) {
+		if (BKE_mesh_sample_eval(scalp, &follicle->mesh_sample, loc, nor, tang)) {
 			hair_fiber_find_closest_strand(follicle, loc, tree, strandloc);
 			hair_fiber_verify_weights(follicle);
 		}
@@ -604,7 +604,7 @@ static int hair_export_cache_get_dependencies(int data)
  */
 
 int BKE_hair_export_cache_update(HairExportCache *cache, const HairSystem *hsys,
-                                 int subdiv, DerivedMesh *scalp, int requested_data)
+                                 int subdiv, Mesh *scalp, int requested_data)
 {
 	/* Include dependencies */
 	int data = hair_export_cache_get_dependencies(requested_data);
@@ -658,7 +658,7 @@ int BKE_hair_export_cache_update(HairExportCache *cache, const HairSystem *hsys,
 				/* Root matrix for defining the initial normal direction */
 				float rootpos[3];
 				float rootmat[3][3];
-				BKE_mesh_sample_eval_DM(scalp, &curve->mesh_sample, rootpos, rootmat[2], rootmat[0]);
+				BKE_mesh_sample_eval(scalp, &curve->mesh_sample, rootpos, rootmat[2], rootmat[0]);
 				cross_v3_v3v3(rootmat[1], rootmat[2], rootmat[0]);
 				
 				hair_guide_calc_vectors(verts, curve->numverts, rootmat, tangents, normals);
@@ -714,7 +714,7 @@ int BKE_hair_e

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list