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/blenkernel/intern/multires_reshape_apply_base.c')
-rw-r--r--source/blender/blenkernel/intern/multires_reshape_apply_base.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/source/blender/blenkernel/intern/multires_reshape_apply_base.c b/source/blender/blenkernel/intern/multires_reshape_apply_base.c
index 81b0abbdcf5..8eed2484cca 100644
--- a/source/blender/blenkernel/intern/multires_reshape_apply_base.c
+++ b/source/blender/blenkernel/intern/multires_reshape_apply_base.c
@@ -30,14 +30,13 @@
void multires_reshape_apply_base_update_mesh_coords(MultiresReshapeContext *reshape_context)
{
Mesh *base_mesh = reshape_context->base_mesh;
- MVert *base_verts = BKE_mesh_verts_for_write(base_mesh);
+ float(*base_positions)[3] = BKE_mesh_positions_for_write(base_mesh);
/* Update the context in case the vertices were duplicated. */
- reshape_context->base_verts = base_verts;
+ reshape_context->base_positions = base_positions;
const MLoop *mloop = reshape_context->base_loops;
for (int loop_index = 0; loop_index < base_mesh->totloop; ++loop_index) {
const MLoop *loop = &mloop[loop_index];
- MVert *vert = &base_verts[loop->v];
GridCoord grid_coord;
grid_coord.grid_index = loop_index;
@@ -53,7 +52,7 @@ void multires_reshape_apply_base_update_mesh_coords(MultiresReshapeContext *resh
float D[3];
mul_v3_m3v3(D, tangent_matrix, grid_element.displacement);
- add_v3_v3v3(vert->co, P, D);
+ add_v3_v3v3(base_positions[loop->v], P, D);
}
}
@@ -69,9 +68,9 @@ static float v3_dist_from_plane(const float v[3], const float center[3], const f
void multires_reshape_apply_base_refit_base_mesh(MultiresReshapeContext *reshape_context)
{
Mesh *base_mesh = reshape_context->base_mesh;
- MVert *base_verts = BKE_mesh_verts_for_write(base_mesh);
+ float(*base_positions)[3] = BKE_mesh_positions_for_write(base_mesh);
/* Update the context in case the vertices were duplicated. */
- reshape_context->base_verts = base_verts;
+ reshape_context->base_positions = base_positions;
MeshElemMap *pmap;
int *pmap_mem;
BKE_mesh_vert_poly_map_create(&pmap,
@@ -85,7 +84,7 @@ void multires_reshape_apply_base_refit_base_mesh(MultiresReshapeContext *reshape
float(*origco)[3] = MEM_calloc_arrayN(
base_mesh->totvert, sizeof(float[3]), "multires apply base origco");
for (int i = 0; i < base_mesh->totvert; i++) {
- copy_v3_v3(origco[i], base_verts[i].co);
+ copy_v3_v3(origco[i], base_positions[i]);
}
for (int i = 0; i < base_mesh->totvert; i++) {
@@ -148,10 +147,10 @@ void multires_reshape_apply_base_refit_base_mesh(MultiresReshapeContext *reshape
normalize_v3(avg_no);
/* Push vertex away from the plane. */
- const float dist = v3_dist_from_plane(base_verts[i].co, center, avg_no);
+ const float dist = v3_dist_from_plane(base_positions[i], center, avg_no);
copy_v3_v3(push, avg_no);
mul_v3_fl(push, dist);
- add_v3_v3(base_verts[i].co, push);
+ add_v3_v3(base_positions[i], push);
}
MEM_freeN(origco);