30 for (
const int loop_index : corner_verts.
index_range()) {
40 reshape_context, &grid_coord,
P, tangent_matrix);
43 reshape_context, &grid_coord);
47 base_positions[corner_verts[loop_index]] =
P +
D;
75 origco[
i] = base_positions[
i];
83 if (vert_to_face_map[
i].is_empty()) {
89 for (
const int face : vert_to_face_map[
i]) {
91 for (
const int corner : reshape_context->
base_faces[face]) {
94 center += origco[vndx];
102 for (
int j = 0; j < vert_to_face_map[
i].
size(); j++) {
109 for (
int k = 0; k < face.
size(); k++) {
118 fake_co[k] = origco[vndx];
130 base_positions[
i] += push;
136 base_mesh->tag_positions_changed();
blender::Array< blender::float3 > BKE_multires_create_deformed_base_mesh_vert_coords(Depsgraph *depsgraph, Object *object, MultiresModifierData *mmd)
Read Guarded memory(de)allocation.
ATTR_WARN_UNUSED_RESULT const BMVert * v
BPy_StructRNA * depsgraph
constexpr int64_t size() const
constexpr IndexRange index_range() const
ReshapeConstGridElement multires_reshape_orig_grid_element_for_grid_coord(const MultiresReshapeContext *reshape_context, const GridCoord *grid_coord)
void multires_reshape_evaluate_base_mesh_limit_at_grid(const MultiresReshapeContext *reshape_context, const GridCoord *grid_coord, blender::float3 &r_P, blender::float3x3 &r_tangent_matrix)
void multires_reshape_apply_base_refit_base_mesh(MultiresReshapeContext *reshape_context)
static float v3_dist_from_plane(const blender::float3 &v, const blender::float3 ¢er, const blender::float3 &no)
void multires_reshape_apply_base_refine_from_base(MultiresReshapeContext *reshape_context)
void multires_reshape_apply_base_update_mesh_coords(MultiresReshapeContext *reshape_context)
void multires_reshape_apply_base_refine_from_deform(MultiresReshapeContext *reshape_context)
float3 face_normal_calc(Span< float3 > vert_positions, Span< int > face_verts)
bool eval_refine_from_mesh(Subdiv *subdiv, const Mesh *mesh, Span< float3 > coarse_vert_positions)
T dot(const QuaternionBase< T > &a, const QuaternionBase< T > &b)
MatBase< T, NumCol, NumRow > normalize(const MatBase< T, NumCol, NumRow > &a)
VecBase< T, 3 > transform_direction(const MatBase< T, 3, 3 > &mat, const VecBase< T, 3 > &direction)
MatBase< float, 3, 3 > float3x3
VecBase< float, 3 > float3
blender::bke::subdiv::Subdiv * subdiv
blender::OffsetIndices< int > base_faces
blender::Span< blender::float3 > base_positions
blender::Span< int > base_corner_verts
MultiresModifierData * mmd
blender::float3 displacement