Cleanup: clarify naming for deformed vertex positions & normals
Edit-mesh duplicator logic used a struct member vert_coords which read as an alternative (and inconsistent) naming to vert_positions. Rename to `vert_positions_deform` as the purpose of this value is to assign when modifiers deform an edit-mesh. Add `_deform` suffix to normals as well.
This commit is contained in:
parent
485ab42075
commit
6ef8db35e7
|
@ -565,8 +565,8 @@ struct VertexDupliData_EditMesh {
|
|||
BMEditMesh *em;
|
||||
|
||||
/* Can be nullptr. */
|
||||
const float (*vert_coords)[3];
|
||||
const float (*vert_normals)[3];
|
||||
const float (*vert_positions_deform)[3];
|
||||
const float (*vert_normals_deform)[3];
|
||||
|
||||
/**
|
||||
* \note The edit-mesh may assign #DupliObject.orco in cases when a regular mesh wouldn't.
|
||||
|
@ -682,14 +682,14 @@ static void make_child_duplis_verts_from_editmesh(const DupliContext *ctx,
|
|||
BMIter iter;
|
||||
int i;
|
||||
|
||||
const float(*vert_coords)[3] = vdd->vert_coords;
|
||||
const float(*vert_normals)[3] = vdd->vert_normals;
|
||||
const float(*vert_positions_deform)[3] = vdd->vert_positions_deform;
|
||||
const float(*vert_normals_deform)[3] = vdd->vert_normals_deform;
|
||||
|
||||
BM_ITER_MESH_INDEX (v, &iter, em->bm, BM_VERTS_OF_MESH, i) {
|
||||
const float *co, *no;
|
||||
if (vert_coords != nullptr) {
|
||||
co = vert_coords[i];
|
||||
no = vert_normals ? vert_normals[i] : nullptr;
|
||||
if (vert_positions_deform != nullptr) {
|
||||
co = vert_positions_deform[i];
|
||||
no = vert_normals_deform ? vert_normals_deform[i] : nullptr;
|
||||
}
|
||||
else {
|
||||
co = v->co;
|
||||
|
@ -710,10 +710,10 @@ static void make_duplis_verts(const DupliContext *ctx)
|
|||
|
||||
/* Gather mesh info. */
|
||||
BMEditMesh *em = nullptr;
|
||||
const float(*vert_coords)[3] = nullptr;
|
||||
const float(*vert_normals)[3] = nullptr;
|
||||
const float(*vert_positions_deform)[3] = nullptr;
|
||||
const float(*vert_normals_deform)[3] = nullptr;
|
||||
const Mesh *me_eval = mesh_data_from_duplicator_object(
|
||||
parent, &em, &vert_coords, use_rotation ? &vert_normals : nullptr);
|
||||
parent, &em, &vert_positions_deform, use_rotation ? &vert_normals_deform : nullptr);
|
||||
if (em == nullptr && me_eval == nullptr) {
|
||||
return;
|
||||
}
|
||||
|
@ -724,9 +724,9 @@ static void make_duplis_verts(const DupliContext *ctx)
|
|||
VertexDupliData_EditMesh vdd{};
|
||||
vdd.params = vdd_params;
|
||||
vdd.em = em;
|
||||
vdd.vert_coords = vert_coords;
|
||||
vdd.vert_normals = vert_normals;
|
||||
vdd.has_orco = (vert_coords != nullptr);
|
||||
vdd.vert_positions_deform = vert_positions_deform;
|
||||
vdd.vert_normals_deform = vert_normals_deform;
|
||||
vdd.has_orco = (vert_positions_deform != nullptr);
|
||||
|
||||
make_child_duplis(ctx, &vdd, make_child_duplis_verts_from_editmesh);
|
||||
}
|
||||
|
@ -1073,7 +1073,7 @@ struct FaceDupliData_EditMesh {
|
|||
bool has_orco, has_uvs;
|
||||
int cd_loop_uv_offset;
|
||||
/* Can be nullptr. */
|
||||
const float (*vert_coords)[3];
|
||||
const float (*vert_positions_deform)[3];
|
||||
};
|
||||
|
||||
static void get_dupliface_transform_from_coords(Span<float3> coords,
|
||||
|
@ -1181,7 +1181,7 @@ static DupliObject *face_dupli_from_editmesh(const DupliContext *ctx,
|
|||
|
||||
/* Mesh variables. */
|
||||
BMFace *f,
|
||||
const float (*vert_coords)[3])
|
||||
const float (*vert_positions_deform)[3])
|
||||
{
|
||||
const int coords_len = f->len;
|
||||
Array<float3, 64> coords(coords_len);
|
||||
|
@ -1189,9 +1189,9 @@ static DupliObject *face_dupli_from_editmesh(const DupliContext *ctx,
|
|||
BMLoop *l_first, *l_iter;
|
||||
int i = 0;
|
||||
l_iter = l_first = BM_FACE_FIRST_LOOP(f);
|
||||
if (vert_coords != nullptr) {
|
||||
if (vert_positions_deform != nullptr) {
|
||||
do {
|
||||
copy_v3_v3(coords[i++], vert_coords[BM_elem_index_get(l_iter->v)]);
|
||||
copy_v3_v3(coords[i++], vert_positions_deform[BM_elem_index_get(l_iter->v)]);
|
||||
} while ((l_iter = l_iter->next) != l_first);
|
||||
}
|
||||
else {
|
||||
|
@ -1261,9 +1261,9 @@ static void make_child_duplis_faces_from_editmesh(const DupliContext *ctx,
|
|||
BMIter iter;
|
||||
const bool use_scale = fdd->params.use_scale;
|
||||
|
||||
const float(*vert_coords)[3] = fdd->vert_coords;
|
||||
const float(*vert_positions_deform)[3] = fdd->vert_positions_deform;
|
||||
|
||||
BLI_assert((vert_coords == nullptr) || (em->bm->elem_index_dirty & BM_VERT) == 0);
|
||||
BLI_assert((vert_positions_deform == nullptr) || (em->bm->elem_index_dirty & BM_VERT) == 0);
|
||||
|
||||
invert_m4_m4(inst_ob->world_to_object, inst_ob->object_to_world);
|
||||
/* Relative transform from parent to child space. */
|
||||
|
@ -1272,7 +1272,7 @@ static void make_child_duplis_faces_from_editmesh(const DupliContext *ctx,
|
|||
|
||||
BM_ITER_MESH_INDEX (f, &iter, em->bm, BM_FACES_OF_MESH, a) {
|
||||
DupliObject *dob = face_dupli_from_editmesh(
|
||||
fdd->params.ctx, inst_ob, child_imat, a, use_scale, scale_fac, f, vert_coords);
|
||||
fdd->params.ctx, inst_ob, child_imat, a, use_scale, scale_fac, f, vert_positions_deform);
|
||||
|
||||
if (fdd->has_orco) {
|
||||
const float w = 1.0f / float(f->len);
|
||||
|
@ -1294,8 +1294,9 @@ static void make_duplis_faces(const DupliContext *ctx)
|
|||
|
||||
/* Gather mesh info. */
|
||||
BMEditMesh *em = nullptr;
|
||||
const float(*vert_coords)[3] = nullptr;
|
||||
const Mesh *me_eval = mesh_data_from_duplicator_object(parent, &em, &vert_coords, nullptr);
|
||||
const float(*vert_positions_deform)[3] = nullptr;
|
||||
const Mesh *me_eval = mesh_data_from_duplicator_object(
|
||||
parent, &em, &vert_positions_deform, nullptr);
|
||||
if (em == nullptr && me_eval == nullptr) {
|
||||
return;
|
||||
}
|
||||
|
@ -1307,8 +1308,8 @@ static void make_duplis_faces(const DupliContext *ctx)
|
|||
FaceDupliData_EditMesh fdd{};
|
||||
fdd.params = fdd_params;
|
||||
fdd.em = em;
|
||||
fdd.vert_coords = vert_coords;
|
||||
fdd.has_orco = (vert_coords != nullptr);
|
||||
fdd.vert_positions_deform = vert_positions_deform;
|
||||
fdd.has_orco = (vert_positions_deform != nullptr);
|
||||
fdd.has_uvs = (uv_idx != -1);
|
||||
fdd.cd_loop_uv_offset = (uv_idx != -1) ?
|
||||
CustomData_get_n_offset(&em->bm->ldata, CD_MLOOPUV, uv_idx) :
|
||||
|
|
Loading…
Reference in New Issue