[Bf-blender-cvs] [00a32410957] gsoc-2021-porting-modifiers-to-nodes-solidify: makeing node and modifier working with solidify kernel version.
Fabian Schempp
noreply at git.blender.org
Tue Jun 22 10:49:54 CEST 2021
Commit: 00a32410957e899b94d75b4df394cb5320abe260
Author: Fabian Schempp
Date: Tue Jun 1 23:50:41 2021 +0200
Branches: gsoc-2021-porting-modifiers-to-nodes-solidify
https://developer.blender.org/rB00a32410957e899b94d75b4df394cb5320abe260
makeing node and modifier working with solidify kernel version.
===================================================================
M source/blender/blenkernel/BKE_solidifiy.h
M source/blender/blenkernel/intern/solidify_extrude.c
M source/blender/nodes/geometry/nodes/node_geo_solidifiy.cc
===================================================================
diff --git a/source/blender/blenkernel/BKE_solidifiy.h b/source/blender/blenkernel/BKE_solidifiy.h
index 25e53ddcf5c..c6a902c9def 100644
--- a/source/blender/blenkernel/BKE_solidifiy.h
+++ b/source/blender/blenkernel/BKE_solidifiy.h
@@ -29,7 +29,6 @@ typedef struct SolidifyData {
char nonmanifold_offset_mode;
char nonmanifold_boundary_mode;
- char _pad;
float crease_inner;
float crease_outer;
float crease_rim;
diff --git a/source/blender/blenkernel/intern/solidify_extrude.c b/source/blender/blenkernel/intern/solidify_extrude.c
index f1d3fce3f8a..fb461b7e06b 100644
--- a/source/blender/blenkernel/intern/solidify_extrude.c
+++ b/source/blender/blenkernel/intern/solidify_extrude.c
@@ -32,7 +32,6 @@
#include "MEM_guardedalloc.h"
#include "BKE_deform.h"
-#include "BKE_lattice.h"
#include "BKE_mesh.h"
#include "BKE_solidifiy.h"
@@ -183,24 +182,10 @@ static void mesh_calc_hq_normal(Mesh *mesh, float (*poly_nors)[3], float (*r_ver
/* -------------------------------------------------------------------- */
/** \name Main Solidify Function
* \{ */
-static void get_vgroup(
- const Object *ob, struct Mesh *mesh, const char *name, MDeformVert **dvert, int *defgrp_index)
-{
- *defgrp_index = BKE_object_defgroup_name_index(ob, name);
- *dvert = NULL;
-
- if (*defgrp_index != -1) {
- if (ob->type == OB_LATTICE) {
- *dvert = BKE_lattice_deform_verts_get(ob);
- }
- else if (mesh) {
- *dvert = mesh->dvert;
- }
- }
-}
Mesh *solidify_extrude(const SolidifyData *solidify_data, Mesh *mesh)
{
+ printf("solidify extrude: %f, %i\n", solidify_data->offset, solidify_data->flag);
Mesh *result;
MVert *mv, *mvert, *orig_mvert;
@@ -214,9 +199,9 @@ Mesh *solidify_extrude(const SolidifyData *solidify_data, Mesh *mesh)
uint newLoops = 0, newPolys = 0, newEdges = 0, newVerts = 0, rimVerts = 0;
/* only use material offsets if we have 2 or more materials */
- const short mat_nr_max = solidify_data->object->totcol > 1 ? solidify_data->object->totcol - 1 : 0;
- const short mat_ofs = mat_nr_max ? solidify_data->mat_ofs : 0;
- const short mat_ofs_rim = mat_nr_max ? solidify_data->mat_ofs_rim : 0;
+ const short mat_nr_max = 0;//object->totcol > 1 ? object->totcol - 1 : 0;
+ const short mat_ofs = 0;//mat_nr_max ? smd->mat_ofs : 0;
+ const short mat_ofs_rim = 0;//mat_nr_max ? smd->mat_ofs_rim : 0;
/* use for edges */
/* over-alloc new_vert_arr, old_vert_arr */
@@ -256,14 +241,14 @@ Mesh *solidify_extrude(const SolidifyData *solidify_data, Mesh *mesh)
MDeformVert *dvert = mesh->dvert;
const bool defgrp_invert = (solidify_data->flag & MOD_SOLIDIFY_VGROUP_INV) != 0;
int defgrp_index = 0;
- const int shell_defgrp_index = BKE_object_defgroup_name_index(solidify_data->object,
- solidify_data->shell_defgrp_name);
- const int rim_defgrp_index = BKE_object_defgroup_name_index(solidify_data->object, solidify_data->rim_defgrp_name);
+// const int shell_defgrp_index = BKE_object_defgroup_name_index(object,
+// smd->shell_defgrp_name);
+// const int rim_defgrp_index = BKE_object_defgroup_name_index(object, smd->rim_defgrp_name);
/* array size is doubled in case of using a shell */
const uint stride = do_shell ? 2 : 1;
- get_vgroup(solidify_data->object, mesh, solidify_data->defgrp_name, &dvert, &defgrp_index);
+ //MOD_get_vgroup(object, mesh, smd->defgrp_name, &dvert, &defgrp_index);
orig_mvert = mesh->mvert;
orig_medge = mesh->medge;
@@ -618,17 +603,17 @@ Mesh *solidify_extrude(const SolidifyData *solidify_data, Mesh *mesh)
for (i_orig = 0; i_orig < i_end; i_orig++, mv++) {
const uint i = do_shell_align ? i_orig : new_vert_arr[i_orig];
- //if (dvert) {
- //MDeformVert *dv = &dvert[i];
+ if (dvert) {
+ MDeformVert *dv = &dvert[i];
if (defgrp_invert) {
- scalar_short_vgroup = 1.0f - solidify_data->selection[i];//BKE_defvert_find_weight(dv, defgrp_index);
+ scalar_short_vgroup = 1.0f - BKE_defvert_find_weight(dv, defgrp_index);
}
else {
- scalar_short_vgroup = solidify_data->selection[i];//BKE_defvert_find_weight(dv, defgrp_index);
+ scalar_short_vgroup = BKE_defvert_find_weight(dv, defgrp_index);
}
scalar_short_vgroup = (offset_fac_vg + (scalar_short_vgroup * offset_fac_vg_inv)) *
scalar_short;
- //}
+ }
if (do_clamp && offset > FLT_EPSILON) {
/* always reset because we may have set before */
if (dvert == NULL) {
@@ -665,17 +650,17 @@ Mesh *solidify_extrude(const SolidifyData *solidify_data, Mesh *mesh)
for (i_orig = 0; i_orig < i_end; i_orig++, mv++) {
const uint i = do_shell_align ? i_orig : new_vert_arr[i_orig];
- //if (dvert) {
- //MDeformVert *dv = &dvert[i];
+ if (dvert) {
+ MDeformVert *dv = &dvert[i];
if (defgrp_invert) {
- scalar_short_vgroup = 1.0f - solidify_data->selection[i];//BKE_defvert_find_weight(dv, defgrp_index);
+ scalar_short_vgroup = 1.0f - BKE_defvert_find_weight(dv, defgrp_index);
}
else {
- scalar_short_vgroup = solidify_data->selection[i];//BKE_defvert_find_weight(dv, defgrp_index);
+ scalar_short_vgroup = BKE_defvert_find_weight(dv, defgrp_index);
}
scalar_short_vgroup = (offset_fac_vg + (scalar_short_vgroup * offset_fac_vg_inv)) *
scalar_short;
- //}
+ }
if (do_clamp && offset > FLT_EPSILON) {
/* always reset because we may have set before */
if (dvert == NULL) {
@@ -804,23 +789,25 @@ Mesh *solidify_extrude(const SolidifyData *solidify_data, Mesh *mesh)
}
/* vertex group support */
+ if (dvert) {
+ MDeformVert *dv = dvert;
float scalar;
if (defgrp_invert) {
- for (i = 0; i < numVerts; i++){//}, dv++) {
- scalar = 1.0f - solidify_data->selection[i];//BKE_defvert_find_weight(dv, defgrp_index);
+ for (i = 0; i < numVerts; i++, dv++) {
+ scalar = 1.0f - BKE_defvert_find_weight(dv, defgrp_index);
scalar = offset_fac_vg + (scalar * offset_fac_vg_inv);
vert_angles[i] *= scalar;
}
}
else {
- for (i = 0; i < numVerts; i++){//, dv++) {
- scalar = solidify_data->selection[i];//BKE_defvert_find_weight(dv, defgrp_index);
+ for (i = 0; i < numVerts; i++, dv++) {
+ scalar = BKE_defvert_find_weight(dv, defgrp_index);
scalar = offset_fac_vg + (scalar * offset_fac_vg_inv);
vert_angles[i] *= scalar;
}
}
- //}
+ }
/* for angle clamp */
float *vert_angs = NULL;
@@ -917,7 +904,8 @@ Mesh *solidify_extrude(const SolidifyData *solidify_data, Mesh *mesh)
else {
for (i = 0; i < numVerts; i++) {
if (vert_lens_sq[i] < offset_sq) {
- vert_angles[i] *= sqrtf(vert_lens_sq[i]) / offset;
+ float scalar = sqrtf(vert_lens_sq[i]) / offset;
+ vert_angles[i] *= scalar;
}
}
}
@@ -1007,35 +995,35 @@ Mesh *solidify_extrude(const SolidifyData *solidify_data, Mesh *mesh)
}
/* Add vertex weights for rim and shell vgroups. */
- if (shell_defgrp_index != -1 || rim_defgrp_index != -1) {
- dvert = CustomData_duplicate_referenced_layer(&result->vdata, CD_MDEFORMVERT, result->totvert);
- /* If no vertices were ever added to an object's vgroup, dvert might be NULL. */
- if (dvert == NULL) {
- /* Add a valid data layer! */
- dvert = CustomData_add_layer(
- &result->vdata, CD_MDEFORMVERT, CD_CALLOC, NULL, result->totvert);
- }
- /* Ultimate security check. */
- if (dvert != NULL) {
- result->dvert = dvert;
-
- if (rim_defgrp_index != -1) {
- for (uint i = 0; i < rimVerts; i++) {
- BKE_defvert_ensure_index(&result->dvert[new_vert_arr[i]], rim_defgrp_index)->weight =
- 1.0f;
- BKE_defvert_ensure_index(&result->dvert[(do_shell ? new_vert_arr[i] : i) + numVerts],
- rim_defgrp_index)
- ->weight = 1.0f;
- }
- }
-
- if (shell_defgrp_index != -1) {
- for (uint i = numVerts; i < result->totvert; i++) {
- BKE_defvert_ensure_index(&result->dvert[i], shell_defgrp_index)->weight = 1.0f;
- }
- }
- }
- }
+// if (shell_defgrp_index != -1 || rim_defgrp_index != -1) {
+// dvert = CustomData_duplicate_referenced_layer(&result->vdata, CD_MDEFORMVERT, result->totvert);
+// /* If no vertices were ever added to an object's vgroup, dvert might be NULL. */
+// if (dvert == NULL) {
+// /* Add a valid data layer! */
+// dvert = CustomData_add_layer(
+// &result->vdata, CD_MDEFORMVERT, CD_CALLOC, NULL, result->totvert);
+// }
+// /* Ultimate security check. */
+// if (dvert != NULL) {
+// result->dvert = dvert;
+//
+// if (rim_defgrp_index != -1) {
+// for (uint i = 0; i < rimVerts; i++) {
+// BKE_defvert_ensure_index(&result->dvert[new_vert_arr[i]], rim_defgrp_index)->weight =
+// 1.0f;
+// BKE_defvert_ensure_index(&result->dvert[(do_shell ? new_vert_arr[i] : i) + numVerts],
+// rim_defgrp_index)
+// ->weight = 1.0f;
+// }
+// }
+//
+// if (shell_defgrp_index != -1) {
+// for (uint i = numVerts; i < result->totvert; i++) {
+// BKE_defvert_ensure_index(&result->dvert[i], shell_defgrp_index)->weight = 1.0f;
+// }
+// }
+// }
+// }
if (do_rim) {
uint i;
@@ -1247,6 +1235,1055 @@ Mesh *solidify_extrude(const SolidifyData *solidify_data, Mesh *mesh)
return result;
}
/* NOLINTNEXTLINE: readability-function-size */
+//Mesh *solidify_extrude_modifyMesh( Mesh *mesh)
+//{
+// Mesh *result;
+// //const SolidifyModifierData *smd = (SolidifyModifierData *)md;
+//
+// MVert *mv, *mvert, *orig_m
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list