[Bf-blender-cvs] [c6cf1082cb2] functions: new Multiply Vector with Float node
Jacques Lucke
noreply at git.blender.org
Wed Dec 18 13:53:47 CET 2019
Commit: c6cf1082cb2e206bf4a7feb87385d7849e96d662
Author: Jacques Lucke
Date: Wed Dec 18 12:53:02 2019 +0100
Branches: functions
https://developer.blender.org/rBc6cf1082cb2e206bf4a7feb87385d7849e96d662
new Multiply Vector with Float node
===================================================================
M release/scripts/startup/nodes/function_nodes/math.py
M source/blender/functions/intern/inlined_tree_multi_function_network/mappings_nodes.cc
===================================================================
diff --git a/release/scripts/startup/nodes/function_nodes/math.py b/release/scripts/startup/nodes/function_nodes/math.py
index 8b921a5a360..6ec549e9b54 100644
--- a/release/scripts/startup/nodes/function_nodes/math.py
+++ b/release/scripts/startup/nodes/function_nodes/math.py
@@ -21,36 +21,35 @@ def create_variadic_math_node(data_type, idname, label):
return MathNode
-def create_two_inputs_math_node(data_type, idname, label):
- return create_two_inputs_other_output_math_node(data_type, data_type, idname, label)
-
-def create_single_input_math_node(data_type, idname, label):
+def create_single_type_two_inputs_math_node(data_type, idname, label):
+ return create_two_inputs_math_node(data_type, data_type, data_type, idname, label)
+def create_two_inputs_math_node(input_type1, input_type2, output_type, idname, label):
class MathNode(bpy.types.Node, FunctionNode):
bl_idname = idname
bl_label = label
- use_list: NodeBuilder.VectorizedProperty()
+ use_list__a: NodeBuilder.VectorizedProperty()
+ use_list__b: NodeBuilder.VectorizedProperty()
def declaration(self, builder: NodeBuilder):
- builder.vectorized_input("input", "use_list", "Value", "Values", data_type)
- builder.vectorized_output("output", ["use_list"], "Result", "Result", data_type)
+ builder.vectorized_input("a", "use_list__a", "A", "A", input_type1)
+ builder.vectorized_input("b", "use_list__b", "B", "B", input_type2)
+ builder.vectorized_output("result", ["use_list__a", "use_list__b"], "Result", "Result", output_type)
return MathNode
-def create_two_inputs_other_output_math_node(input_type, output_type, idname, label):
+def create_single_input_math_node(data_type, idname, label):
class MathNode(bpy.types.Node, FunctionNode):
bl_idname = idname
bl_label = label
- use_list__a: NodeBuilder.VectorizedProperty()
- use_list__b: NodeBuilder.VectorizedProperty()
+ use_list: NodeBuilder.VectorizedProperty()
def declaration(self, builder: NodeBuilder):
- builder.vectorized_input("a", "use_list__a", "A", "A", input_type)
- builder.vectorized_input("b", "use_list__b", "B", "B", input_type)
- builder.vectorized_output("result", ["use_list__a", "use_list__b"], "Result", "Result", output_type)
+ builder.vectorized_input("input", "use_list", "Value", "Values", data_type)
+ builder.vectorized_output("output", ["use_list"], "Result", "Result", data_type)
return MathNode
@@ -59,9 +58,9 @@ MultiplyFloatsNode = create_variadic_math_node("Float", "fn_MultiplyFloatsNode",
MinimumFloatsNode = create_variadic_math_node("Float", "fn_MinimumFloatsNode", "Minimum Floats")
MaximumFloatsNode = create_variadic_math_node("Float", "fn_MaximumFloatsNode", "Maximum Floats")
-SubtractFloatsNode = create_two_inputs_math_node("Float", "fn_SubtractFloatsNode", "Subtract Floats")
-DivideFloatsNode = create_two_inputs_math_node("Float", "fn_DivideFloatsNode", "Divide Floats")
-PowerFloatsNode = create_two_inputs_math_node("Float", "fn_PowerFloatsNode", "Power Floats")
+SubtractFloatsNode = create_single_type_two_inputs_math_node("Float", "fn_SubtractFloatsNode", "Subtract Floats")
+DivideFloatsNode = create_single_type_two_inputs_math_node("Float", "fn_DivideFloatsNode", "Divide Floats")
+PowerFloatsNode = create_single_type_two_inputs_math_node("Float", "fn_PowerFloatsNode", "Power Floats")
SqrtFloatNode = create_single_input_math_node("Float", "fn_SqrtFloatNode", "Sqrt Float")
AbsFloatNode = create_single_input_math_node("Float", "fn_AbsoluteFloatNode", "Absolute Float")
@@ -69,15 +68,16 @@ SineFloatNode = create_single_input_math_node("Float", "fn_SineFloatNode", "Sine
CosineFloatNode = create_single_input_math_node("Float", "fn_CosineFloatNode", "Cosine")
AddVectorsNode = create_variadic_math_node("Vector", "fn_AddVectorsNode", "Add Vectors")
-SubtractVectorsNode = create_two_inputs_math_node("Vector", "fn_SubtractVectorsNode", "Subtract Vectors")
+SubtractVectorsNode = create_single_type_two_inputs_math_node("Vector", "fn_SubtractVectorsNode", "Subtract Vectors")
MultiplyVectorsNode = create_variadic_math_node("Vector", "fn_MultiplyVectorsNode", "Multiply Vectors")
-DivideVectorsNode = create_two_inputs_math_node("Vector", "fn_DivideVectorsNode", "Divide Vectors")
-
-VectorCrossProductNode = create_two_inputs_math_node("Vector", "fn_VectorCrossProductNode", "Cross Product")
-VectorReflectNode = create_two_inputs_math_node("Vector", "fn_ReflectVectorNode", "Reflect Vector")
-VectorProjectNode = create_two_inputs_math_node("Vector", "fn_ProjectVectorNode", "Project Vector")
-VectorDotProductNode = create_two_inputs_other_output_math_node("Vector", "Float", "fn_VectorDotProductNode", "Dot Product")
-VectorDistanceNode = create_two_inputs_other_output_math_node("Vector", "Float", "fn_VectorDistanceNode", "Vector Distance")
+DivideVectorsNode = create_single_type_two_inputs_math_node("Vector", "fn_DivideVectorsNode", "Divide Vectors")
+MultiplyVectorWithFloatNode = create_two_inputs_math_node("Vector", "Float", "Vector", "fn_MultiplyVectorWithFloatNode", "Multiply Vector with Float")
+
+VectorCrossProductNode = create_single_type_two_inputs_math_node("Vector", "fn_VectorCrossProductNode", "Cross Product")
+VectorReflectNode = create_single_type_two_inputs_math_node("Vector", "fn_ReflectVectorNode", "Reflect Vector")
+VectorProjectNode = create_single_type_two_inputs_math_node("Vector", "fn_ProjectVectorNode", "Project Vector")
+VectorDotProductNode = create_two_inputs_math_node("Vector", "Vector", "Float", "fn_VectorDotProductNode", "Dot Product")
+VectorDistanceNode = create_two_inputs_math_node("Vector", "Vector", "Float", "fn_VectorDistanceNode", "Vector Distance")
BooleanAndNode = create_variadic_math_node("Boolean", "fn_BooleanAndNode", "And")
BooleanOrNode = create_variadic_math_node("Boolean", "fn_BooleanOrNode", "Or")
diff --git a/source/blender/functions/intern/inlined_tree_multi_function_network/mappings_nodes.cc b/source/blender/functions/intern/inlined_tree_multi_function_network/mappings_nodes.cc
index a77b90bf9a8..e738cab2698 100644
--- a/source/blender/functions/intern/inlined_tree_multi_function_network/mappings_nodes.cc
+++ b/source/blender/functions/intern/inlined_tree_multi_function_network/mappings_nodes.cc
@@ -360,6 +360,11 @@ static void INSERT_vector_distance(VNodeMFNetworkBuilder &builder)
build_math_fn_in2_out1<float3, float3, float>(builder, float3::distance);
}
+static void INSERT_multiply_vector_with_float(VNodeMFNetworkBuilder &builder)
+{
+ build_math_fn_in2_out1<float3, float, float3>(builder, [](float3 a, float b) { return a * b; });
+}
+
static void INSERT_boolean_and(VNodeMFNetworkBuilder &builder)
{
build_variadic_math_fn(
@@ -594,6 +599,8 @@ void add_inlined_tree_node_mapping_info(VTreeMultiFunctionMappings &mappings)
mappings.xnode_inserters.add_new("fn_ProjectVectorNode", INSERT_project_vector);
mappings.xnode_inserters.add_new("fn_VectorDotProductNode", INSERT_vector_dot_product);
mappings.xnode_inserters.add_new("fn_VectorDistanceNode", INSERT_vector_distance);
+ mappings.xnode_inserters.add_new("fn_MultiplyVectorWithFloatNode",
+ INSERT_multiply_vector_with_float);
mappings.xnode_inserters.add_new("fn_BooleanAndNode", INSERT_boolean_and);
mappings.xnode_inserters.add_new("fn_BooleanOrNode", INSERT_boolean_or);
More information about the Bf-blender-cvs
mailing list