[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