[Bf-blender-cvs] [c9a9e8670be] functions: pass index to function in displace modifier

Jacques Lucke noreply at git.blender.org
Mon Feb 25 10:30:47 CET 2019


Commit: c9a9e8670be09ddcc2868b838cc9fbcf0b8e551c
Author: Jacques Lucke
Date:   Fri Feb 22 14:28:33 2019 +0100
Branches: functions
https://developer.blender.org/rBc9a9e8670be09ddcc2868b838cc9fbcf0b8e551c

pass index to function in displace modifier

===================================================================

M	release/scripts/startup/function_nodes/menu.py
M	release/scripts/startup/function_nodes/nodes/__init__.py
A	release/scripts/startup/function_nodes/nodes/random_number.py
M	source/blender/functions/nodes/nodes.cpp
M	source/blender/modifiers/intern/MOD_displace.c

===================================================================

diff --git a/release/scripts/startup/function_nodes/menu.py b/release/scripts/startup/function_nodes/menu.py
index 1d98803309b..ccc33a89e4b 100644
--- a/release/scripts/startup/function_nodes/menu.py
+++ b/release/scripts/startup/function_nodes/menu.py
@@ -17,6 +17,7 @@ def draw_menu(self, context):
     insert_node(layout, "fn_SeparateVectorNode", "Separate Vector")
     insert_node(layout, "fn_VectorDistanceNode", "Vector Distance")
     insert_node(layout, "fn_ClampNode", "Clamp")
+    insert_node(layout, "fn_RandomNumberNode", "Random Number")
     insert_node(layout, "fn_ObjectTransformsNode", "Object Transforms")
 
 def insert_node(layout, type, text, settings = {}, icon = "NONE"):
diff --git a/release/scripts/startup/function_nodes/nodes/__init__.py b/release/scripts/startup/function_nodes/nodes/__init__.py
index 7be89bc2b39..67de0140269 100644
--- a/release/scripts/startup/function_nodes/nodes/__init__.py
+++ b/release/scripts/startup/function_nodes/nodes/__init__.py
@@ -8,4 +8,5 @@ from . import (
     object_transforms,
     vector_distance,
     clamp,
+    random_number,
 )
\ No newline at end of file
diff --git a/release/scripts/startup/function_nodes/nodes/random_number.py b/release/scripts/startup/function_nodes/nodes/random_number.py
new file mode 100644
index 00000000000..868098f485b
--- /dev/null
+++ b/release/scripts/startup/function_nodes/nodes/random_number.py
@@ -0,0 +1,17 @@
+import bpy
+from .. base import FunctionNode
+
+class RandomNumberNode(bpy.types.Node, FunctionNode):
+    bl_idname = "fn_RandomNumberNode"
+    bl_label = "Random Number"
+
+    def get_sockets(self):
+        return [
+            ("fn_IntegerSocket", "Seed"),
+            ("fn_FloatSocket", "Min"),
+            ("fn_FloatSocket", "Max"),
+        ], [
+            ("fn_FloatSocket", "Value"),
+        ]
+
+bpy.utils.register_class(RandomNumberNode)
\ No newline at end of file
diff --git a/source/blender/functions/nodes/nodes.cpp b/source/blender/functions/nodes/nodes.cpp
index 87ca7b4b204..df4012eedf4 100644
--- a/source/blender/functions/nodes/nodes.cpp
+++ b/source/blender/functions/nodes/nodes.cpp
@@ -13,7 +13,8 @@ namespace FN { namespace Nodes {
 
 	InsertNode get_node_inserter(const std::string &name)
 	{
-		return node_inserters.lookup_default(name, nullptr);
+		BLI_assert(node_inserters.contains(name));
+		return node_inserters.lookup(name);
 	}
 
 	InsertSocket get_socket_inserter(const std::string &name)
diff --git a/source/blender/modifiers/intern/MOD_displace.c b/source/blender/modifiers/intern/MOD_displace.c
index 54f61ecd161..8abb1683d76 100644
--- a/source/blender/modifiers/intern/MOD_displace.c
+++ b/source/blender/modifiers/intern/MOD_displace.c
@@ -72,9 +72,10 @@ static FnFunction getCurrentFunction(DisplaceModifierData *dmd)
 	bNodeTree *tree = (bNodeTree *)DEG_get_original_id((ID *)dmd->function_tree);
 
 	FnType float_ty = FN_type_borrow_float();
+	FnType int32_ty = FN_type_borrow_int32();
 	FnType fvec3_ty = FN_type_borrow_fvec3();
 
-	FnType inputs[] = { fvec3_ty, NULL };
+	FnType inputs[] = { fvec3_ty, int32_ty, NULL };
 	FnType outputs[] = { float_ty, NULL };
 
 	return FN_function_get_with_signature(tree, inputs, outputs);
@@ -220,6 +221,7 @@ static void displaceModifier_do_task(
 		FnTuple fn_in = FN_tuple_for_input(data->calc_weight_func);
 		FnTuple fn_out = FN_tuple_for_output(data->calc_weight_func);
 		FN_tuple_set_float_vector_3(fn_in, 0, vertexCos[iter]);
+		FN_tuple_set_int32(fn_in, 1, iter);
 		FnTupleCallBody callable = FN_function_get_callable(data->calc_weight_func);
 		FN_function_call(callable, fn_in, fn_out);
 		weight = FN_tuple_get_float(fn_out, 0);



More information about the Bf-blender-cvs mailing list