2020-04-20 10:58:43 +02:00
|
|
|
/*
|
|
|
|
* This program is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU General Public License
|
|
|
|
* as published by the Free Software Foundation; either version 2
|
|
|
|
* of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with this program; if not, write to the Free Software Foundation,
|
|
|
|
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
2021-04-08 16:25:09 -06:00
|
|
|
#include "BKE_node.h"
|
|
|
|
|
2020-12-02 13:25:25 +01:00
|
|
|
extern struct bNodeTreeType *ntreeType_Geometry;
|
2020-04-20 10:58:43 +02:00
|
|
|
|
2020-12-02 13:25:25 +01:00
|
|
|
void register_node_tree_type_geo(void);
|
2020-04-20 10:58:43 +02:00
|
|
|
|
2020-12-02 13:25:25 +01:00
|
|
|
void register_node_type_geo_group(void);
|
2021-04-08 16:25:09 -06:00
|
|
|
void register_node_type_geo_custom_group(bNodeType *ntype);
|
2020-12-02 13:25:25 +01:00
|
|
|
|
2021-02-07 17:21:21 -06:00
|
|
|
void register_node_type_geo_align_rotation_to_vector(void);
|
2021-03-26 09:28:15 +00:00
|
|
|
void register_node_type_geo_attribute_clamp(void);
|
2021-02-07 17:21:21 -06:00
|
|
|
void register_node_type_geo_attribute_color_ramp(void);
|
2021-02-09 11:12:24 -06:00
|
|
|
void register_node_type_geo_attribute_combine_xyz(void);
|
2021-02-07 17:21:21 -06:00
|
|
|
void register_node_type_geo_attribute_compare(void);
|
2021-03-13 11:49:56 -05:00
|
|
|
void register_node_type_geo_attribute_convert(void);
|
2021-05-06 23:47:51 -05:00
|
|
|
void register_node_type_geo_attribute_curve_map(void);
|
2020-12-10 07:58:45 -06:00
|
|
|
void register_node_type_geo_attribute_fill(void);
|
2021-03-25 23:29:33 -04:00
|
|
|
void register_node_type_geo_attribute_map_range(void);
|
2021-02-07 17:21:21 -06:00
|
|
|
void register_node_type_geo_attribute_math(void);
|
|
|
|
void register_node_type_geo_attribute_mix(void);
|
2021-02-05 08:28:31 -06:00
|
|
|
void register_node_type_geo_attribute_proximity(void);
|
2021-02-07 17:21:21 -06:00
|
|
|
void register_node_type_geo_attribute_randomize(void);
|
2021-02-09 11:12:24 -06:00
|
|
|
void register_node_type_geo_attribute_separate_xyz(void);
|
2021-04-27 12:56:13 +02:00
|
|
|
void register_node_type_geo_attribute_transfer(void);
|
2021-02-07 17:21:21 -06:00
|
|
|
void register_node_type_geo_attribute_vector_math(void);
|
2021-05-11 10:53:13 +01:00
|
|
|
void register_node_type_geo_attribute_vector_rotate(void);
|
2021-03-11 23:06:16 +01:00
|
|
|
void register_node_type_geo_attribute_remove(void);
|
2020-12-02 13:25:25 +01:00
|
|
|
void register_node_type_geo_boolean(void);
|
2021-04-06 16:02:55 -05:00
|
|
|
void register_node_type_geo_bounding_box(void);
|
2021-02-07 17:21:21 -06:00
|
|
|
void register_node_type_geo_collection_info(void);
|
2021-06-09 11:58:08 -05:00
|
|
|
void register_node_type_geo_convex_hull(void);
|
2021-06-03 19:12:38 -04:00
|
|
|
void register_node_type_geo_curve_length(void);
|
Geometry Nodes: Initial basic curve data support
This patch adds initial curve support to geometry nodes. Currently
there is only one node available, the "Curve to Mesh" node, T87428.
However, the aim of the changes here is larger than just supporting
curve data in nodes-- it also uses the opportunity to add better spline
data structures, intended to replace the existing curve evaluation code.
The curve code in Blender is quite old, and it's generally regarded as
some of the messiest, hardest-to-understand code as well. The classes
in `BKE_spline.hh` aim to be faster, more extensible, and much more
easily understandable. Further explanation can be found in comments in
that file.
Initial builtin spline attributes are supported-- reading and writing
from the `cyclic` and `resolution` attributes works with any of the
attribute nodes. Also, only Z-up normal calculation is implemented
at the moment, and tilts do not apply yet.
**Limitations**
- For now, you must bring curves into the node tree with an "Object
Info" node. Changes to the curve modifier stack will come later.
- Converting to a mesh is necessary to visualize the curve data.
Further progress can be tracked in: T87245
Higher level design document: https://wiki.blender.org/wiki/Modules/Physics_Nodes/Projects/EverythingNodes/CurveNodes
Differential Revision: https://developer.blender.org/D11091
2021-05-03 12:29:17 -05:00
|
|
|
void register_node_type_geo_curve_to_mesh(void);
|
2021-06-14 12:51:25 -05:00
|
|
|
void register_node_type_geo_curve_to_points(void);
|
2021-05-07 15:37:06 -05:00
|
|
|
void register_node_type_geo_curve_resample(void);
|
2021-06-14 13:28:38 -05:00
|
|
|
void register_node_type_geo_curve_reverse(void);
|
2021-06-17 11:39:23 -05:00
|
|
|
void register_node_type_geo_curve_subdivide(void);
|
2021-06-01 17:32:03 -04:00
|
|
|
void register_node_type_geo_delete_geometry(void);
|
2020-12-02 13:25:25 +01:00
|
|
|
void register_node_type_geo_edge_split(void);
|
2021-05-20 12:29:06 +02:00
|
|
|
void register_node_type_geo_input_material(void);
|
2021-02-07 17:21:21 -06:00
|
|
|
void register_node_type_geo_is_viewport(void);
|
|
|
|
void register_node_type_geo_join_geometry(void);
|
2021-05-20 12:22:13 +02:00
|
|
|
void register_node_type_geo_material_assign(void);
|
2021-05-21 09:43:55 +02:00
|
|
|
void register_node_type_geo_material_replace(void);
|
2021-03-16 17:35:12 -04:00
|
|
|
void register_node_type_geo_mesh_primitive_circle(void);
|
|
|
|
void register_node_type_geo_mesh_primitive_cone(void);
|
|
|
|
void register_node_type_geo_mesh_primitive_cube(void);
|
|
|
|
void register_node_type_geo_mesh_primitive_cylinder(void);
|
2021-03-26 13:09:35 -04:00
|
|
|
void register_node_type_geo_mesh_primitive_grid(void);
|
2021-03-16 17:35:12 -04:00
|
|
|
void register_node_type_geo_mesh_primitive_ico_sphere(void);
|
|
|
|
void register_node_type_geo_mesh_primitive_line(void);
|
|
|
|
void register_node_type_geo_mesh_primitive_uv_sphere(void);
|
2021-05-28 10:42:22 -04:00
|
|
|
void register_node_type_geo_mesh_to_curve(void);
|
2021-02-07 17:21:21 -06:00
|
|
|
void register_node_type_geo_object_info(void);
|
2020-12-02 13:25:25 +01:00
|
|
|
void register_node_type_geo_point_distribute(void);
|
|
|
|
void register_node_type_geo_point_instance(void);
|
2021-02-07 17:21:21 -06:00
|
|
|
void register_node_type_geo_point_rotate(void);
|
2021-01-13 10:30:42 -06:00
|
|
|
void register_node_type_geo_point_scale(void);
|
2021-02-07 17:21:21 -06:00
|
|
|
void register_node_type_geo_point_separate(void);
|
2021-01-13 10:30:42 -06:00
|
|
|
void register_node_type_geo_point_translate(void);
|
2021-01-26 17:37:58 +01:00
|
|
|
void register_node_type_geo_points_to_volume(void);
|
2021-06-17 09:31:53 +01:00
|
|
|
void register_node_type_geo_raycast(void);
|
2021-02-07 17:21:21 -06:00
|
|
|
void register_node_type_geo_sample_texture(void);
|
2021-06-08 16:01:54 +02:00
|
|
|
void register_node_type_geo_select_by_material(void);
|
2021-06-15 22:31:57 -05:00
|
|
|
void register_node_type_geo_separate_components(void);
|
2021-03-08 13:37:49 -05:00
|
|
|
void register_node_type_geo_subdivide(void);
|
2021-03-17 14:40:38 -04:00
|
|
|
void register_node_type_geo_subdivision_surface(void);
|
2021-04-19 10:38:50 +02:00
|
|
|
void register_node_type_geo_switch(void);
|
2021-02-07 17:21:21 -06:00
|
|
|
void register_node_type_geo_transform(void);
|
|
|
|
void register_node_type_geo_triangulate(void);
|
2021-02-05 16:20:14 +01:00
|
|
|
void register_node_type_geo_volume_to_mesh(void);
|
2020-04-20 10:58:43 +02:00
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|