Geometry Nodes: Easing Node #109405

Closed
Charlie Jolly wants to merge 7 commits from CharlieJolly/blender:gn-easing-node into main

When changing the target branch, be careful to rebase the branch in your fork to match. See documentation.
6 changed files with 1053 additions and 0 deletions

View File

@ -587,6 +587,7 @@ class NODE_MT_category_GEO_UTILITIES_MATH(Menu):
node_add_menu.add_node_type(layout, "FunctionNodeBooleanMath")
node_add_menu.add_node_type(layout, "ShaderNodeClamp")
node_add_menu.add_node_type(layout, "FunctionNodeCompare")
node_add_menu.add_node_type(layout, "FunctionNodeEasing")
node_add_menu.add_node_type(layout, "ShaderNodeFloatCurve")
node_add_menu.add_node_type(layout, "FunctionNodeFloatToInt")
node_add_menu.add_node_type(layout, "ShaderNodeMapRange")

View File

@ -1344,6 +1344,7 @@ void BKE_nodetree_remove_layer_n(struct bNodeTree *ntree, struct Scene *scene, i
#define FN_NODE_ROTATE_VECTOR 1229
#define FN_NODE_ROTATE_ROTATION 1230
#define FN_NODE_INVERT_ROTATION 1231
#define FN_NODE_EASING 1232
/** \} */

View File

@ -1865,6 +1865,13 @@ typedef struct NodeFunctionCompare {
char _pad[1];
} NodeFunctionCompare;
typedef struct NodeEasing {
/* NodeEasingOperation. */
int8_t operation;
/* NodeEasingDirection. */
int8_t direction;
} NodeEasing;
typedef struct NodeCombSepColor {
/** #NodeCombSepColorMode */
int8_t mode;
@ -2262,6 +2269,31 @@ typedef enum NodeCompareOperation {
NODE_COMPARE_COLOR_DARKER = 7,
} NodeCompareOperation;
/** Easing operations. */
typedef enum NodeEasingOperation {
NODE_EASING_LINEAR = 0,
NODE_EASING_BACK = 1,
NODE_EASING_BOUNCE = 2,
NODE_EASING_CIRC = 3,
NODE_EASING_CUBIC = 4,
NODE_EASING_ELASTIC = 5,
NODE_EASING_EXPO = 6,
NODE_EASING_QUAD = 7,
NODE_EASING_QUART = 8,
NODE_EASING_QUINT = 9,
NODE_EASING_SINE = 10,
NODE_EASING_VARIABLE = 11,
NODE_EASING_STEPS = 12,
NODE_EASING_CUBIC_BEZIER = 13,
NODE_EASING_BIAS = 14,
NODE_EASING_SPRING = 15,
NODE_EASING_SINEWAVE = 16,
NODE_EASING_SAWTOOTH = 17,
NODE_EASING_TRIANGLE = 18,
NODE_EASING_SQUARE = 19,
NODE_EASING_SNAKE = 20
} NodeEasingOperation;
typedef enum FloatToIntRoundingMode {
FN_NODE_FLOAT_TO_INT_ROUND = 0,
FN_NODE_FLOAT_TO_INT_FLOOR = 1,

View File

@ -270,6 +270,7 @@ DefNode(FunctionNode, FN_NODE_COMBINE_COLOR, 0, "COMBINE_COLOR", CombineColor, "
DefNode(FunctionNode, FN_NODE_QUATERNION_TO_ROTATION, 0, "QUATERNION_TO_ROTATION", QuaternionToRotation, "Quaternion to Rotation", "")
DefNode(FunctionNode, FN_NODE_COMPARE, 0, "COMPARE", Compare, "Compare", "")
DefNode(FunctionNode, FN_NODE_EULER_TO_ROTATION, 0, "EULER_TO_ROTATION", EulerToRotation, "Euler to Rotation", "")
DefNode(FunctionNode, FN_NODE_EASING, 0, "EASING", Easing, "Easing", "")
DefNode(FunctionNode, FN_NODE_FLOAT_TO_INT, def_float_to_int, "FLOAT_TO_INT", FloatToInt, "Float to Integer", "")
DefNode(FunctionNode, FN_NODE_INPUT_BOOL, def_fn_input_bool, "INPUT_BOOL", InputBool, "Boolean", "")
DefNode(FunctionNode, FN_NODE_INPUT_COLOR, def_fn_input_color, "INPUT_COLOR", InputColor, "Color", "")

View File

@ -23,6 +23,7 @@ set(SRC
nodes/node_fn_boolean_math.cc
nodes/node_fn_combine_color.cc
nodes/node_fn_compare.cc
nodes/node_fn_easing.cc
nodes/node_fn_euler_to_rotation.cc
nodes/node_fn_float_to_int.cc
nodes/node_fn_input_bool.cc

File diff suppressed because it is too large Load Diff