18 .
description(
"Number of edges or points in the face");
21 .
description(
"Number of faces which share an edge with the face");
30 num += values[i].size();
45 return unique_values.
size();
51 return unique_values.
size();
61 face_edges.
offsets, face_edges.
data, mesh.edges_num, offsets, indices);
65 for (const int64_t face_i : range) {
66 face_count[face_i] = unique_num(edge_to_faces_map, face_edges[face_i]) - 1;
69 return mesh.attributes().adapt_domain<
int>(
76 : bke::MeshFieldInput(
CPPType::get<
int>(),
"Face Neighbor Count Field")
78 category_ = Category::Generated;
82 const AttrDomain domain,
101 return AttrDomain::Face;
108 return mesh.attributes().adapt_domain<
int>(
110 [faces](
const int i) ->
float { return faces[i].size(); }),
119 category_ = Category::Generated;
123 const AttrDomain domain,
142 return AttrDomain::Face;
148 Field<int> vertex_count_field{std::make_shared<FaceVertexCountFieldInput>()};
149 Field<int> neighbor_count_field{std::make_shared<FaceNeighborCountFieldInput>()};
150 params.set_output(
"Vertex Count", std::move(vertex_count_field));
151 params.set_output(
"Face Count", std::move(neighbor_count_field));
158 &ntype, GEO_NODE_INPUT_MESH_FACE_NEIGHBORS,
"Face Neighbors",
NODE_CLASS_INPUT);
#define NOD_REGISTER_NODE(REGISTER_FUNC)
void add_multiple(Span< Key > keys)
static VArray ForContainer(ContainerT container)
void extend_non_duplicates(Span< T > array)
local_group_size(16, 16) .push_constant(Type b
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
GroupedSpan< int > build_edge_to_face_map(OffsetIndices< int > faces, Span< int > corner_edges, int edges_num, Array< int > &r_offsets, Array< int > &r_indices)
void node_type_size_preset(bNodeType *ntype, eNodeSizePreset size)
void node_register_type(bNodeType *ntype)
void parallel_for(const IndexRange range, const int64_t grain_size, const Function &function, const TaskSizeHints &size_hints=detail::TaskSizeHints_Static(1))
void geo_node_type_base(blender::bke::bNodeType *ntype, int type, const char *name, short nclass)
unsigned __int64 uint64_t
NodeGeometryExecFunction geometry_node_execute
NodeDeclareFunction declare
OffsetIndices< int > offsets
IndexRange index_range() const