Blender V4.5
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()

◆ average_data_bmesh< float >()

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

References average_data_bmesh().

◆ average_data_bmesh< float3 >()

◆ average_data_grids()

◆ average_data_grids< float >()

template void blender::ed::sculpt_paint::smooth::average_data_grids< float > ( const SubdivCCG & ,
Span< float > ,
Span< int > ,
MutableSpan< float >  )

References average_data_grids().

◆ 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

◆ blur_geometry_data_array()

void blender::ed::sculpt_paint::smooth::blur_geometry_data_array ( const Object & object,
const int iterations,
const MutableSpan< float > data )

Definition at line 723 of file sculpt_smooth.cc.

References blender::bke::pbvh::all_leaf_nodes(), blender::MutableSpan< T >::as_span(), average_data_bmesh(), average_data_grids(), BKE_pbvh_bmesh_node_unique_verts(), BKE_subdiv_ccg_foreach_visible_grid_vert(), BKE_subdiv_ccg_key_top_level(), blur_geometry_data_array(), BM_elem_flag_test, BM_ELEM_HIDDEN, BM_elem_index_get, blender::bke::pbvh::BMesh, blender::ed::sculpt_paint::calc_vert_neighbors(), data, blender::bke::Face, blender::index_mask::IndexMask::foreach_index(), blender::GrainSize::GrainSize(), CCGKey::grid_area, blender::bke::pbvh::Grids, i, blender::Span< T >::index_range(), blender::IndexRange::IndexRange(), blender::bits::BitGroupVector< InlineBufferCapacity, Allocator >::is_empty(), blender::threading::EnumerableThreadSpecific< T >::local(), blender::bke::AttributeAccessor::lookup(), blender::bke::pbvh::Mesh, neighbor_data_average_mesh(), blender::ed::sculpt_paint::hide::node_visible_verts(), blender::bke::pbvh::Tree::nodes(), blender::bke::object::pbvh_get(), blender::bke::Point, blender::ed::sculpt_paint::scatter_data_grids(), blender::ed::sculpt_paint::scatter_data_mesh(), blender::Set< Key, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::size(), blender::Span< T >::size(), SculptSession::subdiv_ccg, and blender::bke::pbvh::Tree::type().

Referenced by blur_geometry_data_array(), blender::ed::sculpt_paint::expand::normals_falloff_create(), and blender::ed::sculpt_paint::pose::pose_brush_init().

◆ 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 341 of file sculpt_smooth.cc.

References add_v3_v3(), BM_edge_is_boundary(), BM_EDGES_OF_VERT, BM_ITER_ELEM, bmesh_four_neighbor_average(), 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().

Referenced by bmesh_four_neighbor_average().

◆ 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 470 of file sculpt_smooth.cc.

References calc_boundary_normal_corner(), and 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 483 of file sculpt_smooth.cc.

References calc_boundary_normal_corner(), and 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()

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

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

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

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

◆ 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