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

Classes

struct  AttributeOutputs
 

Typedefs

using IDsByDomain = std::array<Vector<StringRef>, ATTR_DOMAIN_NUM>
 

Functions

static void node_declare (NodeDeclarationBuilder &b)
 
static void node_layout (uiLayout *layout, bContext *, PointerRNA *ptr)
 
static void node_init (bNodeTree *, bNode *node)
 
static void save_selection_as_attribute (MutableAttributeAccessor attributes, const StringRef id, const AttrDomain domain, const IndexMask &selection)
 
static void remove_non_propagated_attributes (MutableAttributeAccessor attributes, const AttributeFilter &attribute_filter)
 
static void remove_unsupported_vert_data (Mesh &mesh)
 
static void remove_unsupported_edge_data (Mesh &mesh)
 
static void remove_unsupported_face_data (Mesh &mesh)
 
static void remove_unsupported_corner_data (Mesh &mesh)
 
static void expand_mesh (Mesh &mesh, const int vert_expand, const int edge_expand, const int face_expand, const int loop_expand)
 
static CustomDatamesh_custom_data_for_domain (Mesh &mesh, const AttrDomain domain)
 
static std::optional< MutableSpan< int > > get_orig_index_layer (Mesh &mesh, const AttrDomain domain)
 
template<typename T >
void copy_with_mixing (const Span< T > src, const GroupedSpan< int > src_groups, const IndexMask &selection, MutableSpan< T > dst)
 
static void copy_with_mixing (const GSpan src, const GroupedSpan< int > src_groups, const IndexMask &selection, GMutableSpan dst)
 
template<typename T >
void copy_with_mixing (const Span< T > src, const GroupedSpan< int > src_groups, const Span< int > selection, MutableSpan< T > dst)
 
static void copy_with_mixing (const GSpan src, const GroupedSpan< int > src_groups, const Span< int > selection, GMutableSpan dst)
 
static IDsByDomain attribute_ids_by_domain (const AttributeAccessor attributes, const Set< StringRef > &skip)
 
static bool is_empty_domain (const AttributeAccessor attributes, const Set< StringRef > &skip, const AttrDomain domain)
 
static void gather_attributes (MutableAttributeAccessor attributes, const Span< StringRef > ids, const Span< int > indices, const IndexRange new_range)
 
static void gather_attributes (MutableAttributeAccessor attributes, const Span< StringRef > ids, const IndexMask &indices, const IndexRange new_range)
 
static void gather_vert_attributes (Mesh &mesh, const Span< StringRef > ids, const Span< int > indices, const IndexRange new_range)
 
static void gather_vert_attributes (Mesh &mesh, const Span< StringRef > ids, const IndexMask &indices, const IndexRange new_range)
 
static void extrude_mesh_vertices (Mesh &mesh, const Field< bool > &selection_field, const Field< float3 > &offset_field, const AttributeOutputs &attribute_outputs, const AttributeFilter &attribute_filter)
 
static void fill_quad_consistent_direction (const Span< int > other_face_verts, const Span< int > other_face_edges, MutableSpan< int > new_corner_verts, MutableSpan< int > new_corner_edges, const int vert_connected_to_face_1, const int vert_connected_to_face_2, const int vert_across_from_face_1, const int vert_across_from_face_2, const int edge_connected_to_face, const int connecting_edge_1, const int edge_across_from_face, const int connecting_edge_2)
 
static GroupedSpan< intbuild_vert_to_edge_map (const Span< int2 > edges, const IndexMask &edge_mask, const int verts_num, Array< int > &r_offsets, Array< int > &r_indices)
 
static void tag_mesh_added_faces (Mesh &mesh)
 
static void extrude_mesh_edges (Mesh &mesh, const Field< bool > &selection_field, const Field< float3 > &offset_field, const AttributeOutputs &attribute_outputs, const AttributeFilter &attribute_filter)
 
static VectorSet< intvert_indices_from_edges (const Mesh &mesh, const Span< int > edge_indices)
 
static void extrude_mesh_face_regions (Mesh &mesh, const Field< bool > &selection_field, const Field< float3 > &offset_field, const AttributeOutputs &attribute_outputs, const AttributeFilter &attribute_filter)
 
static void extrude_individual_mesh_faces (Mesh &mesh, const Field< bool > &selection_field, const Field< float3 > &offset_field, const AttributeOutputs &attribute_outputs, const AttributeFilter &attribute_filter)
 
static void node_geo_exec (GeoNodeExecParams params)
 
static void node_rna (StructRNA *srna)
 
static void node_register ()
 

Typedef Documentation

◆ IDsByDomain

Function Documentation

◆ attribute_ids_by_domain()

◆ build_vert_to_edge_map()

static GroupedSpan< int > blender::nodes::node_geo_extrude_mesh_cc::build_vert_to_edge_map ( const Span< int2 > edges,
const IndexMask & edge_mask,
const int verts_num,
Array< int > & r_offsets,
Array< int > & r_indices )
static

◆ copy_with_mixing() [1/4]

static void blender::nodes::node_geo_extrude_mesh_cc::copy_with_mixing ( const GSpan src,
const GroupedSpan< int > src_groups,
const IndexMask & selection,
GMutableSpan dst )
static

◆ copy_with_mixing() [2/4]

static void blender::nodes::node_geo_extrude_mesh_cc::copy_with_mixing ( const GSpan src,
const GroupedSpan< int > src_groups,
const Span< int > selection,
GMutableSpan dst )
static

Definition at line 250 of file node_geo_extrude_mesh.cc.

References copy_with_mixing(), and blender::GSpan::type().

◆ copy_with_mixing() [3/4]

template<typename T >
void blender::nodes::node_geo_extrude_mesh_cc::copy_with_mixing ( const Span< T > src,
const GroupedSpan< int > src_groups,
const IndexMask & selection,
MutableSpan< T > dst )

◆ copy_with_mixing() [4/4]

template<typename T >
void blender::nodes::node_geo_extrude_mesh_cc::copy_with_mixing ( const Span< T > src,
const GroupedSpan< int > src_groups,
const Span< int > selection,
MutableSpan< T > dst )

◆ expand_mesh()

static void blender::nodes::node_geo_extrude_mesh_cc::expand_mesh ( Mesh & mesh,
const int vert_expand,
const int edge_expand,
const int face_expand,
const int loop_expand )
static

◆ extrude_individual_mesh_faces()

◆ extrude_mesh_edges()

◆ extrude_mesh_face_regions()

static void blender::nodes::node_geo_extrude_mesh_cc::extrude_mesh_face_regions ( Mesh & mesh,
const Field< bool > & selection_field,
const Field< float3 > & offset_field,
const AttributeOutputs & attribute_outputs,
const AttributeFilter & attribute_filter )
static

Edges connected to one selected face are on the boundary of a region and will be duplicated into a "side face". Edges inside a region will be duplicated to leave any original faces unchanged.

Definition at line 836 of file node_geo_extrude_mesh.cc.

References blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add_new(), blender::IndexRange::after(), blender::Vector< T, InlineBufferCapacity, Allocator >::append(), attribute_ids_by_domain(), copy_with_mixing(), expand_mesh(), extrude_mesh_face_regions(), faces, fill_quad_consistent_direction(), blender::index_mask::IndexMask::foreach_index(), gather_vert_attributes(), blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::index_of(), blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::index_of_try(), blender::MutableSpan< T >::index_range(), blender::Span< T >::index_range(), blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::index_range(), int, int2, blender::index_mask::IndexMask::is_empty(), blender::MutableSpan< T >::is_empty(), blender::VArrayCommon< T >::is_single(), mesh, blender::Array< T, InlineBufferCapacity, Allocator >::reinitialize(), remove_non_propagated_attributes(), remove_unsupported_corner_data(), remove_unsupported_edge_data(), remove_unsupported_face_data(), remove_unsupported_vert_data(), blender::fn::FieldEvaluator::set_selection(), blender::IndexRange::size(), blender::offset_indices::OffsetIndices< T >::size(), blender::Span< T >::size(), blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::size(), blender::GMutableSpan::slice(), blender::MutableSpan< T >::slice(), blender::Span< T >::slice(), blender::index_mask::IndexMask::to_bools(), and vert_indices_from_edges().

Referenced by extrude_mesh_face_regions(), and node_geo_exec().

◆ extrude_mesh_vertices()

◆ fill_quad_consistent_direction()

static void blender::nodes::node_geo_extrude_mesh_cc::fill_quad_consistent_direction ( const Span< int > other_face_verts,
const Span< int > other_face_edges,
MutableSpan< int > new_corner_verts,
MutableSpan< int > new_corner_edges,
const int vert_connected_to_face_1,
const int vert_connected_to_face_2,
const int vert_across_from_face_1,
const int vert_across_from_face_2,
const int edge_connected_to_face,
const int connecting_edge_1,
const int edge_across_from_face,
const int connecting_edge_2 )
static

◆ gather_attributes() [1/2]

static void blender::nodes::node_geo_extrude_mesh_cc::gather_attributes ( MutableAttributeAccessor attributes,
const Span< StringRef > ids,
const IndexMask & indices,
const IndexRange new_range )
static

Definition at line 312 of file node_geo_extrude_mesh.cc.

◆ gather_attributes() [2/2]

static void blender::nodes::node_geo_extrude_mesh_cc::gather_attributes ( MutableAttributeAccessor attributes,
const Span< StringRef > ids,
const Span< int > indices,
const IndexRange new_range )
static

Definition at line 300 of file node_geo_extrude_mesh.cc.

◆ gather_vert_attributes() [1/2]

◆ gather_vert_attributes() [2/2]

◆ get_orig_index_layer()

static std::optional< MutableSpan< int > > blender::nodes::node_geo_extrude_mesh_cc::get_orig_index_layer ( Mesh & mesh,
const AttrDomain domain )
static

◆ is_empty_domain()

◆ mesh_custom_data_for_domain()

static CustomData & blender::nodes::node_geo_extrude_mesh_cc::mesh_custom_data_for_domain ( Mesh & mesh,
const AttrDomain domain )
static

Definition at line 172 of file node_geo_extrude_mesh.cc.

References BLI_assert_unreachable.

Referenced by get_orig_index_layer().

◆ node_declare()

◆ node_geo_exec()

◆ node_init()

static void blender::nodes::node_geo_extrude_mesh_cc::node_init ( bNodeTree * ,
bNode * node )
static

Definition at line 65 of file node_geo_extrude_mesh.cc.

References data, and GEO_NODE_EXTRUDE_MESH_FACES.

Referenced by node_register().

◆ node_layout()

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

◆ node_register()

◆ node_rna()

static void blender::nodes::node_geo_extrude_mesh_cc::node_rna ( StructRNA * srna)
static

◆ remove_non_propagated_attributes()

static void blender::nodes::node_geo_extrude_mesh_cc::remove_non_propagated_attributes ( MutableAttributeAccessor attributes,
const AttributeFilter & attribute_filter )
static

◆ remove_unsupported_corner_data()

static void blender::nodes::node_geo_extrude_mesh_cc::remove_unsupported_corner_data ( Mesh & mesh)
static

◆ remove_unsupported_edge_data()

static void blender::nodes::node_geo_extrude_mesh_cc::remove_unsupported_edge_data ( Mesh & mesh)
static

◆ remove_unsupported_face_data()

static void blender::nodes::node_geo_extrude_mesh_cc::remove_unsupported_face_data ( Mesh & mesh)
static

◆ remove_unsupported_vert_data()

static void blender::nodes::node_geo_extrude_mesh_cc::remove_unsupported_vert_data ( Mesh & mesh)
static

◆ save_selection_as_attribute()

static void blender::nodes::node_geo_extrude_mesh_cc::save_selection_as_attribute ( MutableAttributeAccessor attributes,
const StringRef id,
const AttrDomain domain,
const IndexMask & selection )
static

◆ tag_mesh_added_faces()

static void blender::nodes::node_geo_extrude_mesh_cc::tag_mesh_added_faces ( Mesh & mesh)
static

◆ vert_indices_from_edges()