Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/editors/object')
-rw-r--r--source/blender/editors/object/object_bake_api.c2
-rw-r--r--source/blender/editors/object/object_modifier.cc29
-rw-r--r--source/blender/editors/object/object_remesh.cc7
-rw-r--r--source/blender/editors/object/object_vgroup.cc33
4 files changed, 35 insertions, 36 deletions
diff --git a/source/blender/editors/object/object_bake_api.c b/source/blender/editors/object/object_bake_api.c
index e69ccf5a50d..6a415427558 100644
--- a/source/blender/editors/object/object_bake_api.c
+++ b/source/blender/editors/object/object_bake_api.c
@@ -1032,7 +1032,7 @@ static void bake_targets_populate_pixels_color_attributes(BakeTargets *targets,
const MLoop *loops = BKE_mesh_loops(me_eval);
BKE_mesh_recalc_looptri(loops,
BKE_mesh_polys(me_eval),
- BKE_mesh_verts(me_eval),
+ BKE_mesh_positions(me_eval),
me_eval->totloop,
me_eval->totpoly,
looptri);
diff --git a/source/blender/editors/object/object_modifier.cc b/source/blender/editors/object/object_modifier.cc
index 67399717c72..013bbbf7e55 100644
--- a/source/blender/editors/object/object_modifier.cc
+++ b/source/blender/editors/object/object_modifier.cc
@@ -93,6 +93,7 @@
#include "object_intern.h"
+using blender::float3;
using blender::Span;
static void modifier_skin_customdata_delete(struct Object *ob);
@@ -590,13 +591,13 @@ bool ED_object_modifier_convert_psys_to_mesh(ReportList * /*reports*/,
me->totvert = verts_num;
me->totedge = edges_num;
- CustomData_add_layer(&me->vdata, CD_MVERT, CD_SET_DEFAULT, nullptr, verts_num);
+ CustomData_add_layer_named(
+ &me->vdata, CD_PROP_FLOAT3, CD_CONSTRUCT, nullptr, verts_num, "position");
CustomData_add_layer(&me->edata, CD_MEDGE, CD_SET_DEFAULT, nullptr, edges_num);
CustomData_add_layer(&me->fdata, CD_MFACE, CD_SET_DEFAULT, nullptr, 0);
- blender::MutableSpan<MVert> verts = me->verts_for_write();
+ blender::MutableSpan<float3> positions = me->positions_for_write();
blender::MutableSpan<MEdge> edges = me->edges_for_write();
- MVert *mvert = verts.data();
MEdge *medge = edges.data();
bke::MutableAttributeAccessor attributes = me->attributes_for_write();
@@ -610,7 +611,7 @@ bool ED_object_modifier_convert_psys_to_mesh(ReportList * /*reports*/,
ParticleCacheKey *key = cache[a];
int kmax = key->segments;
for (int k = 0; k <= kmax; k++, key++, cvert++, vert_index++) {
- copy_v3_v3(mvert[vert_index].co, key->co);
+ positions[vert_index] = key->co;
if (k) {
medge->v1 = cvert - 1;
medge->v2 = cvert;
@@ -629,7 +630,7 @@ bool ED_object_modifier_convert_psys_to_mesh(ReportList * /*reports*/,
ParticleCacheKey *key = cache[a];
int kmax = key->segments;
for (int k = 0; k <= kmax; k++, key++, cvert++, vert_index++) {
- copy_v3_v3(mvert[vert_index].co, key->co);
+ copy_v3_v3(positions[vert_index], key->co);
if (k) {
medge->v1 = cvert - 1;
medge->v2 = cvert;
@@ -2659,7 +2660,7 @@ void OBJECT_OT_skin_radii_equalize(wmOperatorType *ot)
}
static void skin_armature_bone_create(Object *skin_ob,
- const MVert *mvert,
+ const Span<float3> positions,
const MEdge *medge,
bArmature *arm,
BLI_bitmap *edges_visited,
@@ -2686,8 +2687,8 @@ static void skin_armature_bone_create(Object *skin_ob,
bone->flag |= BONE_CONNECTED;
}
- copy_v3_v3(bone->head, mvert[parent_v].co);
- copy_v3_v3(bone->tail, mvert[v].co);
+ copy_v3_v3(bone->head, positions[parent_v]);
+ copy_v3_v3(bone->tail, positions[v]);
bone->rad_head = bone->rad_tail = 0.25;
BLI_snprintf(bone->name, sizeof(bone->name), "Bone.%.2d", endx);
@@ -2698,14 +2699,14 @@ static void skin_armature_bone_create(Object *skin_ob,
ED_vgroup_vert_add(skin_ob, dg, v, 1, WEIGHT_REPLACE);
}
- skin_armature_bone_create(skin_ob, mvert, medge, arm, edges_visited, emap, bone, v);
+ skin_armature_bone_create(skin_ob, positions, medge, arm, edges_visited, emap, bone, v);
}
}
static Object *modifier_skin_armature_create(Depsgraph *depsgraph, Main *bmain, Object *skin_ob)
{
Mesh *me = static_cast<Mesh *>(skin_ob->data);
- const Span<MVert> me_verts = me->verts();
+ const Span<float3> me_positions = me->positions();
const Span<MEdge> me_edges = me->edges();
Scene *scene_eval = DEG_get_evaluated_scene(depsgraph);
@@ -2713,7 +2714,7 @@ static Object *modifier_skin_armature_create(Depsgraph *depsgraph, Main *bmain,
const Mesh *me_eval_deform = mesh_get_eval_deform(
depsgraph, scene_eval, ob_eval, &CD_MASK_BAREMESH);
- const Span<MVert> verts_eval = me_eval_deform->verts();
+ const Span<float3> positions_eval = me_eval_deform->positions();
/* add vertex weights to original mesh */
CustomData_add_layer(&me->vdata, CD_MDEFORMVERT, CD_SET_DEFAULT, nullptr, me->totvert);
@@ -2748,8 +2749,8 @@ static Object *modifier_skin_armature_create(Depsgraph *depsgraph, Main *bmain,
if (emap[v].count > 1) {
bone = ED_armature_ebone_add(arm, "Bone");
- copy_v3_v3(bone->head, me_verts[v].co);
- copy_v3_v3(bone->tail, me_verts[v].co);
+ copy_v3_v3(bone->head, me_positions[v]);
+ copy_v3_v3(bone->tail, me_positions[v]);
bone->head[1] = 1.0f;
bone->rad_head = bone->rad_tail = 0.25;
@@ -2757,7 +2758,7 @@ static Object *modifier_skin_armature_create(Depsgraph *depsgraph, Main *bmain,
if (emap[v].count >= 1) {
skin_armature_bone_create(
- skin_ob, verts_eval.data(), me_edges.data(), arm, edges_visited, emap, bone, v);
+ skin_ob, positions_eval, me_edges.data(), arm, edges_visited, emap, bone, v);
}
}
}
diff --git a/source/blender/editors/object/object_remesh.cc b/source/blender/editors/object/object_remesh.cc
index b9acf5ae27b..8c133dfecfa 100644
--- a/source/blender/editors/object/object_remesh.cc
+++ b/source/blender/editors/object/object_remesh.cc
@@ -73,6 +73,7 @@
#include "object_intern.h" /* own include */
+using blender::float3;
using blender::IndexRange;
using blender::Span;
@@ -681,7 +682,7 @@ static bool mesh_is_manifold_consistent(Mesh *mesh)
* check that the direction of the faces are consistent and doesn't suddenly
* flip
*/
- const Span<MVert> verts = mesh->verts();
+ const Span<float3> positions = mesh->positions();
const Span<MEdge> edges = mesh->edges();
const Span<MLoop> loops = mesh->loops();
@@ -719,9 +720,7 @@ static bool mesh_is_manifold_consistent(Mesh *mesh)
break;
}
/* Check for zero length edges */
- const MVert &v1 = verts[edges[i].v1];
- const MVert &v2 = verts[edges[i].v2];
- if (compare_v3v3(v1.co, v2.co, 1e-4f)) {
+ if (compare_v3v3(positions[edges[i].v1], positions[edges[i].v2], 1e-4f)) {
is_manifold_consistent = false;
break;
}
diff --git a/source/blender/editors/object/object_vgroup.cc b/source/blender/editors/object/object_vgroup.cc
index d3bdf8ca4d3..72b9b1b839c 100644
--- a/source/blender/editors/object/object_vgroup.cc
+++ b/source/blender/editors/object/object_vgroup.cc
@@ -68,6 +68,7 @@
#include "object_intern.h"
+using blender::float3;
using blender::MutableSpan;
using blender::Span;
@@ -1286,12 +1287,12 @@ static blender::Vector<int> getSurroundingVerts(Mesh *me, int vert)
* coord is the place the average is stored,
* points is the point cloud, count is the number of points in the cloud.
*/
-static void getSingleCoordinate(MVert *points, int count, float coord[3])
+static void getSingleCoordinate(float3 *points, int count, float coord[3])
{
int i;
zero_v3(coord);
for (i = 0; i < count; i++) {
- add_v3_v3(coord, points[i].co);
+ add_v3_v3(coord, points[i]);
}
mul_v3_fl(coord, 1.0f / count);
}
@@ -1357,7 +1358,7 @@ static void moveCloserToDistanceFromPlane(Depsgraph *depsgraph,
Mesh *me_deform;
MDeformWeight *dw, *dw_eval;
- MVert m;
+ float3 m;
MDeformVert *dvert = me->deform_verts_for_write().data() + index;
MDeformVert *dvert_eval = mesh_eval->deform_verts_for_write().data() + index;
int totweight = dvert->totweight;
@@ -1382,9 +1383,9 @@ static void moveCloserToDistanceFromPlane(Depsgraph *depsgraph,
do {
wasChange = false;
me_deform = mesh_get_eval_deform(depsgraph, scene_eval, object_eval, &CD_MASK_BAREMESH);
- const Span<MVert> verts = me_deform->verts();
- m = verts[index];
- copy_v3_v3(oldPos, m.co);
+ const Span<float3> positions = me_deform->positions();
+ m = positions[index];
+ copy_v3_v3(oldPos, m);
distToStart = dot_v3v3(norm, oldPos) + d;
if (distToBe == originalDistToBe) {
@@ -1425,9 +1426,8 @@ static void moveCloserToDistanceFromPlane(Depsgraph *depsgraph,
}
dw_eval->weight = dw->weight;
me_deform = mesh_get_eval_deform(depsgraph, scene_eval, object_eval, &CD_MASK_BAREMESH);
- m = verts[index];
- getVerticalAndHorizontalChange(
- norm, d, coord, oldPos, distToStart, m.co, changes, dists, i);
+ m = positions[index];
+ getVerticalAndHorizontalChange(norm, d, coord, oldPos, distToStart, m, changes, dists, i);
dw->weight = oldw;
dw_eval->weight = oldw;
if (!k) {
@@ -1531,28 +1531,27 @@ static void vgroup_fix(
int i;
Mesh *me = static_cast<Mesh *>(ob->data);
- MVert *mvert = me->verts_for_write().data();
if (!(me->editflag & ME_EDIT_PAINT_VERT_SEL)) {
return;
}
const bke::AttributeAccessor attributes = me->attributes();
const VArray<bool> select_vert = attributes.lookup_or_default<bool>(
".select_vert", ATTR_DOMAIN_POINT, false);
- for (i = 0; i < me->totvert && mvert; i++, mvert++) {
+ for (i = 0; i < me->totvert; i++) {
if (select_vert[i]) {
blender::Vector<int> verts = getSurroundingVerts(me, i);
const int count = verts.size();
if (!verts.is_empty()) {
- MVert m;
- MVert *p = static_cast<MVert *>(MEM_callocN(sizeof(MVert) * (count), "deformedPoints"));
+ float3 m;
+ float3 *p = static_cast<float3 *>(MEM_callocN(sizeof(float3) * (count), "deformedPoints"));
int k;
Mesh *me_deform = mesh_get_eval_deform(
depsgraph, scene_eval, object_eval, &CD_MASK_BAREMESH);
- const Span<MVert> verts_deform = me_deform->verts();
+ const Span<float3> positions_deform = me_deform->positions();
k = count;
while (k--) {
- p[k] = verts_deform[verts[k]];
+ p[k] = positions_deform[verts[k]];
}
if (count >= 3) {
@@ -1560,8 +1559,8 @@ static void vgroup_fix(
float coord[3];
float norm[3];
getSingleCoordinate(p, count, coord);
- m = verts_deform[i];
- sub_v3_v3v3(norm, m.co, coord);
+ m = positions_deform[i];
+ sub_v3_v3v3(norm, m, coord);
mag = normalize_v3(norm);
if (mag) { /* zeros fix */
d = -dot_v3v3(norm, coord);