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. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to