Blender  V3.3
Classes | Functions
blender::nodes::node_geo_extrude_mesh_cc Namespace Reference

Classes

struct  AttributeOutputs
 

Functions

static void node_declare (NodeDeclarationBuilder &b)
 
static void node_layout (uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
 
static void node_init (bNodeTree *UNUSED(tree), bNode *node)
 
static void node_update (bNodeTree *ntree, bNode *node)
 
static void save_selection_as_attribute (MeshComponent &component, const AnonymousAttributeID *id, const eAttrDomain domain, const IndexMask selection)
 
static MutableSpan< MVertmesh_verts (Mesh &mesh)
 
static MutableSpan< MEdgemesh_edges (Mesh &mesh)
 
static Span< MPolymesh_polys (const Mesh &mesh)
 
static MutableSpan< MPolymesh_polys (Mesh &mesh)
 
static Span< MLoopmesh_loops (const Mesh &mesh)
 
static MutableSpan< MLoopmesh_loops (Mesh &mesh)
 
static void expand_mesh (Mesh &mesh, const int vert_expand, const int edge_expand, const int poly_expand, const int loop_expand)
 
static CustomDataget_customdata (Mesh &mesh, const eAttrDomain domain)
 
static MutableSpan< int > get_orig_index_layer (Mesh &mesh, const eAttrDomain domain)
 
static MEdge new_edge (const int v1, const int v2)
 
static MEdge new_loose_edge (const int v1, const int v2)
 
static MPoly new_poly (const int loopstart, const int totloop)
 
template<typename T >
void copy_with_indices (MutableSpan< T > dst, Span< T > src, Span< int > indices)
 
template<typename T >
void copy_with_mask (MutableSpan< T > dst, Span< T > src, IndexMask mask)
 
template<typename T , typename GetMixIndicesFn >
void copy_with_mixing (MutableSpan< T > dst, Span< T > src, GetMixIndicesFn get_mix_indices_fn)
 
static Array< Vector< int > > create_vert_to_edge_map (const int vert_size, Span< MEdge > edges, const int vert_offset=0)
 
static void extrude_mesh_vertices (MeshComponent &component, const Field< bool > &selection_field, const Field< float3 > &offset_field, const AttributeOutputs &attribute_outputs)
 
static Array< Vector< int, 2 > > mesh_calculate_polys_of_edge (const Mesh &mesh)
 
static void fill_quad_consistent_direction (Span< MLoop > other_poly_loops, MutableSpan< MLoop > new_loops, const int vert_connected_to_poly_1, const int vert_connected_to_poly_2, const int vert_across_from_poly_1, const int vert_across_from_poly_2, const int edge_connected_to_poly, const int connecting_edge_1, const int edge_across_from_poly, const int connecting_edge_2)
 
template<typename T >
static VectorSet< int > vert_indices_from_edges (const Mesh &mesh, const Span< T > edge_indices)
 
static void extrude_mesh_edges (MeshComponent &component, const Field< bool > &selection_field, const Field< float3 > &offset_field, const AttributeOutputs &attribute_outputs)
 
static void extrude_mesh_face_regions (MeshComponent &component, const Field< bool > &selection_field, const Field< float3 > &offset_field, const AttributeOutputs &attribute_outputs)
 
static IndexRange selected_corner_range (Span< int > offsets, const int index)
 
static void extrude_individual_mesh_faces (MeshComponent &component, const Field< bool > &selection_field, const Field< float3 > &offset_field, const AttributeOutputs &attribute_outputs)
 
static void node_geo_exec (GeoNodeExecParams params)
 

Function Documentation

◆ copy_with_indices()

template<typename T >
void blender::nodes::node_geo_extrude_mesh_cc::copy_with_indices ( MutableSpan< T dst,
Span< T src,
Span< int >  indices 
)

◆ copy_with_mask()

template<typename T >
void blender::nodes::node_geo_extrude_mesh_cc::copy_with_mask ( MutableSpan< T dst,
Span< T src,
IndexMask  mask 
)

◆ copy_with_mixing()

template<typename T , typename GetMixIndicesFn >
void blender::nodes::node_geo_extrude_mesh_cc::copy_with_mixing ( MutableSpan< T dst,
Span< T src,
GetMixIndicesFn  get_mix_indices_fn 
)
Parameters
get_mix_indices_fnReturns a Span of indices of the source points to mix for every result point.

Definition at line 225 of file node_geo_extrude_mesh.cc.

References blender::MutableSpan< T >::index_range(), blender::threading::parallel_for(), and blender::IndexRange::size().

◆ create_vert_to_edge_map()

static Array<Vector<int> > blender::nodes::node_geo_extrude_mesh_cc::create_vert_to_edge_map ( const int  vert_size,
Span< MEdge edges,
const int  vert_offset = 0 
)
static

◆ 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  poly_expand,
const int  loop_expand 
)
static

◆ extrude_individual_mesh_faces()

static void blender::nodes::node_geo_extrude_mesh_cc::extrude_individual_mesh_faces ( MeshComponent component,
const Field< bool > &  selection_field,
const Field< float3 > &  offset_field,
const AttributeOutputs attribute_outputs 
)
static

◆ extrude_mesh_edges()

static void blender::nodes::node_geo_extrude_mesh_cc::extrude_mesh_edges ( MeshComponent component,
const Field< bool > &  selection_field,
const Field< float3 > &  offset_field,
const AttributeOutputs attribute_outputs 
)
static

◆ extrude_mesh_face_regions()

static void blender::nodes::node_geo_extrude_mesh_cc::extrude_mesh_face_regions ( MeshComponent component,
const Field< bool > &  selection_field,
const Field< float3 > &  offset_field,
const AttributeOutputs attribute_outputs 
)
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 675 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(), blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::as_span(), ATTR_DOMAIN_FACE, attribute, component(), blender::attribute_math::convert_to_static_type(), create_vert_to_edge_map(), blender::bke::AttributeMetaData::data_type, blender::bke::AttributeMetaData::domain, expand_mesh(), fill_quad_consistent_direction(), blender::bke::AttributeAccessor::for_all(), if(), blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::index_of(), blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::index_of_try(), blender::Span< T >::index_range(), blender::MutableSpan< T >::index_range(), blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::index_range(), blender::IndexMask::is_empty(), blender::VArrayCommon< T >::is_single(), blender::bke::MutableAttributeAccessor::lookup_or_add_for_write_span(), MPoly::loopstart, Mesh::medge, mesh, mesh_calculate_polys_of_edge(), mesh_edges(), mesh_loops(), mesh_polys(), new_edge(), new_poly(), offset, blender::Array< T, InlineBufferCapacity, Allocator >::reinitialize(), blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::reserve(), blender::IndexRange::size(), blender::Span< T >::size(), blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::size(), Mesh::size, blender::MutableSpan< T >::slice(), blender::Span< T >::slice(), MPoly::totloop, Mesh::totpoly, Mesh::totvert, MEdge::v1, MEdge::v2, and vert_indices_from_edges().

Referenced by node_geo_exec().

◆ extrude_mesh_vertices()

static void blender::nodes::node_geo_extrude_mesh_cc::extrude_mesh_vertices ( MeshComponent component,
const Field< bool > &  selection_field,
const Field< float3 > &  offset_field,
const AttributeOutputs attribute_outputs 
)
static

◆ fill_quad_consistent_direction()

static void blender::nodes::node_geo_extrude_mesh_cc::fill_quad_consistent_direction ( Span< MLoop other_poly_loops,
MutableSpan< MLoop new_loops,
const int  vert_connected_to_poly_1,
const int  vert_connected_to_poly_2,
const int  vert_across_from_poly_1,
const int  vert_across_from_poly_2,
const int  edge_connected_to_poly,
const int  connecting_edge_1,
const int  edge_across_from_poly,
const int  connecting_edge_2 
)
static

Definition at line 355 of file node_geo_extrude_mesh.cc.

Referenced by extrude_mesh_edges(), and extrude_mesh_face_regions().

◆ get_customdata()

static CustomData& blender::nodes::node_geo_extrude_mesh_cc::get_customdata ( Mesh mesh,
const eAttrDomain  domain 
)
static

◆ get_orig_index_layer()

static MutableSpan<int> blender::nodes::node_geo_extrude_mesh_cc::get_orig_index_layer ( Mesh mesh,
const eAttrDomain  domain 
)
static

◆ mesh_calculate_polys_of_edge()

static Array<Vector<int, 2> > blender::nodes::node_geo_extrude_mesh_cc::mesh_calculate_polys_of_edge ( const Mesh mesh)
static

◆ mesh_edges()

static MutableSpan<MEdge> blender::nodes::node_geo_extrude_mesh_cc::mesh_edges ( Mesh mesh)
static

◆ mesh_loops() [1/2]

static Span<MLoop> blender::nodes::node_geo_extrude_mesh_cc::mesh_loops ( const Mesh mesh)
static

Definition at line 102 of file node_geo_extrude_mesh.cc.

References mesh, Mesh::mloop, and Mesh::totloop.

◆ mesh_loops() [2/2]

static MutableSpan<MLoop> blender::nodes::node_geo_extrude_mesh_cc::mesh_loops ( Mesh mesh)
static

◆ mesh_polys() [1/2]

static Span<MPoly> blender::nodes::node_geo_extrude_mesh_cc::mesh_polys ( const Mesh mesh)
static

Definition at line 94 of file node_geo_extrude_mesh.cc.

References mesh, Mesh::mpoly, and Mesh::totpoly.

◆ mesh_polys() [2/2]

static MutableSpan<MPoly> blender::nodes::node_geo_extrude_mesh_cc::mesh_polys ( Mesh mesh)
static

◆ mesh_verts()

static MutableSpan<MVert> blender::nodes::node_geo_extrude_mesh_cc::mesh_verts ( Mesh mesh)
static

◆ new_edge()

static MEdge blender::nodes::node_geo_extrude_mesh_cc::new_edge ( const int  v1,
const int  v2 
)
static

◆ new_loose_edge()

static MEdge blender::nodes::node_geo_extrude_mesh_cc::new_loose_edge ( const int  v1,
const int  v2 
)
static

Definition at line 184 of file node_geo_extrude_mesh.cc.

References ME_LOOSEEDGE, v1, and v2.

Referenced by extrude_mesh_vertices().

◆ new_poly()

static MPoly blender::nodes::node_geo_extrude_mesh_cc::new_poly ( const int  loopstart,
const int  totloop 
)
static

◆ node_declare()

static void blender::nodes::node_geo_extrude_mesh_cc::node_declare ( NodeDeclarationBuilder b)
static

◆ node_geo_exec()

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

◆ node_init()

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

Definition at line 42 of file node_geo_extrude_mesh.cc.

References data, GEO_NODE_EXTRUDE_MESH_FACES, and node.

◆ node_layout()

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

◆ node_update()

static void blender::nodes::node_geo_extrude_mesh_cc::node_update ( bNodeTree ntree,
bNode node 
)
static

◆ save_selection_as_attribute()

static void blender::nodes::node_geo_extrude_mesh_cc::save_selection_as_attribute ( MeshComponent component,
const AnonymousAttributeID id,
const eAttrDomain  domain,
const IndexMask  selection 
)
static

◆ selected_corner_range()

static IndexRange blender::nodes::node_geo_extrude_mesh_cc::selected_corner_range ( Span< int >  offsets,
const int  index 
)
static

Definition at line 1053 of file node_geo_extrude_mesh.cc.

References offset.

◆ vert_indices_from_edges()

template<typename T >
static VectorSet<int> blender::nodes::node_geo_extrude_mesh_cc::vert_indices_from_edges ( const Mesh mesh,
const Span< T edge_indices 
)
static