Geometry Nodes: add descriptions to various built-in geometry sockets
In some cases the description is more useful than in others. But overall it's nice if users can expect there to be some description instead of nothing. The goal is also to not show the supported geometry types as a separate line in the tooltip as that can be misleading sometimes and is often redundant with the socket name and description already. Now the description is expected to contain the relevant data for the user. It can also be more detailed than just mentioning which geometry types are supported.
This commit is contained in:
@@ -33,7 +33,10 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
|
||||
b.add_default_layout();
|
||||
|
||||
b.add_input<decl::Geometry>("Geometry");
|
||||
b.add_input<decl::Geometry>("Geometry")
|
||||
.description(
|
||||
"Geometry to evaluate the given fields and store the resulting attributes on. All "
|
||||
"geometry types except volumes are supported");
|
||||
b.add_output<decl::Geometry>("Geometry").propagate_all().align_with_previous();
|
||||
if (node != nullptr) {
|
||||
const NodeGeometryAttributeCapture &storage = node_storage(*node);
|
||||
|
||||
@@ -15,7 +15,10 @@ namespace blender::nodes::node_geo_attribute_domain_size_cc {
|
||||
|
||||
static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.add_input<decl::Geometry>("Geometry");
|
||||
b.add_input<decl::Geometry>("Geometry")
|
||||
.description(
|
||||
"Geometry to get the domain sizes of. Only the root geometry is considered, not nested "
|
||||
"instances");
|
||||
auto &total_points = b.add_output<decl::Int>("Point Count")
|
||||
.make_available([](bNode &node) {
|
||||
node.custom1 = int16_t(GeometryComponent::Type::Mesh);
|
||||
|
||||
@@ -24,7 +24,7 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
const bNode *node = b.node_or_null();
|
||||
|
||||
b.add_input<decl::Geometry>("Geometry");
|
||||
b.add_input<decl::Geometry>("Geometry").description("Geometry to get the statistics from");
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).field_on_all().hide_value();
|
||||
|
||||
if (node != nullptr) {
|
||||
|
||||
@@ -25,8 +25,10 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
const bNode *node = b.node_or_null();
|
||||
|
||||
auto &first_geometry = b.add_input<decl::Geometry>("Mesh 1").only_realized_data().supported_type(
|
||||
GeometryComponent::Type::Mesh);
|
||||
auto &first_geometry = b.add_input<decl::Geometry>("Mesh 1")
|
||||
.only_realized_data()
|
||||
.supported_type(GeometryComponent::Type::Mesh)
|
||||
.description("Base mesh to subtract geometry from");
|
||||
|
||||
if (node != nullptr) {
|
||||
switch (geometry::boolean::Operation(node->custom1)) {
|
||||
@@ -34,12 +36,14 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
case geometry::boolean::Operation::Union:
|
||||
b.add_input<decl::Geometry>("Mesh", "Mesh 2")
|
||||
.supported_type(GeometryComponent::Type::Mesh)
|
||||
.multi_input();
|
||||
.multi_input()
|
||||
.description("Meshes to union or intersect");
|
||||
break;
|
||||
case geometry::boolean::Operation::Difference:
|
||||
b.add_input<decl::Geometry>("Mesh 2")
|
||||
.supported_type(GeometryComponent::Type::Mesh)
|
||||
.multi_input();
|
||||
.multi_input()
|
||||
.description("Mesh that is subtracted from the first mesh");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,13 +11,18 @@ namespace blender::nodes::node_geo_bounding_box_cc {
|
||||
|
||||
static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.add_input<decl::Geometry>("Geometry");
|
||||
b.add_input<decl::Geometry>("Geometry")
|
||||
.description(
|
||||
"Geometry to compute the bounding box of. Instances have to be realized before the full "
|
||||
"bounding box can be computed");
|
||||
b.add_input<decl::Bool>("Use Radius")
|
||||
.default_value(true)
|
||||
.description(
|
||||
"For curves, point clouds, and Grease Pencil, take the radius attribute into account "
|
||||
"when computing the bounds.");
|
||||
b.add_output<decl::Geometry>("Bounding Box").propagate_all_instance_attributes();
|
||||
b.add_output<decl::Geometry>("Bounding Box")
|
||||
.propagate_all_instance_attributes()
|
||||
.description("A cube mesh enclosing the input geometry");
|
||||
b.add_output<decl::Vector>("Min");
|
||||
b.add_output<decl::Vector>("Max");
|
||||
}
|
||||
|
||||
@@ -35,7 +35,8 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
.description(
|
||||
"Reset the transforms of every child instance in the output. Only used when Separate "
|
||||
"Children is enabled");
|
||||
b.add_output<decl::Geometry>("Instances");
|
||||
b.add_output<decl::Geometry>("Instances")
|
||||
.description("Instance of the collection or instances all the children in the collection");
|
||||
}
|
||||
|
||||
static void node_layout(uiLayout *layout, bContext * /*C*/, PointerRNA *ptr)
|
||||
|
||||
@@ -22,7 +22,7 @@ namespace blender::nodes::node_geo_convex_hull_cc {
|
||||
|
||||
static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.add_input<decl::Geometry>("Geometry");
|
||||
b.add_input<decl::Geometry>("Geometry").description("Points to compute the convex hull of");
|
||||
b.add_output<decl::Geometry>("Convex Hull").propagate_all_instance_attributes();
|
||||
}
|
||||
|
||||
|
||||
@@ -27,8 +27,10 @@ NODE_STORAGE_FUNCS(NodeGeometryCurveFill)
|
||||
|
||||
static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.add_input<decl::Geometry>("Curve").supported_type(
|
||||
{GeometryComponent::Type::Curve, GeometryComponent::Type::GreasePencil});
|
||||
b.add_input<decl::Geometry>("Curve")
|
||||
.supported_type({GeometryComponent::Type::Curve, GeometryComponent::Type::GreasePencil})
|
||||
.description(
|
||||
"Curves to fill. All curves are treated as cyclic and projected to the XY plane");
|
||||
b.add_input<decl::Int>("Group ID")
|
||||
.field_on_all()
|
||||
.hide_value()
|
||||
|
||||
@@ -24,8 +24,9 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_default_layout();
|
||||
b.add_input<decl::Geometry>("Curve").supported_type(
|
||||
{GeometryComponent::Type::Curve, GeometryComponent::Type::GreasePencil});
|
||||
b.add_input<decl::Geometry>("Curve")
|
||||
.supported_type({GeometryComponent::Type::Curve, GeometryComponent::Type::GreasePencil})
|
||||
.description("Curves to generated rounded corners on");
|
||||
b.add_output<decl::Geometry>("Curve").propagate_all().align_with_previous();
|
||||
auto &count_input = b.add_input<decl::Int>("Count")
|
||||
.default_value(1)
|
||||
|
||||
@@ -11,8 +11,9 @@ namespace blender::nodes::node_geo_curve_length_cc {
|
||||
|
||||
static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.add_input<decl::Geometry>("Curve").supported_type(
|
||||
{GeometryComponent::Type::Curve, GeometryComponent::Type::GreasePencil});
|
||||
b.add_input<decl::Geometry>("Curve")
|
||||
.supported_type({GeometryComponent::Type::Curve, GeometryComponent::Type::GreasePencil})
|
||||
.description("Curve to compute the length of");
|
||||
b.add_output<decl::Float>("Length");
|
||||
}
|
||||
|
||||
|
||||
@@ -23,8 +23,9 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_default_layout();
|
||||
b.add_input<decl::Geometry>("Curve").supported_type(
|
||||
{GeometryComponent::Type::Curve, GeometryComponent::Type::GreasePencil});
|
||||
b.add_input<decl::Geometry>("Curve")
|
||||
.supported_type({GeometryComponent::Type::Curve, GeometryComponent::Type::GreasePencil})
|
||||
.description("Curves to resample");
|
||||
b.add_output<decl::Geometry>("Curve").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).field_on_all().hide_value();
|
||||
auto &count =
|
||||
|
||||
@@ -13,8 +13,9 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_input<decl::Geometry>("Curve").supported_type(
|
||||
{GeometryComponent::Type::Curve, GeometryComponent::Type::GreasePencil});
|
||||
b.add_input<decl::Geometry>("Curve")
|
||||
.supported_type({GeometryComponent::Type::Curve, GeometryComponent::Type::GreasePencil})
|
||||
.description("Curves to switch the start and end of");
|
||||
b.add_output<decl::Geometry>("Curve").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().field_on_all();
|
||||
}
|
||||
|
||||
@@ -24,8 +24,10 @@ NODE_STORAGE_FUNCS(NodeGeometryCurveSample)
|
||||
|
||||
static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.add_input<decl::Geometry>("Curves").only_realized_data().supported_type(
|
||||
GeometryComponent::Type::Curve);
|
||||
b.add_input<decl::Geometry>("Curves")
|
||||
.only_realized_data()
|
||||
.supported_type(GeometryComponent::Type::Curve)
|
||||
.description("Curves to sample positions on");
|
||||
|
||||
if (const bNode *node = b.node_or_null()) {
|
||||
const NodeGeometryCurveSample &storage = node_storage(*node);
|
||||
|
||||
@@ -20,7 +20,9 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_default_layout();
|
||||
b.add_input<decl::Geometry>("Curve").supported_type(GeometryComponent::Type::Curve);
|
||||
b.add_input<decl::Geometry>("Curve")
|
||||
.supported_type(GeometryComponent::Type::Curve)
|
||||
.description("Curves to set handles of control points on");
|
||||
b.add_output<decl::Geometry>("Curve").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().field_on_all();
|
||||
}
|
||||
|
||||
@@ -21,7 +21,9 @@ NODE_STORAGE_FUNCS(NodeGeometryCurveSplineType)
|
||||
|
||||
static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.add_input<decl::Geometry>("Curve").supported_type(GeometryComponent::Type::Curve);
|
||||
b.add_input<decl::Geometry>("Curve")
|
||||
.supported_type(GeometryComponent::Type::Curve)
|
||||
.description("Curves to change the type of");
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().field_on_all();
|
||||
b.add_output<decl::Geometry>("Curve").propagate_all();
|
||||
}
|
||||
|
||||
@@ -15,8 +15,9 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_input<decl::Geometry>("Curve").supported_type(
|
||||
{GeometryComponent::Type::Curve, GeometryComponent::Type::GreasePencil});
|
||||
b.add_input<decl::Geometry>("Curve")
|
||||
.supported_type({GeometryComponent::Type::Curve, GeometryComponent::Type::GreasePencil})
|
||||
.description("Curves to subdivide");
|
||||
b.add_output<decl::Geometry>("Curve").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Int>("Cuts").default_value(1).min(0).max(1000).field_on_all().description(
|
||||
"The number of control points to create on the segment following each point");
|
||||
|
||||
@@ -19,11 +19,13 @@ namespace blender::nodes::node_geo_curve_to_mesh_cc {
|
||||
|
||||
static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.add_input<decl::Geometry>("Curve").supported_type(
|
||||
{GeometryComponent::Type::Curve, GeometryComponent::Type::GreasePencil});
|
||||
b.add_input<decl::Geometry>("Curve")
|
||||
.supported_type({GeometryComponent::Type::Curve, GeometryComponent::Type::GreasePencil})
|
||||
.description("Curve to convert to a mesh using the given profile");
|
||||
b.add_input<decl::Geometry>("Profile Curve")
|
||||
.only_realized_data()
|
||||
.supported_type(GeometryComponent::Type::Curve);
|
||||
.supported_type(GeometryComponent::Type::Curve)
|
||||
.description("Curves that are sweeped along the main curve");
|
||||
b.add_input<decl::Float>("Scale").default_value(1.0f).min(0.0f).field_on({0}).description(
|
||||
"Scale of the profile at each point");
|
||||
b.add_input<decl::Bool>("Fill Caps")
|
||||
|
||||
@@ -27,8 +27,9 @@ NODE_STORAGE_FUNCS(NodeGeometryCurveToPoints)
|
||||
|
||||
static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.add_input<decl::Geometry>("Curve").supported_type(
|
||||
{GeometryComponent::Type::Curve, GeometryComponent::Type::GreasePencil});
|
||||
b.add_input<decl::Geometry>("Curve")
|
||||
.supported_type({GeometryComponent::Type::Curve, GeometryComponent::Type::GreasePencil})
|
||||
.description("Curves to convert to points");
|
||||
auto &count = b.add_input<decl::Int>("Count")
|
||||
.default_value(10)
|
||||
.min(2)
|
||||
|
||||
@@ -25,8 +25,9 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_default_layout();
|
||||
b.add_input<decl::Geometry>("Curve").supported_type(
|
||||
{GeometryComponent::Type::Curve, GeometryComponent::Type::GreasePencil});
|
||||
b.add_input<decl::Geometry>("Curve")
|
||||
.supported_type({GeometryComponent::Type::Curve, GeometryComponent::Type::GreasePencil})
|
||||
.description("Curves to shorten");
|
||||
b.add_output<decl::Geometry>("Curve").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().supports_field();
|
||||
auto &start_fac = b.add_input<decl::Float>("Start")
|
||||
|
||||
@@ -33,7 +33,9 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_input<decl::Geometry>("Curves").supported_type(GeometryComponent::Type::Curve);
|
||||
b.add_input<decl::Geometry>("Curves")
|
||||
.supported_type(GeometryComponent::Type::Curve)
|
||||
.description("Curves to deform");
|
||||
b.add_output<decl::Geometry>("Curves").propagate_all().align_with_previous();
|
||||
}
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_default_layout();
|
||||
b.add_input<decl::Geometry>("Geometry");
|
||||
b.add_input<decl::Geometry>("Geometry").description("Geometry to delete elements from");
|
||||
b.add_output<decl::Geometry>("Geometry").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Bool>("Selection")
|
||||
.default_value(true)
|
||||
|
||||
@@ -34,7 +34,8 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.add_input<decl::Geometry>("Volume")
|
||||
.supported_type(GeometryComponent::Type::Volume)
|
||||
.translation_context(BLT_I18NCONTEXT_ID_ID);
|
||||
.translation_context(BLT_I18NCONTEXT_ID_ID)
|
||||
.description("Volume with fog grids that points are scattered in");
|
||||
auto &density = b.add_input<decl::Float>("Density")
|
||||
.default_value(1.0f)
|
||||
.min(0.0f)
|
||||
|
||||
@@ -35,7 +35,9 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
node.custom1 = GEO_NODE_POINT_DISTRIBUTE_POINTS_ON_FACES_POISSON;
|
||||
};
|
||||
|
||||
b.add_input<decl::Geometry>("Mesh").supported_type(GeometryComponent::Type::Mesh);
|
||||
b.add_input<decl::Geometry>("Mesh")
|
||||
.supported_type(GeometryComponent::Type::Mesh)
|
||||
.description("Mesh on whose faces to distribute points on");
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().field_on_all();
|
||||
auto &distance_min = b.add_input<decl::Float>("Distance Min")
|
||||
.min(0.0f)
|
||||
|
||||
@@ -17,7 +17,9 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_input<decl::Geometry>("Mesh").supported_type(GeometryComponent::Type::Mesh);
|
||||
b.add_input<decl::Geometry>("Mesh")
|
||||
.supported_type(GeometryComponent::Type::Mesh)
|
||||
.description("Mesh to compute the dual of");
|
||||
b.add_output<decl::Geometry>("Dual Mesh").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Bool>("Keep Boundaries")
|
||||
.default_value(false)
|
||||
|
||||
@@ -32,7 +32,7 @@ NODE_STORAGE_FUNCS(NodeGeometryDuplicateElements);
|
||||
|
||||
static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.add_input<decl::Geometry>("Geometry");
|
||||
b.add_input<decl::Geometry>("Geometry").description("Geometry to duplicate elements of");
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().field_on_all();
|
||||
b.add_input<decl::Int>("Amount").min(0).default_value(1).field_on_all().description(
|
||||
"The number of duplicates to create for each element");
|
||||
|
||||
@@ -14,7 +14,9 @@ namespace blender::nodes::node_geo_edge_paths_to_curves_cc {
|
||||
|
||||
static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.add_input<decl::Geometry>("Mesh").supported_type(GeometryComponent::Type::Mesh);
|
||||
b.add_input<decl::Geometry>("Mesh")
|
||||
.supported_type(GeometryComponent::Type::Mesh)
|
||||
.description("Edges to convert to curves");
|
||||
b.add_input<decl::Bool>("Start Vertices").default_value(true).hide_value().field_on_all();
|
||||
b.add_input<decl::Int>("Next Vertex Index").default_value(-1).hide_value().field_on_all();
|
||||
b.add_output<decl::Geometry>("Curves").propagate_all();
|
||||
|
||||
@@ -14,7 +14,9 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_input<decl::Geometry>("Mesh").supported_type(GeometryComponent::Type::Mesh);
|
||||
b.add_input<decl::Geometry>("Mesh")
|
||||
.supported_type(GeometryComponent::Type::Mesh)
|
||||
.description("Mesh whose edges to split");
|
||||
b.add_output<decl::Geometry>("Mesh").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().field_on_all();
|
||||
}
|
||||
|
||||
@@ -35,7 +35,9 @@ NODE_STORAGE_FUNCS(NodeGeometryExtrudeMesh)
|
||||
|
||||
static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.add_input<decl::Geometry>("Mesh").supported_type(GeometryComponent::Type::Mesh);
|
||||
b.add_input<decl::Geometry>("Mesh")
|
||||
.supported_type(GeometryComponent::Type::Mesh)
|
||||
.description("Mesh to extrude elements of");
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).field_on_all().hide_value();
|
||||
b.add_input<decl::Vector>("Offset")
|
||||
.subtype(PROP_TRANSLATION)
|
||||
|
||||
@@ -12,7 +12,9 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_input<decl::Geometry>("Mesh").supported_type(GeometryComponent::Type::Mesh);
|
||||
b.add_input<decl::Geometry>("Mesh")
|
||||
.supported_type(GeometryComponent::Type::Mesh)
|
||||
.description("Mesh to flip faces of");
|
||||
b.add_output<decl::Geometry>("Mesh").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().field_on_all();
|
||||
}
|
||||
|
||||
@@ -10,7 +10,9 @@ namespace blender::nodes::node_geo_geometry_to_instance_cc {
|
||||
|
||||
static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.add_input<decl::Geometry>("Geometry").multi_input();
|
||||
b.add_input<decl::Geometry>("Geometry")
|
||||
.multi_input()
|
||||
.description("Each input geometry is turned into a separate instance");
|
||||
b.add_output<decl::Geometry>("Instances").propagate_all();
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace blender::nodes::node_geo_get_named_grid_cc {
|
||||
|
||||
static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.add_input<decl::Geometry>("Volume");
|
||||
b.add_input<decl::Geometry>("Volume").description("Volume to take a named grid out of");
|
||||
b.add_input<decl::String>("Name").hide_label();
|
||||
b.add_input<decl::Bool>("Remove").default_value(true).translation_context(
|
||||
BLT_I18NCONTEXT_OPERATOR_DEFAULT);
|
||||
|
||||
@@ -17,7 +17,8 @@ namespace blender::nodes::node_geo_grease_pencil_to_curves_cc {
|
||||
static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.add_input<decl::Geometry>("Grease Pencil")
|
||||
.supported_type(bke::GeometryComponent::Type::GreasePencil);
|
||||
.supported_type(bke::GeometryComponent::Type::GreasePencil)
|
||||
.description("Grease pencil data to convert to curves");
|
||||
b.add_input<decl::Bool>("Selection")
|
||||
.default_value(true)
|
||||
.hide_value()
|
||||
|
||||
@@ -15,7 +15,9 @@ namespace blender::nodes::node_geo_instances_to_points_cc {
|
||||
|
||||
static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.add_input<decl::Geometry>("Instances").only_instances();
|
||||
b.add_input<decl::Geometry>("Instances")
|
||||
.only_instances()
|
||||
.description("Instances that converted to a point per instance");
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().field_on_all();
|
||||
b.add_input<decl::Vector>("Position").implicit_field_on_all(NODE_DEFAULT_INPUT_POSITION_FIELD);
|
||||
b.add_input<decl::Float>("Radius")
|
||||
|
||||
@@ -12,7 +12,9 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_input<decl::Geometry>("Geometry").multi_input();
|
||||
b.add_input<decl::Geometry>("Geometry")
|
||||
.multi_input()
|
||||
.description("Geometries to merge together by concatenating their elements");
|
||||
b.add_output<decl::Geometry>("Geometry").propagate_all().align_with_previous();
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,8 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_input<decl::Geometry>("Geometry")
|
||||
.supported_type({GeometryComponent::Type::Mesh, GeometryComponent::Type::GreasePencil});
|
||||
.supported_type({GeometryComponent::Type::Mesh, GeometryComponent::Type::GreasePencil})
|
||||
.description("Geometry to replace materials on");
|
||||
b.add_output<decl::Geometry>("Geometry").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Material>("Old");
|
||||
b.add_input<decl::Material>("New").translation_context(BLT_I18NCONTEXT_ID_MATERIAL);
|
||||
|
||||
@@ -25,7 +25,8 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
b.allow_any_socket_order();
|
||||
b.add_default_layout();
|
||||
b.add_input<decl::Geometry>("Geometry")
|
||||
.supported_type({GeometryComponent::Type::PointCloud, GeometryComponent::Type::Mesh});
|
||||
.supported_type({GeometryComponent::Type::PointCloud, GeometryComponent::Type::Mesh})
|
||||
.description("Point cloud or mesh to merge points of");
|
||||
b.add_output<decl::Geometry>("Geometry").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().field_on_all();
|
||||
b.add_input<decl::Float>("Distance").default_value(0.001f).min(0.0f).subtype(PROP_DISTANCE);
|
||||
|
||||
@@ -28,7 +28,8 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
b.allow_any_socket_order();
|
||||
b.add_default_layout();
|
||||
b.add_input<decl::Geometry>("Grease Pencil")
|
||||
.supported_type(GeometryComponent::Type::GreasePencil);
|
||||
.supported_type(GeometryComponent::Type::GreasePencil)
|
||||
.description("Grease Pencil data to merge layers of");
|
||||
b.add_output<decl::Geometry>("Grease Pencil").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().field_on_all();
|
||||
auto &group_id = b.add_input<decl::Int>("Group ID")
|
||||
|
||||
@@ -15,7 +15,9 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_input<decl::Geometry>("Mesh").supported_type(GeometryComponent::Type::Mesh);
|
||||
b.add_input<decl::Geometry>("Mesh")
|
||||
.supported_type(GeometryComponent::Type::Mesh)
|
||||
.description("Mesh to subdivide");
|
||||
b.add_output<decl::Geometry>("Mesh").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Int>("Level").default_value(1).min(0).max(6);
|
||||
}
|
||||
|
||||
@@ -22,7 +22,9 @@ enum class Mode : int8_t {
|
||||
|
||||
static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.add_input<decl::Geometry>("Mesh").supported_type(GeometryComponent::Type::Mesh);
|
||||
b.add_input<decl::Geometry>("Mesh")
|
||||
.supported_type(GeometryComponent::Type::Mesh)
|
||||
.description("Mesh to convert to curves");
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().field_on_all();
|
||||
b.add_output<decl::Geometry>("Curve").propagate_all();
|
||||
}
|
||||
|
||||
@@ -16,7 +16,9 @@ NODE_STORAGE_FUNCS(NodeGeometryMeshToVolume)
|
||||
|
||||
static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.add_input<decl::Geometry>("Mesh").supported_type(GeometryComponent::Type::Mesh);
|
||||
b.add_input<decl::Geometry>("Mesh")
|
||||
.supported_type(GeometryComponent::Type::Mesh)
|
||||
.description("Mesh whose inner volume is converted to a density grid");
|
||||
b.add_input<decl::Float>("Density").default_value(1.0f).min(0.01f).max(FLT_MAX);
|
||||
b.add_input<decl::Float>("Voxel Size")
|
||||
.default_value(0.3f)
|
||||
|
||||
@@ -26,7 +26,9 @@ NODE_STORAGE_FUNCS(NodeGeometryMeshToPoints)
|
||||
|
||||
static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.add_input<decl::Geometry>("Mesh").supported_type(GeometryComponent::Type::Mesh);
|
||||
b.add_input<decl::Geometry>("Mesh")
|
||||
.supported_type(GeometryComponent::Type::Mesh)
|
||||
.description("Mesh whose elements are converted to points");
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).field_on_all().hide_value();
|
||||
b.add_input<decl::Vector>("Position").implicit_field_on_all(NODE_DEFAULT_INPUT_POSITION_FIELD);
|
||||
b.add_input<decl::Float>("Radius")
|
||||
|
||||
@@ -14,7 +14,9 @@ namespace blender::nodes::node_geo_mesh_to_sdf_grid_cc {
|
||||
|
||||
static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.add_input<decl::Geometry>("Mesh").supported_type(GeometryComponent::Type::Mesh);
|
||||
b.add_input<decl::Geometry>("Mesh")
|
||||
.supported_type(GeometryComponent::Type::Mesh)
|
||||
.description("Mesh whose inner volume is converted to a signed distance field grid");
|
||||
b.add_input<decl::Float>("Voxel Size")
|
||||
.default_value(0.3f)
|
||||
.min(0.01f)
|
||||
|
||||
@@ -22,7 +22,9 @@ NODE_STORAGE_FUNCS(NodeGeometryMeshToVolume)
|
||||
|
||||
static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.add_input<decl::Geometry>("Mesh").supported_type(GeometryComponent::Type::Mesh);
|
||||
b.add_input<decl::Geometry>("Mesh")
|
||||
.supported_type(GeometryComponent::Type::Mesh)
|
||||
.description("Mesh to convert the inner volume of to a fog volume geometry");
|
||||
b.add_input<decl::Float>("Density").default_value(1.0f).min(0.01f).max(FLT_MAX);
|
||||
auto &voxel_size = b.add_input<decl::Float>("Voxel Size")
|
||||
.default_value(0.3f)
|
||||
|
||||
@@ -13,7 +13,8 @@ namespace blender::nodes::node_geo_points_to_sdf_grid_cc {
|
||||
|
||||
static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.add_input<decl::Geometry>("Points");
|
||||
b.add_input<decl::Geometry>("Points").description(
|
||||
"Points whose volume is converted to a signed distance field grid");
|
||||
b.add_input<decl::Float>("Radius")
|
||||
.default_value(0.5f)
|
||||
.min(0.0f)
|
||||
|
||||
@@ -15,7 +15,9 @@ namespace blender::nodes::node_geo_points_to_vertices_cc {
|
||||
|
||||
static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.add_input<decl::Geometry>("Points").supported_type(GeometryComponent::Type::PointCloud);
|
||||
b.add_input<decl::Geometry>("Points")
|
||||
.supported_type(GeometryComponent::Type::PointCloud)
|
||||
.description("Points that are converted to vertices in a mesh");
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).field_on_all().hide_value();
|
||||
b.add_output<decl::Geometry>("Mesh").propagate_all();
|
||||
}
|
||||
|
||||
@@ -142,7 +142,8 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
b.add_input<decl::Menu>("Resolution Mode")
|
||||
.static_items(resolution_mode_items)
|
||||
.description("How the voxel size is specified");
|
||||
b.add_input<decl::Geometry>("Points").is_default_link_socket();
|
||||
b.add_input<decl::Geometry>("Points").is_default_link_socket().description(
|
||||
"Points which are converted to a volume");
|
||||
b.add_input<decl::Float>("Density").default_value(1.0f).min(0.0f);
|
||||
b.add_input<decl::Float>("Voxel Size")
|
||||
.default_value(0.3f)
|
||||
|
||||
@@ -25,7 +25,8 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.add_input<decl::Geometry>("Geometry", "Target")
|
||||
.only_realized_data()
|
||||
.supported_type({GeometryComponent::Type::Mesh, GeometryComponent::Type::PointCloud});
|
||||
.supported_type({GeometryComponent::Type::Mesh, GeometryComponent::Type::PointCloud})
|
||||
.description("Geometry to find the closest point on");
|
||||
b.add_input<decl::Int>("Group ID")
|
||||
.hide_value()
|
||||
.field_on_all()
|
||||
|
||||
@@ -31,7 +31,8 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
|
||||
b.add_input<decl::Geometry>("Target Geometry")
|
||||
.only_realized_data()
|
||||
.supported_type(GeometryComponent::Type::Mesh);
|
||||
.supported_type(GeometryComponent::Type::Mesh)
|
||||
.description("Geometry to cast rays onto");
|
||||
if (node != nullptr) {
|
||||
const eCustomDataType data_type = eCustomDataType(node_storage(*node).data_type);
|
||||
/* TODO: Field interfacing depends on the offset of the next declarations! */
|
||||
|
||||
@@ -16,7 +16,8 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_input<decl::Geometry>("Geometry");
|
||||
b.add_input<decl::Geometry>("Geometry")
|
||||
.description("Geometry whose instances are (partially) realized");
|
||||
b.add_output<decl::Geometry>("Geometry").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Bool>("Selection")
|
||||
.default_value(true)
|
||||
|
||||
@@ -23,7 +23,7 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_default_layout();
|
||||
b.add_input<decl::Geometry>("Geometry");
|
||||
b.add_input<decl::Geometry>("Geometry").description("Geometry to remove attributes from");
|
||||
b.add_output<decl::Geometry>("Geometry").propagate_all().align_with_previous();
|
||||
b.add_input<decl::String>("Name").is_attribute_name().hide_label();
|
||||
}
|
||||
|
||||
@@ -16,7 +16,9 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_input<decl::Geometry>("Instances").only_instances();
|
||||
b.add_input<decl::Geometry>("Instances")
|
||||
.only_instances()
|
||||
.description("Instances to rotate individually");
|
||||
b.add_output<decl::Geometry>("Instances").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().field_on_all();
|
||||
b.add_input<decl::Rotation>("Rotation").field_on_all();
|
||||
|
||||
@@ -25,7 +25,8 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
GeometryComponent::Type::PointCloud,
|
||||
GeometryComponent::Type::Curve,
|
||||
GeometryComponent::Type::Instance,
|
||||
GeometryComponent::Type::GreasePencil});
|
||||
GeometryComponent::Type::GreasePencil})
|
||||
.description("Geometry to sample a value on");
|
||||
if (node != nullptr) {
|
||||
const eCustomDataType data_type = eCustomDataType(node_storage(*node).data_type);
|
||||
b.add_input(data_type, "Value").hide_value().field_on_all();
|
||||
|
||||
@@ -57,7 +57,8 @@ namespace blender::nodes::node_geo_sample_nearest_cc {
|
||||
static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.add_input<decl::Geometry>("Geometry")
|
||||
.supported_type({GeometryComponent::Type::Mesh, GeometryComponent::Type::PointCloud});
|
||||
.supported_type({GeometryComponent::Type::Mesh, GeometryComponent::Type::PointCloud})
|
||||
.description("Mesh or point cloud to find the nearest point on");
|
||||
b.add_input<decl::Vector>("Sample Position").implicit_field(NODE_DEFAULT_INPUT_POSITION_FIELD);
|
||||
b.add_output<decl::Int>("Index").dependent_field({1});
|
||||
}
|
||||
|
||||
@@ -26,7 +26,9 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
const bNode *node = b.node_or_null();
|
||||
|
||||
b.add_input<decl::Geometry>("Mesh").supported_type(GeometryComponent::Type::Mesh);
|
||||
b.add_input<decl::Geometry>("Mesh")
|
||||
.supported_type(GeometryComponent::Type::Mesh)
|
||||
.description("Mesh to find the closest surface point on");
|
||||
if (node != nullptr) {
|
||||
const eCustomDataType data_type = eCustomDataType(node->custom1);
|
||||
b.add_input(data_type, "Value").hide_value().field_on_all();
|
||||
|
||||
@@ -27,7 +27,9 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
const bNode *node = b.node_or_null();
|
||||
|
||||
b.add_input<decl::Geometry>("Mesh").supported_type(GeometryComponent::Type::Mesh);
|
||||
b.add_input<decl::Geometry>("Mesh")
|
||||
.supported_type(GeometryComponent::Type::Mesh)
|
||||
.description("Mesh whose UV map is used");
|
||||
if (node != nullptr) {
|
||||
const eCustomDataType data_type = eCustomDataType(node->custom1);
|
||||
b.add_input(data_type, "Value").hide_value().field_on_all();
|
||||
|
||||
@@ -30,7 +30,9 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_default_layout();
|
||||
b.add_input<decl::Geometry>("Geometry").supported_type(GeometryComponent::Type::Mesh);
|
||||
b.add_input<decl::Geometry>("Geometry")
|
||||
.supported_type(GeometryComponent::Type::Mesh)
|
||||
.description("Geometry to scale elements of");
|
||||
b.add_output<decl::Geometry>("Geometry").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().field_on_all();
|
||||
b.add_input<decl::Float>("Scale", "Scale").default_value(1.0f).min(0.0f).field_on_all();
|
||||
|
||||
@@ -17,7 +17,9 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_input<decl::Geometry>("Instances").only_instances();
|
||||
b.add_input<decl::Geometry>("Instances")
|
||||
.only_instances()
|
||||
.description("Instances to scale individually");
|
||||
b.add_output<decl::Geometry>("Instances").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().field_on_all();
|
||||
b.add_input<decl::Vector>("Scale").subtype(PROP_XYZ).default_value({1, 1, 1}).field_on_all();
|
||||
|
||||
@@ -8,7 +8,8 @@ namespace blender::nodes::node_geo_separate_components_cc {
|
||||
|
||||
static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.add_input<decl::Geometry>("Geometry");
|
||||
b.add_input<decl::Geometry>("Geometry")
|
||||
.description("Geometry to split into separate components");
|
||||
b.add_output<decl::Geometry>("Mesh").propagate_all();
|
||||
b.add_output<decl::Geometry>("Curve").propagate_all();
|
||||
b.add_output<decl::Geometry>("Grease Pencil").propagate_all();
|
||||
|
||||
@@ -19,7 +19,7 @@ NODE_STORAGE_FUNCS(NodeGeometrySeparateGeometry)
|
||||
|
||||
static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.add_input<decl::Geometry>("Geometry");
|
||||
b.add_input<decl::Geometry>("Geometry").description("Geometry to split into two parts");
|
||||
b.add_input<decl::Bool>("Selection")
|
||||
.default_value(true)
|
||||
.hide_value()
|
||||
|
||||
@@ -29,7 +29,9 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
|
||||
const bNode *node = b.node_or_null();
|
||||
|
||||
b.add_input<decl::Geometry>("Curve").supported_type(GeometryComponent::Type::Curve);
|
||||
b.add_input<decl::Geometry>("Curve")
|
||||
.supported_type(GeometryComponent::Type::Curve)
|
||||
.description("Curves to change the handles on");
|
||||
b.add_output<decl::Geometry>("Curve").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().field_on_all();
|
||||
auto &position = b.add_input<decl::Vector>("Position");
|
||||
|
||||
@@ -21,8 +21,9 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_default_layout();
|
||||
b.add_input<decl::Geometry>("Curve").supported_type(
|
||||
{GeometryComponent::Type::Curve, GeometryComponent::Type::GreasePencil});
|
||||
b.add_input<decl::Geometry>("Curve")
|
||||
.supported_type({GeometryComponent::Type::Curve, GeometryComponent::Type::GreasePencil})
|
||||
.description("Curves to change the normals on");
|
||||
b.add_output<decl::Geometry>("Curve").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().field_on_all();
|
||||
auto &normal = b.add_input<decl::Vector>("Normal")
|
||||
|
||||
@@ -13,8 +13,9 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_input<decl::Geometry>("Curve").supported_type(
|
||||
{GeometryComponent::Type::Curve, GeometryComponent::Type::GreasePencil});
|
||||
b.add_input<decl::Geometry>("Curve")
|
||||
.supported_type({GeometryComponent::Type::Curve, GeometryComponent::Type::GreasePencil})
|
||||
.description("Curves to set the radius on");
|
||||
b.add_output<decl::Geometry>("Curve").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().field_on_all();
|
||||
b.add_input<decl::Float>("Radius")
|
||||
|
||||
@@ -13,8 +13,9 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_input<decl::Geometry>("Curve").supported_type(
|
||||
{GeometryComponent::Type::Curve, GeometryComponent::Type::GreasePencil});
|
||||
b.add_input<decl::Geometry>("Curve")
|
||||
.supported_type({GeometryComponent::Type::Curve, GeometryComponent::Type::GreasePencil})
|
||||
.description("Curves to set tilt on");
|
||||
b.add_output<decl::Geometry>("Curve").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().field_on_all();
|
||||
b.add_input<decl::Float>("Tilt").subtype(PROP_ANGLE).field_on_all();
|
||||
|
||||
@@ -10,7 +10,7 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_input<decl::Geometry>("Geometry");
|
||||
b.add_input<decl::Geometry>("Geometry").description("Geometry to override the name of");
|
||||
b.add_output<decl::Geometry>("Geometry").propagate_all().align_with_previous();
|
||||
b.add_input<decl::String>("Name").hide_label();
|
||||
}
|
||||
|
||||
@@ -28,7 +28,8 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
b.add_default_layout();
|
||||
b.add_input<decl::Geometry>("Grease Pencil")
|
||||
.supported_type(GeometryComponent::Type::GreasePencil)
|
||||
.align_with_previous();
|
||||
.align_with_previous()
|
||||
.description("Grease Pencil to change the color of");
|
||||
b.add_output<decl::Geometry>("Grease Pencil").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().field_on_all();
|
||||
b.add_input<decl::Color>("Color")
|
||||
|
||||
@@ -21,7 +21,8 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
b.allow_any_socket_order();
|
||||
b.add_default_layout();
|
||||
b.add_input<decl::Geometry>("Grease Pencil")
|
||||
.supported_type(GeometryComponent::Type::GreasePencil);
|
||||
.supported_type(GeometryComponent::Type::GreasePencil)
|
||||
.description("Great Pencil to set the depth order of");
|
||||
b.add_output<decl::Geometry>("Grease Pencil").propagate_all().align_with_previous();
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,8 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
b.allow_any_socket_order();
|
||||
b.add_input<decl::Geometry>("Grease Pencil")
|
||||
.supported_type(GeometryComponent::Type::GreasePencil)
|
||||
.align_with_previous();
|
||||
.align_with_previous()
|
||||
.description("Grease Pencil to set the softness of");
|
||||
b.add_output<decl::Geometry>("Grease Pencil").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().field_on_all();
|
||||
b.add_input<decl::Float>("Softness").default_value(0.0f).min(0.0f).max(1.0f).field_on_all();
|
||||
|
||||
@@ -10,7 +10,7 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_input<decl::Geometry>("Geometry");
|
||||
b.add_input<decl::Geometry>("Geometry").description("Geometry to update the ID attribute on");
|
||||
b.add_output<decl::Geometry>("Geometry").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().field_on_all();
|
||||
b.add_input<decl::Int>("ID").implicit_field_on_all(NODE_DEFAULT_INPUT_INDEX_FIELD);
|
||||
|
||||
@@ -10,7 +10,9 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_input<decl::Geometry>("Instances").only_instances();
|
||||
b.add_input<decl::Geometry>("Instances")
|
||||
.only_instances()
|
||||
.description("Instances to transform individually");
|
||||
b.add_output<decl::Geometry>("Instances").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().field_on_all();
|
||||
b.add_input<decl::Matrix>("Transform")
|
||||
|
||||
@@ -25,7 +25,10 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
GeometryComponent::Type::PointCloud,
|
||||
GeometryComponent::Type::Curve,
|
||||
GeometryComponent::Type::GreasePencil});
|
||||
b.add_output<decl::Geometry>("Geometry").propagate_all().align_with_previous();
|
||||
b.add_output<decl::Geometry>("Geometry")
|
||||
.propagate_all()
|
||||
.align_with_previous()
|
||||
.description("Geometry to assign a material to");
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().field_on_all();
|
||||
b.add_input<decl::Material>("Material").hide_label();
|
||||
}
|
||||
|
||||
@@ -17,7 +17,8 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_input<decl::Geometry>("Geometry")
|
||||
.supported_type({GeometryComponent::Type::Mesh, GeometryComponent::Type::GreasePencil});
|
||||
.supported_type({GeometryComponent::Type::Mesh, GeometryComponent::Type::GreasePencil})
|
||||
.description("Geometry to update the material indices on");
|
||||
b.add_output<decl::Geometry>("Geometry").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().field_on_all();
|
||||
b.add_input<decl::Int>("Material Index").min(0).field_on_all();
|
||||
|
||||
@@ -26,7 +26,9 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_default_layout();
|
||||
b.add_input<decl::Geometry>("Mesh").supported_type(GeometryComponent::Type::Mesh);
|
||||
b.add_input<decl::Geometry>("Mesh")
|
||||
.supported_type(GeometryComponent::Type::Mesh)
|
||||
.description("Mesh to set the custom normals on");
|
||||
b.add_output<decl::Geometry>("Mesh").propagate_all().align_with_previous();
|
||||
if (const bNode *node = b.node_or_null()) {
|
||||
switch (Mode(node->custom1)) {
|
||||
|
||||
@@ -12,7 +12,9 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_input<decl::Geometry>("Points").supported_type(GeometryComponent::Type::PointCloud);
|
||||
b.add_input<decl::Geometry>("Points")
|
||||
.supported_type(GeometryComponent::Type::PointCloud)
|
||||
.description("Points to set the radius of");
|
||||
b.add_output<decl::Geometry>("Points").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().field_on_all();
|
||||
b.add_input<decl::Float>("Radius")
|
||||
|
||||
@@ -19,7 +19,7 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_input<decl::Geometry>("Geometry");
|
||||
b.add_input<decl::Geometry>("Geometry").description("Points to modify the positions of");
|
||||
b.add_output<decl::Geometry>("Geometry").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().field_on_all();
|
||||
b.add_input<decl::Vector>("Position").implicit_field_on_all(NODE_DEFAULT_INPUT_POSITION_FIELD);
|
||||
|
||||
@@ -20,7 +20,9 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_default_layout();
|
||||
b.add_input<decl::Geometry>("Geometry").supported_type(GeometryComponent::Type::Mesh);
|
||||
b.add_input<decl::Geometry>("Geometry")
|
||||
.supported_type(GeometryComponent::Type::Mesh)
|
||||
.description("Description to set the smoothness of");
|
||||
b.add_output<decl::Geometry>("Geometry").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().field_on_all();
|
||||
b.add_input<decl::Bool>("Shade Smooth").default_value(true).field_on_all();
|
||||
|
||||
@@ -14,7 +14,8 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_input<decl::Geometry>("Geometry")
|
||||
.supported_type({GeometryComponent::Type::Curve, GeometryComponent::Type::GreasePencil});
|
||||
.supported_type({GeometryComponent::Type::Curve, GeometryComponent::Type::GreasePencil})
|
||||
.description("Curves to change the cyclic state of");
|
||||
b.add_output<decl::Geometry>("Geometry").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().field_on_all();
|
||||
b.add_input<decl::Bool>("Cyclic").field_on_all();
|
||||
|
||||
@@ -14,7 +14,8 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_input<decl::Geometry>("Geometry")
|
||||
.supported_type({GeometryComponent::Type::Curve, GeometryComponent::Type::GreasePencil});
|
||||
.supported_type({GeometryComponent::Type::Curve, GeometryComponent::Type::GreasePencil})
|
||||
.description("Curves to change the resolution of");
|
||||
b.add_output<decl::Geometry>("Geometry").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().field_on_all();
|
||||
b.add_input<decl::Int>("Resolution").min(1).default_value(12).field_on_all();
|
||||
|
||||
@@ -30,7 +30,7 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_default_layout();
|
||||
b.add_input<decl::Geometry>("Geometry");
|
||||
b.add_input<decl::Geometry>("Geometry").description("Geometry to sort the elements of");
|
||||
b.add_output<decl::Geometry>("Geometry").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).field_on_all().hide_value();
|
||||
b.add_input<decl::Int>("Group ID").field_on_all().hide_value();
|
||||
|
||||
@@ -28,7 +28,8 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
.supported_type({GeometryComponent::Type::Mesh,
|
||||
GeometryComponent::Type::PointCloud,
|
||||
GeometryComponent::Type::Curve,
|
||||
GeometryComponent::Type::Instance});
|
||||
GeometryComponent::Type::Instance})
|
||||
.description("Geometry to split into instances");
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).field_on_all().hide_value();
|
||||
b.add_input<decl::Int>("Group ID").field_on_all().hide_value();
|
||||
b.add_output<decl::Geometry>("Instances")
|
||||
|
||||
@@ -33,7 +33,8 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
b.add_default_layout();
|
||||
const bNode *node = b.node_or_null();
|
||||
|
||||
b.add_input<decl::Geometry>("Geometry");
|
||||
b.add_input<decl::Geometry>("Geometry")
|
||||
.description("Geometry to store a new attribute with the given name on");
|
||||
b.add_output<decl::Geometry>("Geometry").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().field_on_all();
|
||||
b.add_input<decl::String>("Name").is_attribute_name().hide_label();
|
||||
|
||||
@@ -23,7 +23,7 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_default_layout();
|
||||
b.add_input<decl::Geometry>("Volume");
|
||||
b.add_input<decl::Geometry>("Volume").description("Volume geometry to add a grid to");
|
||||
b.add_output<decl::Geometry>("Volume").align_with_previous();
|
||||
b.add_input<decl::String>("Name").hide_label();
|
||||
|
||||
|
||||
@@ -32,7 +32,9 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_default_layout();
|
||||
b.add_input<decl::Geometry>("Mesh").supported_type(GeometryComponent::Type::Mesh);
|
||||
b.add_input<decl::Geometry>("Mesh")
|
||||
.supported_type(GeometryComponent::Type::Mesh)
|
||||
.description("Mesh to subdivide");
|
||||
b.add_output<decl::Geometry>("Mesh").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Int>("Level").default_value(1).min(0).max(6);
|
||||
b.add_input<decl::Float>("Edge Crease")
|
||||
|
||||
@@ -13,7 +13,8 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_input<decl::Geometry>("Mesh");
|
||||
b.add_output<decl::Geometry>("Mesh").align_with_previous();
|
||||
b.add_output<decl::Geometry>("Mesh").align_with_previous().description(
|
||||
"Mesh to override the face set attribute on");
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().field_on_all();
|
||||
b.add_input<decl::Int>("Face Set").hide_value().field_on_all();
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_default_layout();
|
||||
b.add_input<decl::Geometry>("Geometry");
|
||||
b.add_input<decl::Geometry>("Geometry").description("Geometry to update the selection of");
|
||||
b.add_output<decl::Geometry>("Geometry").align_with_previous();
|
||||
if (const bNode *node = b.node_or_null()) {
|
||||
switch (SelectionType(node->custom2)) {
|
||||
|
||||
@@ -29,7 +29,9 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
b.add_input<decl::Menu>("Mode")
|
||||
.static_items(mode_items)
|
||||
.description("How the transformation is specified");
|
||||
b.add_input<decl::Geometry>("Geometry").is_default_link_socket();
|
||||
b.add_input<decl::Geometry>("Geometry")
|
||||
.is_default_link_socket()
|
||||
.description("Geometry to transform");
|
||||
b.add_output<decl::Geometry>("Geometry").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Vector>("Translation")
|
||||
.subtype(PROP_TRANSLATION)
|
||||
|
||||
@@ -16,7 +16,9 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
{
|
||||
b.use_custom_socket_order();
|
||||
b.allow_any_socket_order();
|
||||
b.add_input<decl::Geometry>("Instances").only_instances();
|
||||
b.add_input<decl::Geometry>("Instances")
|
||||
.only_instances()
|
||||
.description("Instances to translate individually");
|
||||
b.add_output<decl::Geometry>("Instances").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).hide_value().field_on_all();
|
||||
b.add_input<decl::Vector>("Translation").subtype(PROP_TRANSLATION).field_on_all();
|
||||
|
||||
@@ -70,7 +70,8 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
.description("Method for splitting the n-gons into triangles");
|
||||
b.add_input<decl::Geometry>("Mesh")
|
||||
.supported_type(GeometryComponent::Type::Mesh)
|
||||
.is_default_link_socket();
|
||||
.is_default_link_socket()
|
||||
.description("Mesh to triangulate");
|
||||
b.add_output<decl::Geometry>("Mesh").propagate_all().align_with_previous();
|
||||
b.add_input<decl::Bool>("Selection").default_value(true).field_on_all().hide_value();
|
||||
}
|
||||
|
||||
@@ -44,7 +44,8 @@ static void node_declare(NodeDeclarationBuilder &b)
|
||||
b.add_input<decl::Geometry>("Volume")
|
||||
.supported_type(GeometryComponent::Type::Volume)
|
||||
.translation_context(BLT_I18NCONTEXT_ID_ID)
|
||||
.is_default_link_socket();
|
||||
.is_default_link_socket()
|
||||
.description("Volume to convert to a mesh");
|
||||
b.add_input<decl::Float>("Voxel Size")
|
||||
.default_value(0.3f)
|
||||
.min(0.01f)
|
||||
|
||||
Reference in New Issue
Block a user