Blender V5.0
blender::ed::sculpt_paint::smooth Namespace Reference

Functions

template<typename T>
T calc_average (const Span< T > values, const Span< int > indices)
template<typename T>
void neighbor_data_average_mesh_check_loose (const Span< T > src, const Span< int > verts, const GroupedSpan< int > vert_neighbors, const MutableSpan< T > dst)
template void neighbor_data_average_mesh_check_loose< float > (Span< float >, Span< int >, GroupedSpan< int >, MutableSpan< float >)
template void neighbor_data_average_mesh_check_loose< float3 > (Span< float3 >, Span< int >, GroupedSpan< int >, MutableSpan< float3 >)
template<typename T>
void neighbor_data_average_mesh (const Span< T > src, const GroupedSpan< int > vert_neighbors, const MutableSpan< T > dst)
template void neighbor_data_average_mesh< float > (Span< float >, GroupedSpan< int >, MutableSpan< float >)
template void neighbor_data_average_mesh< float3 > (Span< float3 >, GroupedSpan< int >, MutableSpan< float3 >)
template void neighbor_data_average_mesh< float4 > (Span< float4 >, GroupedSpan< int >, MutableSpan< float4 >)
static float3 average_positions (const CCGKey &key, const Span< float3 > positions, const Span< SubdivCCGCoord > coords)
template<bool use_factors>
static void neighbor_position_average_interior_grids_impl (const OffsetIndices< int > faces, const Span< int > corner_verts, const BitSpan boundary_verts, const SubdivCCG &subdiv_ccg, const Span< int > grids, const Span< float > factors, const MutableSpan< float3 > new_positions)
void neighbor_position_average_interior_grids (const OffsetIndices< int > faces, const Span< int > corner_verts, const BitSpan boundary_verts, const SubdivCCG &subdiv_ccg, const Span< int > grids, const MutableSpan< float3 > new_positions)
void neighbor_position_average_interior_grids (const OffsetIndices< int > faces, const Span< int > corner_verts, const BitSpan boundary_verts, const SubdivCCG &subdiv_ccg, const Span< int > grids, const Span< float > factors, const MutableSpan< float3 > new_positions)
template<typename T>
void average_data_grids (const SubdivCCG &subdiv_ccg, const Span< T > src, const Span< int > grids, const MutableSpan< T > dst)
template<typename T>
void average_data_bmesh (const Span< T > src, const Set< BMVert *, 0 > &verts, const MutableSpan< T > dst)
template void average_data_grids< float > (const SubdivCCG &, Span< float >, Span< int >, MutableSpan< float >)
template void average_data_grids< float3 > (const SubdivCCG &, Span< float3 >, Span< int >, MutableSpan< float3 >)
template void average_data_bmesh< float > (Span< float > src, const Set< BMVert *, 0 > &, MutableSpan< float >)
template void average_data_bmesh< float3 > (Span< float3 > src, const Set< BMVert *, 0 > &, MutableSpan< float3 >)
static float3 average_positions (const Span< const BMVert * > verts)
void neighbor_position_average_bmesh (const Set< BMVert *, 0 > &verts, const MutableSpan< float3 > new_positions)
template<bool use_factors>
static void neighbor_position_average_interior_bmesh_impl (const Set< BMVert *, 0 > &verts, const Span< float > factors, const MutableSpan< float3 > new_positions)
void neighbor_position_average_interior_bmesh (const Set< BMVert *, 0 > &verts, const Span< float > factors, const MutableSpan< float3 > new_positions)
void neighbor_position_average_interior_bmesh (const Set< BMVert *, 0 > &verts, const MutableSpan< float3 > new_positions)
void bmesh_four_neighbor_average (float avg[3], const float3 &direction, const BMVert *v)
void neighbor_color_average (const OffsetIndices< int > faces, const Span< int > corner_verts, const GroupedSpan< int > vert_to_face_map, const GSpan color_attribute, const bke::AttrDomain color_domain, const GroupedSpan< int > vert_neighbors, const MutableSpan< float4 > smooth_colors)
void surface_smooth_laplacian_step (const Span< float3 > positions, const Span< float3 > orig_positions, const Span< float3 > average_positions, const float alpha, MutableSpan< float3 > laplacian_disp, MutableSpan< float3 > translations)
void surface_smooth_displace_step (const Span< float3 > laplacian_disp, const Span< float3 > average_laplacian_disp, const float beta, const MutableSpan< float3 > translations)
static float3 translation_to_plane (const float3 &current_position, const float3 &normal, const float3 &smoothed_position)
static float3 calc_boundary_normal_corner (const float3 &current_position, const Span< float3 > vert_positions, const Span< int > neighbors)
static float3 calc_boundary_normal_corner (const CCGKey &key, const Span< float3 > positions, const float3 &current_position, const Span< SubdivCCGCoord > neighbors)
static float3 calc_boundary_normal_corner (const float3 &current_position, const Span< BMVert * > neighbors)
void calc_relaxed_translations_faces (const Span< float3 > vert_positions, const Span< float3 > vert_normals, const OffsetIndices< int > faces, const Span< int > corner_verts, const GroupedSpan< int > vert_to_face_map, const BitSpan boundary_verts, const Span< int > face_sets, const Span< bool > hide_poly, const bool filter_boundary_face_sets, const Span< int > verts, const Span< float > factors, const MutableSpan< float3 > translations)
void calc_relaxed_translations_grids (const SubdivCCG &subdiv_ccg, const OffsetIndices< int > faces, const Span< int > corner_verts, const Span< int > face_sets, const GroupedSpan< int > vert_to_face_map, const BitSpan boundary_verts, const Span< int > grids, const bool filter_boundary_face_sets, const Span< float > factors, const MutableSpan< float3 > translations)
void calc_relaxed_translations_bmesh (const Set< BMVert *, 0 > &verts, const Span< float3 > positions, const int face_set_offset, const bool filter_boundary_face_sets, const Span< float > factors, const MutableSpan< float3 > translations)
void blur_geometry_data_array (const Object &object, const int iterations, const MutableSpan< float > data)

Function Documentation

◆ average_data_bmesh()

template<typename T>
void blender::ed::sculpt_paint::smooth::average_data_bmesh ( const Span< T > src,
const Set< BMVert *, 0 > & verts,
const MutableSpan< T > dst )

◆ average_data_bmesh< float >()

◆ average_data_bmesh< float3 >()

◆ average_data_grids()

◆ average_data_grids< float >()

◆ average_data_grids< float3 >()

◆ average_positions() [1/2]

◆ average_positions() [2/2]

float3 blender::ed::sculpt_paint::smooth::average_positions ( const Span< const BMVert * > verts)
static

Definition at line 271 of file sculpt_smooth.cc.

References result, blender::math::safe_rcp(), and verts.

◆ blur_geometry_data_array()

◆ bmesh_four_neighbor_average()

void blender::ed::sculpt_paint::smooth::bmesh_four_neighbor_average ( float avg[3],
const float3 & direction,
const BMVert * v )

For bmesh: Average surrounding verts based on an orthogonality measure. Naturally converges to a quad-like structure.

Definition at line 339 of file sculpt_smooth.cc.

References add_v3_v3(), BM_edge_is_boundary(), BM_EDGES_OF_VERT, BM_ITER_ELEM, BMVert::co, copy_v3_v3(), dot_v3v3(), e, madd_v3_v3fl(), mul_v3_v3fl(), normalize_v3(), sub_v3_v3(), sub_v3_v3v3(), v, and zero_v3().

◆ calc_average()

template<typename T>
T blender::ed::sculpt_paint::smooth::calc_average ( const Span< T > values,
const Span< int > indices )

◆ calc_boundary_normal_corner() [1/3]

float3 blender::ed::sculpt_paint::smooth::calc_boundary_normal_corner ( const CCGKey & key,
const Span< float3 > positions,
const float3 & current_position,
const Span< SubdivCCGCoord > neighbors )
static

Definition at line 468 of file sculpt_smooth.cc.

References blender::math::normalize().

◆ calc_boundary_normal_corner() [2/3]

float3 blender::ed::sculpt_paint::smooth::calc_boundary_normal_corner ( const float3 & current_position,
const Span< BMVert * > neighbors )
static

Definition at line 481 of file sculpt_smooth.cc.

References blender::math::normalize().

◆ calc_boundary_normal_corner() [3/3]

float3 blender::ed::sculpt_paint::smooth::calc_boundary_normal_corner ( const float3 & current_position,
const Span< float3 > vert_positions,
const Span< int > neighbors )
static

◆ calc_relaxed_translations_bmesh()

◆ calc_relaxed_translations_faces()

void blender::ed::sculpt_paint::smooth::calc_relaxed_translations_faces ( const Span< float3 > vert_positions,
const Span< float3 > vert_normals,
const OffsetIndices< int > faces,
const Span< int > corner_verts,
const GroupedSpan< int > vert_to_face_map,
const BitSpan boundary_verts,
const Span< int > face_sets,
const Span< bool > hide_poly,
const bool filter_boundary_face_sets,
const Span< int > verts,
const Span< float > factors,
const MutableSpan< float3 > translations )

◆ calc_relaxed_translations_grids()

◆ neighbor_color_average()

void blender::ed::sculpt_paint::smooth::neighbor_color_average ( const OffsetIndices< int > faces,
const Span< int > corner_verts,
const GroupedSpan< int > vert_to_face_map,
const GSpan color_attribute,
const bke::AttrDomain color_domain,
const GroupedSpan< int > vert_neighbors,
const MutableSpan< float4 > smooth_colors )

◆ neighbor_data_average_mesh()

◆ neighbor_data_average_mesh< float >()

◆ neighbor_data_average_mesh< float3 >()

◆ neighbor_data_average_mesh< float4 >()

◆ neighbor_data_average_mesh_check_loose()

◆ neighbor_data_average_mesh_check_loose< float >()

◆ neighbor_data_average_mesh_check_loose< float3 >()

◆ neighbor_position_average_bmesh()

void blender::ed::sculpt_paint::smooth::neighbor_position_average_bmesh ( const Set< BMVert *, 0 > & verts,
const MutableSpan< float3 > new_positions )

◆ neighbor_position_average_interior_bmesh() [1/2]

void blender::ed::sculpt_paint::smooth::neighbor_position_average_interior_bmesh ( const Set< BMVert *, 0 > & verts,
const MutableSpan< float3 > new_positions )

Definition at line 333 of file sculpt_smooth.cc.

References neighbor_position_average_interior_bmesh_impl(), and verts.

◆ neighbor_position_average_interior_bmesh() [2/2]

void blender::ed::sculpt_paint::smooth::neighbor_position_average_interior_bmesh ( const Set< BMVert *, 0 > & verts,
const Span< float > factors,
const MutableSpan< float3 > new_positions )

◆ neighbor_position_average_interior_bmesh_impl()

template<bool use_factors>
void blender::ed::sculpt_paint::smooth::neighbor_position_average_interior_bmesh_impl ( const Set< BMVert *, 0 > & verts,
const Span< float > factors,
const MutableSpan< float3 > new_positions )
static

◆ neighbor_position_average_interior_grids() [1/2]

void blender::ed::sculpt_paint::smooth::neighbor_position_average_interior_grids ( const OffsetIndices< int > faces,
const Span< int > corner_verts,
const BitSpan boundary_verts,
const SubdivCCG & subdiv_ccg,
const Span< int > grids,
const MutableSpan< float3 > new_positions )

◆ neighbor_position_average_interior_grids() [2/2]

void blender::ed::sculpt_paint::smooth::neighbor_position_average_interior_grids ( const OffsetIndices< int > faces,
const Span< int > corner_verts,
const BitSpan boundary_verts,
const SubdivCCG & subdiv_ccg,
const Span< int > grids,
const Span< float > factors,
const MutableSpan< float3 > new_positions )

Definition at line 188 of file sculpt_smooth.cc.

References faces, and neighbor_position_average_interior_grids_impl().

◆ neighbor_position_average_interior_grids_impl()

◆ surface_smooth_displace_step()

void blender::ed::sculpt_paint::smooth::surface_smooth_displace_step ( const Span< float3 > laplacian_disp,
const Span< float3 > average_laplacian_disp,
const float beta,
const MutableSpan< float3 > translations )

◆ surface_smooth_laplacian_step()

void blender::ed::sculpt_paint::smooth::surface_smooth_laplacian_step ( const Span< float3 > positions,
const Span< float3 > orig_positions,
const Span< float3 > average_positions,
const float alpha,
MutableSpan< float3 > laplacian_disp,
MutableSpan< float3 > translations )

◆ translation_to_plane()

float3 blender::ed::sculpt_paint::smooth::translation_to_plane ( const float3 & current_position,
const float3 & normal,
const float3 & smoothed_position )
static