[Bf-blender-cvs] [f61d4b2e3aa] temp_bmesh_multires: * Improved multires projection some more in bmesh_interp.c
Joseph Eagar
noreply at git.blender.org
Mon Oct 19 03:10:48 CEST 2020
Commit: f61d4b2e3aaed64c0fa2bdd7740e2173d785f8e5
Author: Joseph Eagar
Date: Sun Oct 18 18:10:16 2020 -0700
Branches: temp_bmesh_multires
https://developer.blender.org/rBf61d4b2e3aaed64c0fa2bdd7740e2173d785f8e5
* Improved multires projection some more in bmesh_interp.c
===================================================================
M source/blender/blenkernel/BKE_mesh.h
M source/blender/blenkernel/BKE_mesh_mirror.h
M source/blender/blenkernel/intern/mesh.c
M source/blender/blenkernel/intern/mesh_mirror.c
M source/blender/blenkernel/intern/multires.c
M source/blender/blenkernel/intern/pbvh.c
M source/blender/blenkernel/intern/subdiv_eval.c
M source/blender/bmesh/intern/bmesh_interp.c
M source/blender/bmesh/intern/bmesh_interp.h
M source/blender/editors/object/object_remesh.c
M source/blender/io/alembic/exporter/abc_writer_mesh.cc
M source/blender/modifiers/intern/MOD_bevel.c
M source/blender/modifiers/intern/MOD_decimate.c
M source/blender/modifiers/intern/MOD_edgesplit.c
M source/blender/modifiers/intern/MOD_triangulate.c
M source/blender/modifiers/intern/MOD_wireframe.c
===================================================================
diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h
index fdea26ce730..1ea40fa7e62 100644
--- a/source/blender/blenkernel/BKE_mesh.h
+++ b/source/blender/blenkernel/BKE_mesh.h
@@ -71,7 +71,8 @@ extern "C" {
/* *** mesh.c *** */
-struct BMesh *BKE_mesh_to_bmesh_ex(const struct Mesh *me,
+struct BMesh *BKE_mesh_to_bmesh_ex(const struct Object *ob,
+ const struct Mesh *me,
const struct BMeshCreateParams *create_params,
const struct BMeshFromMeshParams *convert_params);
struct BMesh *BKE_mesh_to_bmesh(struct Mesh *me,
diff --git a/source/blender/blenkernel/BKE_mesh_mirror.h b/source/blender/blenkernel/BKE_mesh_mirror.h
index 2c6920a18bf..9a6a200990d 100644
--- a/source/blender/blenkernel/BKE_mesh_mirror.h
+++ b/source/blender/blenkernel/BKE_mesh_mirror.h
@@ -33,7 +33,8 @@ struct MirrorModifierData;
struct ModifierEvalContext;
struct Object;
-struct Mesh *BKE_mesh_mirror_bisect_on_mirror_plane(struct MirrorModifierData *mmd,
+struct Mesh *BKE_mesh_mirror_bisect_on_mirror_plane(struct Object *ob,
+ struct MirrorModifierData *mmd,
const struct Mesh *mesh,
int axis,
const float plane_co[3],
diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c
index 15589e13017..ee768d96ae4 100644
--- a/source/blender/blenkernel/intern/mesh.c
+++ b/source/blender/blenkernel/intern/mesh.c
@@ -1015,7 +1015,8 @@ Mesh *BKE_mesh_copy_for_eval(struct Mesh *source, bool reference)
return result;
}
-BMesh *BKE_mesh_to_bmesh_ex(const Mesh *me,
+BMesh *BKE_mesh_to_bmesh_ex(const Object *ob,
+ const Mesh *me,
const struct BMeshCreateParams *create_params,
const struct BMeshFromMeshParams *convert_params)
{
@@ -1023,7 +1024,7 @@ BMesh *BKE_mesh_to_bmesh_ex(const Mesh *me,
const BMAllocTemplate allocsize = BMALLOC_TEMPLATE_FROM_ME(me);
bm = BM_mesh_create(&allocsize, create_params);
- BM_mesh_bm_from_me(NULL, bm, me, convert_params);
+ BM_mesh_bm_from_me(ob, bm, me, convert_params);
return bm;
}
@@ -1033,7 +1034,8 @@ BMesh *BKE_mesh_to_bmesh(Mesh *me,
const bool add_key_index,
const struct BMeshCreateParams *params)
{
- return BKE_mesh_to_bmesh_ex(me,
+ return BKE_mesh_to_bmesh_ex(ob,
+ me,
params,
&(struct BMeshFromMeshParams){
.calc_face_normal = false,
diff --git a/source/blender/blenkernel/intern/mesh_mirror.c b/source/blender/blenkernel/intern/mesh_mirror.c
index 46764a56e60..bedc6f27db5 100644
--- a/source/blender/blenkernel/intern/mesh_mirror.c
+++ b/source/blender/blenkernel/intern/mesh_mirror.c
@@ -41,7 +41,8 @@
#include "MOD_modifiertypes.h"
-Mesh *BKE_mesh_mirror_bisect_on_mirror_plane(MirrorModifierData *mmd,
+Mesh *BKE_mesh_mirror_bisect_on_mirror_plane(Object *ob,
+ MirrorModifierData *mmd,
const Mesh *mesh,
int axis,
const float plane_co[3],
@@ -58,7 +59,8 @@ Mesh *BKE_mesh_mirror_bisect_on_mirror_plane(MirrorModifierData *mmd,
BMIter viter;
BMVert *v, *v_next;
- bm = BKE_mesh_to_bmesh_ex(mesh,
+ bm = BKE_mesh_to_bmesh_ex(ob,
+ mesh,
&(struct BMeshCreateParams){0},
&(struct BMeshFromMeshParams){
.calc_face_normal = true,
@@ -157,7 +159,7 @@ Mesh *BKE_mesh_mirror_apply_mirror_on_axis(MirrorModifierData *mmd,
Mesh *mesh_bisect = NULL;
if (do_bisect) {
- mesh_bisect = BKE_mesh_mirror_bisect_on_mirror_plane(mmd, mesh, axis, plane_co, plane_no);
+ mesh_bisect = BKE_mesh_mirror_bisect_on_mirror_plane(ob, mmd, mesh, axis, plane_co, plane_no);
mesh = mesh_bisect;
}
diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c
index d069386b7a1..79dd8017905 100644
--- a/source/blender/blenkernel/intern/multires.c
+++ b/source/blender/blenkernel/intern/multires.c
@@ -1309,12 +1309,11 @@ static void multires_bmesh_space_set_cb(void *__restrict userdata,
// try to prevent errors
float len = len_v3(data);
- /*
if (len > maxlen) {
mul_v3_fl(data, maxlen/len);
} else if (isnan(len)) {
zero_v3(data);
- }*/
+ }
break;
}
}
@@ -1344,6 +1343,8 @@ void BKE_multires_bmesh_space_set(Object *ob, BMesh *bm, int mode)
return;
}
+ bm->multiresSpace = mode;
+
Mesh _me, *me = &_me;
memset(me, 0, sizeof(Mesh));
CustomData_reset(&me->vdata);
@@ -1624,8 +1625,8 @@ static void multiresModifier_disp_run(
BLI_task_parallel_range(0, totpoly, &data, multires_disp_run_cb, &settings);
if (op == APPLY_DISPLACEMENTS) {
- ccgSubSurf_stitchFaces(ccgdm->ss, 0, NULL, 0);
- ccgSubSurf_updateNormals(ccgdm->ss, NULL, 0);
+ ccgSubSurf_stitchFaces(ccgdm->ss, 0, NULL, 0);
+ ccgSubSurf_updateNormals(ccgdm->ss, NULL, 0);
}
}
diff --git a/source/blender/blenkernel/intern/pbvh.c b/source/blender/blenkernel/intern/pbvh.c
index 569eb8eef89..f2b9c01acfb 100644
--- a/source/blender/blenkernel/intern/pbvh.c
+++ b/source/blender/blenkernel/intern/pbvh.c
@@ -49,7 +49,7 @@
#include <limits.h>
-#define LEAF_LIMIT 700
+#define LEAF_LIMIT 4000
//#define PERFCNTRS
diff --git a/source/blender/blenkernel/intern/subdiv_eval.c b/source/blender/blenkernel/intern/subdiv_eval.c
index 01d43a1b7e5..b858c847a68 100644
--- a/source/blender/blenkernel/intern/subdiv_eval.c
+++ b/source/blender/blenkernel/intern/subdiv_eval.c
@@ -174,10 +174,12 @@ void BKE_subdiv_eval_limit_point(
BKE_subdiv_eval_limit_point_and_derivatives(subdiv, ptex_face_index, u, v, r_P, NULL, NULL);
}
+#if 0
static bool close_zero(float c[3]) {
const float eps = 0.00001;
return fabs(c[0]) < eps && fabs(c[1]) < eps && fabs(c[2]) < eps;
}
+#endif
void BKE_subdiv_eval_limit_point_and_derivatives(Subdiv *subdiv,
const int ptex_face_index,
@@ -201,7 +203,8 @@ void BKE_subdiv_eval_limit_point_and_derivatives(Subdiv *subdiv,
* that giving totally unusable derivatives. */
if (r_dPdu != NULL && r_dPdv != NULL) {
- if ((close_zero(r_dPdu) || close_zero(r_dPdv)) || equals_v3v3(r_dPdu, r_dPdv)) {
+ //if ((close_zero(r_dPdu) || close_zero(r_dPdv)) || equals_v3v3(r_dPdu, r_dPdv)) {
+ if ((is_zero_v3(r_dPdu) || is_zero_v3(r_dPdv)) || equals_v3v3(r_dPdu, r_dPdv)) {
subdiv->evaluator->evaluateLimit(subdiv->evaluator,
ptex_face_index,
u * 0.999f + 0.0005f,
diff --git a/source/blender/bmesh/intern/bmesh_interp.c b/source/blender/bmesh/intern/bmesh_interp.c
index 72ef14c174d..4acdfb6e5ae 100644
--- a/source/blender/bmesh/intern/bmesh_interp.c
+++ b/source/blender/bmesh/intern/bmesh_interp.c
@@ -27,13 +27,13 @@
#include "DNA_meshdata_types.h"
-#include "BLI_utildefines.h"
#include "BLI_alloca.h"
+#include "BLI_array.h"
#include "BLI_linklist.h"
#include "BLI_math.h"
#include "BLI_memarena.h"
#include "BLI_task.h"
-#include "BLI_array.h"
+#include "BLI_utildefines.h"
#include "BKE_customdata.h"
#include "BKE_multires.h"
@@ -325,11 +325,11 @@ static bool quad_co(const float v1[3],
copy_v3_v3(projverts2[i], projverts[i]);
}
- //expand quad a bit
+ // expand quad a bit
#if 1
float eps = FLT_EPSILON * 400000;
float c[3];
-
+
mid_v3_v3v3v3v3(c, projverts[0], projverts[1], projverts[2], projverts[3]);
sub_v3_v3(projverts2[0], c);
@@ -344,8 +344,7 @@ static bool quad_co(const float v1[3],
add_v3_v3(projverts2[1], c);
add_v3_v3(projverts2[2], c);
add_v3_v3(projverts2[3], c);
-#endif
-
+#endif
if (!isect_point_quad_v2(origin, projverts2[0], projverts2[1], projverts2[2], projverts2[3])) {
return false;
@@ -353,7 +352,7 @@ static bool quad_co(const float v1[3],
resolve_quad_uv_v2(r_uv, origin, projverts[0], projverts[3], projverts[2], projverts[1]);
- //if (r_uv[0] < -eps || r_uv[1] < -eps || r_uv[0] > 1.0+eps || r_uv[1] > 1.0+eps) {
+ // if (r_uv[0] < -eps || r_uv[1] < -eps || r_uv[0] > 1.0+eps || r_uv[1] > 1.0+eps) {
// return false;
//}
@@ -400,7 +399,6 @@ static bool mdisp_in_mdispquad(BMLoop *l_src,
compute_mdisp_quad(l_dst, l_dst_f_center, v1, v2, v3, v4, e1, e2);
/* expand quad a bit */
-#if 0
float c[3];
float eps = FLT_EPSILON * 400;
mid_v3_v3v3v3v3(c, v1, v2, v3, v4);
@@ -417,7 +415,6 @@ static bool mdisp_in_mdispquad(BMLoop *l_src,
add_v3_v3(v2, c);
add_v3_v3(v3, c);
add_v3_v3(v4, c);
-#endif
if (!quad_co(v1, v2, v3, v4, p, l_src->v->no, r_uv)) {
return 0;
@@ -567,8 +564,8 @@ static void loop_interp_multires_cb(void *__restrict userdata,
negate_v3(n2);
}
- th = acos(dot_v3v3(n1, n2)*0.999999f);
- if (th > M_PI*0.1) {
+ th = acos(dot_v3v3(n1, n2) * 0.999999f);
+ if (th > M_PI * 0.1) {
continue;
}
@@ -587,23 +584,24 @@ static void loop_interp_multires_cb(void *__restrict userdata,
float l = len_v3v3(disp, baseco);
if (l < mindis) {
mindis = l;
- //tot++;
- //copy_v3_v3(sum, disp);
+ // tot++;
+ // copy_v3_v3(sum, disp);
}
add_v3_v3(sum, disp);
tot++;
- //break;
+ // break;
}
} while ((l_iter = l_iter->next) != l_first);
if (tot) {
mul_v3_fl(sum, 1.0 / (float)tot);
copy_v3_v3(md_dst->disps[iy * res + ix], sum);
- } else {
- //printf("failed to set disp: %f %f\n"
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list