Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Tönne <lukas.toenne@gmail.com>2022-06-29 22:50:35 +0300
committerLukas Tönne <lukas.toenne@gmail.com>2022-06-29 22:50:35 +0300
commitfa2084ae58a77b1201289b6bedac427f73c762d1 (patch)
treefd99401eb8e742415f59332d115f0f34699f92b6 /release/scripts/startup/nodeitems_builtins.py
parent0ea282f7462070041b2599389ba61c7ef50426b5 (diff)
Geometry Nodes: Experimental rigid body integration.
This is an exploration of how geometry nodes might be coupled with rigid bodies and iterative simulations in general. It's a very rough-and-ready implementation, not meant as a final version, but rather to prove the possiblity and to find challenging areas where redesign is needed. The core additions are: - Geometry nodes to flag points and/or instances as rigid bodies. - Depsgraph integration to ensure the necessary order of operations between modifiers and rigid body pre/post simulation updates. - Simple cache feature to store arbitrary geometry and loop back into the next iteration.
Diffstat (limited to 'release/scripts/startup/nodeitems_builtins.py')
-rw-r--r--release/scripts/startup/nodeitems_builtins.py24
1 files changed, 21 insertions, 3 deletions
diff --git a/release/scripts/startup/nodeitems_builtins.py b/release/scripts/startup/nodeitems_builtins.py
index 21bb3d01616..18475106450 100644
--- a/release/scripts/startup/nodeitems_builtins.py
+++ b/release/scripts/startup/nodeitems_builtins.py
@@ -246,7 +246,7 @@ def point_node_items(context):
# Generic node group items generator for shader, compositor, geometry and texture node groups.
-def node_group_items(context):
+def node_group_items(context, tree_types=None):
if context is None:
return
space = context.space_data
@@ -261,6 +261,8 @@ def node_group_items(context):
ntree = space.edit_tree
if not ntree:
return
+ if not tree_types:
+ tree_types = {ntree.bl_idname,}
yield NodeItemCustom(draw=lambda self, layout, context: layout.separator())
@@ -275,7 +277,7 @@ def node_group_items(context):
return False
for group in context.blend_data.node_groups:
- if group.bl_idname != ntree.bl_idname:
+ if group.bl_idname not in tree_types:
continue
# filter out recursive groups
if contains_group(group, ntree):
@@ -732,7 +734,23 @@ geometry_node_categories = [
NodeItem("GeometryNodeVolumeCube"),
NodeItem("GeometryNodeVolumeToMesh"),
]),
- GeometryNodeCategory("GEO_GROUP", "Group", items=node_group_items),
+ GeometryNodeCategory("GEO_SIMULATION", "Simulation", items=[
+ NodeItem("SimulationNodeAddCollisionShapes"),
+ NodeItem("SimulationNodeAddRigidBodies"),
+ NodeItem("SimulationNodeRemoveRigidBodies"),
+ NodeItem("SimulationNodeSetRigidBodyCollisionResponse"),
+ NodeItem("SimulationNodeSetRigidBodyDynamics"),
+ NodeItem("SimulationNodeSetRigidBodyEffectorWeights"),
+ NodeItem("SimulationNodeSetRigidBodyShape"),
+ NodeItem("SimulationNodeRigidBodyMass"),
+ NodeItem("SimulationNodeRigidBodyVelocity"),
+ NodeItem("SimulationNodeSetRigidBodyVelocity"),
+ NodeItem("SimulationNodeSetRigidBodyAngularVelocity"),
+ NodeItem("SimulationNodeAddRigidBodyImpulse"),
+ NodeItem("SimulationNodeApplyRigidBodyForce"),
+ NodeItem("SimulationNodeApplyRigidBodyTorque"),
+ ]),
+ GeometryNodeCategory("GEO_GROUP", "Group", items=lambda context: node_group_items(context, {'GeometryNodeTree', 'SimulationNodeTree'})),
GeometryNodeCategory("GEO_LAYOUT", "Layout", items=[
NodeItem("NodeFrame"),
NodeItem("NodeReroute"),