19 .default_value(
float3(0.0f))
20 .description(
N_(
"The positions of the new points"));
24 .default_value(
float(0.1f))
25 .description(
N_(
"The radii of the new points"));
53 if (id_field_input ==
nullptr && index_field_input ==
nullptr) {
63 const int count =
params.extract_input<
int>(
"Count");
65 params.set_default_remaining_outputs();
83 evaluator.add_with_destination(position_field, output_position.
varray);
84 evaluator.add_with_destination(radius_field, output_radii.varray);
88 output_radii.finish();
89 params.set_output(
"Geometry", std::move(geometry_set));
#define NODE_CLASS_GEOMETRY
void nodeRegisterType(struct bNodeType *ntype)
General operations for point clouds.
struct PointCloud * BKE_pointcloud_new_nomain(int totpoint)
std::optional< blender::bke::MutableAttributeAccessor > attributes_for_write() final
StringRefNull description() const
PointsFieldContext(const int points_num)
GVArray get_varray_for_input(const FieldInput &field_input, const IndexMask mask, ResourceScope &UNUSED(scope)) const
int64_t points_num() const
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)
static void node_geo_exec(GeoNodeExecParams params)
static void node_declare(NodeDeclarationBuilder &b)
vec_base< float, 3 > float3
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
void register_node_type_geo_points()
void geo_node_type_base(bNodeType *ntype, int type, const char *name, short nclass)
GeometryComponent & get_component_for_write(GeometryComponentType component_type)
static GeometrySet create_with_pointcloud(PointCloud *pointcloud, GeometryOwnershipType ownership=GeometryOwnershipType::Owned)
NodeGeometryExecFunction geometry_node_execute
NodeDeclareFunction declare
VMutableArray< T > varray