19 .description(
"Side length of the plane in the X direction");
24 .description(
"Side length of the plane in the Y direction");
29 .
description(
"Number of vertices in the X direction");
34 .
description(
"Number of vertices in the Y direction");
41 const float size_x =
params.extract_input<
float>(
"Size X");
42 const float size_y =
params.extract_input<
float>(
"Size Y");
43 const int verts_x =
params.extract_input<
int>(
"Vertices X");
44 const int verts_y =
params.extract_input<
int>(
"Vertices Y");
45 if (verts_x < 1 || verts_y < 1) {
46 params.set_default_remaining_outputs();
50 std::optional<std::string> uv_map_id =
params.get_output_anonymous_attribute_id_if_needed(
General operations, lookup, etc. for materials.
void BKE_id_material_eval_ensure_default_slot(ID *id)
#define NODE_CLASS_GEOMETRY
#define GEO_NODE_MESH_PRIMITIVE_GRID
#define NOD_REGISTER_NODE(REGISTER_FUNC)
void node_register_type(bNodeType &ntype)
Mesh * create_grid_mesh(int verts_x, int verts_y, float size_x, float size_y, std::optional< StringRef > uv_map_id)
static void node_register()
static void node_geo_exec(GeoNodeExecParams params)
static void node_declare(NodeDeclarationBuilder &b)
void geo_node_type_base(blender::bke::bNodeType *ntype, std::string idname, const std::optional< int16_t > legacy_type)
std::string ui_description
NodeGeometryExecFunction geometry_node_execute
const char * enum_name_legacy
NodeDeclareFunction declare
static GeometrySet from_mesh(Mesh *mesh, GeometryOwnershipType ownership=GeometryOwnershipType::Owned)