Blender V4.3
blender::nodes::node_geo_distribute_points_on_faces_cc Namespace Reference

Functions

static void node_declare (NodeDeclarationBuilder &b)
 
static void node_layout (uiLayout *layout, bContext *, PointerRNA *ptr)
 
static void node_layout_ex (uiLayout *layout, bContext *, PointerRNA *ptr)
 
static math::Quaternion normal_to_rotation (const float3 normal)
 
static void sample_mesh_surface (const Mesh &mesh, const float base_density, const Span< float > density_factors, const int seed, Vector< float3 > &r_positions, Vector< float3 > &r_bary_coords, Vector< int > &r_tri_indices)
 
static BLI_NOINLINE KDTree_3d * build_kdtree (Span< float3 > positions)
 
static BLI_NOINLINE void update_elimination_mask_for_close_points (Span< float3 > positions, const float minimum_distance, MutableSpan< bool > elimination_mask)
 
static BLI_NOINLINE void update_elimination_mask_based_on_density_factors (const Mesh &mesh, const Span< float > density_factors, const Span< float3 > bary_coords, const Span< int > tri_indices, const MutableSpan< bool > elimination_mask)
 
static BLI_NOINLINE void eliminate_points_based_on_mask (const Span< bool > elimination_mask, Vector< float3 > &positions, Vector< float3 > &bary_coords, Vector< int > &tri_indices)
 
static BLI_NOINLINE void interpolate_attribute (const Mesh &mesh, const Span< float3 > bary_coords, const Span< int > tri_indices, const AttrDomain source_domain, const GVArray &source_data, GMutableSpan output_data)
 
static BLI_NOINLINE void propagate_existing_attributes (const Mesh &mesh, const Map< StringRef, AttributeKind > &attributes, PointCloud &points, const Span< float3 > bary_coords, const Span< int > tri_indices)
 
static void compute_normal_outputs (const Mesh &mesh, const Span< float3 > bary_coords, const Span< int > tri_indices, MutableSpan< float3 > r_normals)
 
static void compute_legacy_normal_outputs (const Mesh &mesh, const Span< float3 > bary_coords, const Span< int > tri_indices, MutableSpan< float3 > r_normals)
 
static void compute_rotation_output (const Span< float3 > normals, MutableSpan< math::Quaternion > r_rotations)
 
static BLI_NOINLINE void compute_attribute_outputs (const Mesh &mesh, PointCloud &points, const Span< float3 > bary_coords, const Span< int > tri_indices, const AttributeOutputs &attribute_outputs, const bool use_legacy_normal)
 
static Array< floatcalc_full_density_factors_with_selection (const Mesh &mesh, const Field< float > &density_field, const Field< bool > &selection_field)
 
static void distribute_points_random (const Mesh &mesh, const Field< float > &density_field, const Field< bool > &selection_field, const int seed, Vector< float3 > &positions, Vector< float3 > &bary_coords, Vector< int > &tri_indices)
 
static void distribute_points_poisson_disk (const Mesh &mesh, const float minimum_distance, const float max_density, const Field< float > &density_factor_field, const Field< bool > &selection_field, const int seed, Vector< float3 > &positions, Vector< float3 > &bary_coords, Vector< int > &tri_indices)
 
static void point_distribution_calculate (GeometrySet &geometry_set, const Field< bool > selection_field, const GeometryNodeDistributePointsOnFacesMode method, const int seed, const AttributeOutputs &attribute_outputs, const GeoNodeExecParams &params)
 
static void node_geo_exec (GeoNodeExecParams params)
 
static void node_register ()
 

Function Documentation

◆ build_kdtree()

static BLI_NOINLINE KDTree_3d * blender::nodes::node_geo_distribute_points_on_faces_cc::build_kdtree ( Span< float3 > positions)
static

◆ calc_full_density_factors_with_selection()

static Array< float > blender::nodes::node_geo_distribute_points_on_faces_cc::calc_full_density_factors_with_selection ( const Mesh & mesh,
const Field< float > & density_field,
const Field< bool > & selection_field )
static

◆ compute_attribute_outputs()

static BLI_NOINLINE void blender::nodes::node_geo_distribute_points_on_faces_cc::compute_attribute_outputs ( const Mesh & mesh,
PointCloud & points,
const Span< float3 > bary_coords,
const Span< int > tri_indices,
const AttributeOutputs & attribute_outputs,
const bool use_legacy_normal )
static

◆ compute_legacy_normal_outputs()

static void blender::nodes::node_geo_distribute_points_on_faces_cc::compute_legacy_normal_outputs ( const Mesh & mesh,
const Span< float3 > bary_coords,
const Span< int > tri_indices,
MutableSpan< float3 > r_normals )
static

◆ compute_normal_outputs()

static void blender::nodes::node_geo_distribute_points_on_faces_cc::compute_normal_outputs ( const Mesh & mesh,
const Span< float3 > bary_coords,
const Span< int > tri_indices,
MutableSpan< float3 > r_normals )
static

◆ compute_rotation_output()

static void blender::nodes::node_geo_distribute_points_on_faces_cc::compute_rotation_output ( const Span< float3 > normals,
MutableSpan< math::Quaternion > r_rotations )
static

◆ distribute_points_poisson_disk()

static void blender::nodes::node_geo_distribute_points_on_faces_cc::distribute_points_poisson_disk ( const Mesh & mesh,
const float minimum_distance,
const float max_density,
const Field< float > & density_factor_field,
const Field< bool > & selection_field,
const int seed,
Vector< float3 > & positions,
Vector< float3 > & bary_coords,
Vector< int > & tri_indices )
static

◆ distribute_points_random()

static void blender::nodes::node_geo_distribute_points_on_faces_cc::distribute_points_random ( const Mesh & mesh,
const Field< float > & density_field,
const Field< bool > & selection_field,
const int seed,
Vector< float3 > & positions,
Vector< float3 > & bary_coords,
Vector< int > & tri_indices )
static

◆ eliminate_points_based_on_mask()

static BLI_NOINLINE void blender::nodes::node_geo_distribute_points_on_faces_cc::eliminate_points_based_on_mask ( const Span< bool > elimination_mask,
Vector< float3 > & positions,
Vector< float3 > & bary_coords,
Vector< int > & tri_indices )
static

◆ interpolate_attribute()

static BLI_NOINLINE void blender::nodes::node_geo_distribute_points_on_faces_cc::interpolate_attribute ( const Mesh & mesh,
const Span< float3 > bary_coords,
const Span< int > tri_indices,
const AttrDomain source_domain,
const GVArray & source_data,
GMutableSpan output_data )
static

◆ node_declare()

◆ node_geo_exec()

static void blender::nodes::node_geo_distribute_points_on_faces_cc::node_geo_exec ( GeoNodeExecParams params)
static

◆ node_layout()

static void blender::nodes::node_geo_distribute_points_on_faces_cc::node_layout ( uiLayout * layout,
bContext * ,
PointerRNA * ptr )
static

Definition at line 84 of file node_geo_distribute_points_on_faces.cc.

References ptr, UI_ITEM_NONE, and uiItemR().

Referenced by node_register().

◆ node_layout_ex()

static void blender::nodes::node_geo_distribute_points_on_faces_cc::node_layout_ex ( uiLayout * layout,
bContext * ,
PointerRNA * ptr )
static

Definition at line 89 of file node_geo_distribute_points_on_faces.cc.

References ptr, UI_ITEM_NONE, and uiItemR().

Referenced by node_register().

◆ node_register()

◆ normal_to_rotation()

static math::Quaternion blender::nodes::node_geo_distribute_points_on_faces_cc::normal_to_rotation ( const float3 normal)
static

Use an arbitrary choice of axes for a usable rotation attribute directly out of this node.

Definition at line 97 of file node_geo_distribute_points_on_faces.cc.

References blender::math::normalize(), OB_NEGZ, OB_POSY, and vec_to_quat().

◆ point_distribution_calculate()

◆ propagate_existing_attributes()

◆ sample_mesh_surface()

static void blender::nodes::node_geo_distribute_points_on_faces_cc::sample_mesh_surface ( const Mesh & mesh,
const float base_density,
const Span< float > density_factors,
const int seed,
Vector< float3 > & r_positions,
Vector< float3 > & r_bary_coords,
Vector< int > & r_tri_indices )
static

◆ update_elimination_mask_based_on_density_factors()

static BLI_NOINLINE void blender::nodes::node_geo_distribute_points_on_faces_cc::update_elimination_mask_based_on_density_factors ( const Mesh & mesh,
const Span< float > density_factors,
const Span< float3 > bary_coords,
const Span< int > tri_indices,
const MutableSpan< bool > elimination_mask )
static

◆ update_elimination_mask_for_close_points()

static BLI_NOINLINE void blender::nodes::node_geo_distribute_points_on_faces_cc::update_elimination_mask_for_close_points ( Span< float3 > positions,
const float minimum_distance,
MutableSpan< bool > elimination_mask )
static