Blender V4.3
blender::ed::sculpt_paint::smooth Namespace Reference

Functions

template<typename T >
T calc_average (const Span< T > positions, const Span< int > indices)
 
template<typename T >
void neighbor_data_average_mesh_check_loose (const Span< T > src, const Span< int > verts, const Span< Vector< int > > vert_neighbors, const MutableSpan< T > dst)
 
template void neighbor_data_average_mesh_check_loose< float > (Span< float >, Span< int >, Span< Vector< int > >, MutableSpan< float >)
 
template void neighbor_data_average_mesh_check_loose< float3 > (Span< float3 >, Span< int >, Span< Vector< int > >, MutableSpan< float3 >)
 
template<typename T >
void neighbor_data_average_mesh (const Span< T > src, const Span< Vector< int > > vert_neighbors, const MutableSpan< T > dst)
 
template void neighbor_data_average_mesh< float > (Span< float >, Span< Vector< int > >, MutableSpan< float >)
 
template void neighbor_data_average_mesh< float3 > (Span< float3 >, Span< Vector< int > >, MutableSpan< float3 >)
 
template void neighbor_data_average_mesh< float4 > (Span< float4 >, Span< Vector< int > >, MutableSpan< float4 >)
 
static float3 average_positions (const CCGKey &key, const Span< float3 > positions, const Span< SubdivCCGCoord > coords)
 
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)
 
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)
 
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 Span< Vector< 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, Vector< Vector< int > > &neighbors, 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, Vector< Vector< SubdivCCGCoord > > &neighbors, 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, Vector< Vector< BMVert * > > &neighbors, 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]

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

Definition at line 244 of file sculpt_smooth.cc.

References blender::math::rcp(), result, 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 287 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(), BMVert::no, 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 > positions,
const Span< int > indices )

◆ calc_boundary_normal_corner() [1/3]

static 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 416 of file sculpt_smooth.cc.

References blender::math::normalize().

◆ calc_boundary_normal_corner() [2/3]

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

Definition at line 429 of file sculpt_smooth.cc.

References blender::math::normalize().

◆ calc_boundary_normal_corner() [3/3]

static 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()

void blender::ed::sculpt_paint::smooth::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,
Vector< Vector< BMVert * > > & neighbors,
const MutableSpan< float3 > translations )

◆ 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,
Vector< Vector< int > > & neighbors,
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 Span< Vector< int > > vert_neighbors,
const MutableSpan< float4 > smooth_colors )

◆ neighbor_data_average_mesh()

template<typename T >
void blender::ed::sculpt_paint::smooth::neighbor_data_average_mesh ( const Span< T > src,
const Span< Vector< int > > vert_neighbors,
const MutableSpan< T > dst )

◆ neighbor_data_average_mesh< float >()

◆ neighbor_data_average_mesh< float3 >()

◆ neighbor_data_average_mesh< float4 >()

◆ neighbor_data_average_mesh_check_loose()

template<typename T >
void blender::ed::sculpt_paint::smooth::neighbor_data_average_mesh_check_loose ( const Span< T > src,
const Span< int > verts,
const Span< Vector< int > > vert_neighbors,
const MutableSpan< T > dst )

◆ 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()

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

◆ neighbor_position_average_interior_grids()

◆ 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()

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