[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