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:
authorHans Goudey <h.goudey@me.com>2022-09-26 20:36:13 +0300
committerHans Goudey <h.goudey@me.com>2022-09-26 21:10:42 +0300
commit837144b4577f161baf1625f8a5478c83a088ea0f (patch)
tree4cb015aec5d1f8f5d1c6d0ff1ca060eba8b7f387 /release/scripts/startup/nodeitems_builtins.py
parent8a6dc0fac71cc5eb6fc945295b9c1f51f72cc407 (diff)
Nodes: Use plain menus for geometry nodes add menu
At the cost of slightly more boilerplate code, we can avoid the `NodeItem` and `NodeCategory` abstractions used to build the node add menu. This makes the menus more flexible and more obvious, which will make them easier to extend with assets. The identifiers for the new menu types are inconsistent with regular class naming for backwards compatibility with the old "category" menu naming. Also adds an item for the "Self Object" node missed in dd5131bd700c. Differential Revision: https://developer.blender.org/D15973
Diffstat (limited to 'release/scripts/startup/nodeitems_builtins.py')
-rw-r--r--release/scripts/startup/nodeitems_builtins.py305
1 files changed, 0 insertions, 305 deletions
diff --git a/release/scripts/startup/nodeitems_builtins.py b/release/scripts/startup/nodeitems_builtins.py
index 38629c18ca0..798ac9e37a5 100644
--- a/release/scripts/startup/nodeitems_builtins.py
+++ b/release/scripts/startup/nodeitems_builtins.py
@@ -39,14 +39,6 @@ class TextureNodeCategory(SortedNodeCategory):
return (context.space_data.type == 'NODE_EDITOR' and
context.space_data.tree_type == 'TextureNodeTree')
-
-class GeometryNodeCategory(SortedNodeCategory):
- @classmethod
- def poll(cls, context):
- return (context.space_data.type == 'NODE_EDITOR' and
- context.space_data.tree_type == 'GeometryNodeTree')
-
-
# menu entry for node group tools
def group_tools_draw(_self, layout, _context):
layout.operator("node.group_make")
@@ -63,198 +55,6 @@ node_tree_group_type = {
}
-# Custom Menu for Geometry Node Curves.
-def curve_node_items(context):
- if context is None:
- return
- space = context.space_data
- if not space:
- return
- yield NodeItem("GeometryNodeCurveLength")
- yield NodeItem("GeometryNodeCurveToMesh")
- yield NodeItem("GeometryNodeCurveToPoints")
- yield NodeItem("GeometryNodeDeformCurvesOnSurface")
- yield NodeItem("GeometryNodeFillCurve")
- yield NodeItem("GeometryNodeFilletCurve")
- yield NodeItem("GeometryNodeResampleCurve")
- yield NodeItem("GeometryNodeReverseCurve")
- yield NodeItem("GeometryNodeSampleCurve")
- yield NodeItem("GeometryNodeSubdivideCurve")
- yield NodeItem("GeometryNodeTrimCurve")
- yield NodeItemCustom(draw=lambda self, layout, context: layout.separator())
- yield NodeItem("GeometryNodeInputControlPointNeighbors")
- yield NodeItem("GeometryNodeInputCurveHandlePositions")
- yield NodeItem("GeometryNodeInputTangent")
- yield NodeItem("GeometryNodeInputCurveTilt")
- yield NodeItem("GeometryNodeCurveEndpointSelection")
- yield NodeItem("GeometryNodeCurveHandleTypeSelection")
- yield NodeItem("GeometryNodeInputSplineCyclic")
- yield NodeItem("GeometryNodeSplineLength")
- yield NodeItem("GeometryNodeSplineParameter")
- yield NodeItem("GeometryNodeInputSplineResolution")
- yield NodeItemCustom(draw=lambda self, layout, context: layout.separator())
- yield NodeItem("GeometryNodeSetCurveRadius")
- yield NodeItem("GeometryNodeSetCurveTilt")
- yield NodeItem("GeometryNodeSetCurveHandlePositions")
- yield NodeItem("GeometryNodeCurveSetHandles")
- yield NodeItem("GeometryNodeSetSplineCyclic")
- yield NodeItem("GeometryNodeSetSplineResolution")
- yield NodeItem("GeometryNodeCurveSplineType")
-
-
-# Custom Menu for Geometry Node Mesh.
-def mesh_node_items(context):
- if context is None:
- return
- space = context.space_data
- if not space:
- return
- yield NodeItem("GeometryNodeDualMesh")
- yield NodeItem("GeometryNodeEdgePathsToCurves")
- yield NodeItem("GeometryNodeEdgePathsToSelection")
- yield NodeItem("GeometryNodeExtrudeMesh")
- yield NodeItem("GeometryNodeFlipFaces")
- yield NodeItem("GeometryNodeMeshBoolean")
- yield NodeItem("GeometryNodeMeshToCurve")
- yield NodeItem("GeometryNodeMeshToPoints")
- yield NodeItem("GeometryNodeMeshToVolume")
- yield NodeItem("GeometryNodeSampleNearestSurface")
- yield NodeItem("GeometryNodeScaleElements")
- yield NodeItem("GeometryNodeSplitEdges")
- yield NodeItem("GeometryNodeSubdivideMesh")
- yield NodeItem("GeometryNodeSubdivisionSurface")
- yield NodeItem("GeometryNodeTriangulate")
- yield NodeItemCustom(draw=lambda self, layout, context: layout.separator())
- yield NodeItem("GeometryNodeInputMeshEdgeAngle")
- yield NodeItem("GeometryNodeInputMeshEdgeNeighbors")
- yield NodeItem("GeometryNodeInputMeshEdgeVertices")
- yield NodeItem("GeometryNodeInputMeshFaceArea")
- yield NodeItem("GeometryNodeInputMeshFaceNeighbors")
- yield NodeItem("GeometryNodeMeshFaceSetBoundaries")
- yield NodeItem("GeometryNodeInputMeshFaceIsPlanar")
- yield NodeItem("GeometryNodeInputShadeSmooth")
- yield NodeItem("GeometryNodeInputMeshIsland")
- yield NodeItem("GeometryNodeInputShortestEdgePaths")
- yield NodeItem("GeometryNodeInputMeshVertexNeighbors")
- yield NodeItemCustom(draw=lambda self, layout, context: layout.separator())
- yield NodeItem("GeometryNodeSetShadeSmooth")
-
-
-# Custom Menu for Geometry Nodes "Geometry" category.
-def geometry_node_items(context):
- if context is None:
- return
- space = context.space_data
- if not space:
- return
- yield NodeItem("GeometryNodeBoundBox")
- yield NodeItem("GeometryNodeConvexHull")
- yield NodeItem("GeometryNodeDeleteGeometry")
- yield NodeItem("GeometryNodeDuplicateElements")
- yield NodeItem("GeometryNodeProximity")
- yield NodeItem("GeometryNodeGeometryToInstance")
- yield NodeItem("GeometryNodeJoinGeometry")
- yield NodeItem("GeometryNodeMergeByDistance")
- yield NodeItem("GeometryNodeRaycast")
- yield NodeItem("GeometryNodeSampleIndex")
- yield NodeItem("GeometryNodeSampleNearest")
- yield NodeItem("GeometryNodeSeparateComponents")
- yield NodeItem("GeometryNodeSeparateGeometry")
- yield NodeItem("GeometryNodeTransform")
- yield NodeItemCustom(draw=lambda self, layout, context: layout.separator())
- yield NodeItem("GeometryNodeSetID")
- yield NodeItem("GeometryNodeSetPosition")
-
-
-# Custom Menu for UV Nodes.
-def uv_node_items(context):
- if context is None:
- return
- space = context.space_data
- if not space:
- return
- yield NodeItem("GeometryNodeUVPackIslands")
- yield NodeItem("GeometryNodeUVUnwrap")
-
-
-# Custom Menu for Geometry Node Input Nodes.
-def geometry_input_node_items(context):
- if context is None:
- return
- space = context.space_data
- if not space:
- return
- yield NodeItem("FunctionNodeInputBool")
- yield NodeItem("GeometryNodeCollectionInfo")
- yield NodeItem("FunctionNodeInputColor")
- yield NodeItem("FunctionNodeInputInt")
- yield NodeItem("GeometryNodeIsViewport")
- yield NodeItem("GeometryNodeInputMaterial")
- yield NodeItem("GeometryNodeObjectInfo")
- yield NodeItem("FunctionNodeInputString")
- yield NodeItem("ShaderNodeValue")
- yield NodeItem("FunctionNodeInputVector")
- yield NodeItemCustom(draw=lambda self, layout, context: layout.separator())
- yield NodeItem("GeometryNodeInputID")
- yield NodeItem("GeometryNodeInputIndex")
- yield NodeItem("GeometryNodeInputNamedAttribute")
- yield NodeItem("GeometryNodeInputNormal")
- yield NodeItem("GeometryNodeInputPosition")
- yield NodeItem("GeometryNodeInputRadius")
- yield NodeItem("GeometryNodeInputSceneTime")
-
-
-# Custom Menu for Geometry Node Instance Nodes.
-def geometry_instance_node_items(context):
- if context is None:
- return
- space = context.space_data
- if not space:
- return
- yield NodeItem("GeometryNodeInstanceOnPoints")
- yield NodeItem("GeometryNodeInstancesToPoints")
- yield NodeItem("GeometryNodeRealizeInstances")
- yield NodeItem("GeometryNodeRotateInstances")
- yield NodeItem("GeometryNodeScaleInstances")
- yield NodeItem("GeometryNodeTranslateInstances")
- yield NodeItemCustom(draw=lambda self, layout, context: layout.separator())
- yield NodeItem("GeometryNodeInputInstanceRotation")
- yield NodeItem("GeometryNodeInputInstanceScale")
-
-
-# Custom Menu for Material Nodes.
-def geometry_material_node_items(context):
- if context is None:
- return
- space = context.space_data
- if not space:
- return
- yield NodeItem("GeometryNodeReplaceMaterial")
- yield NodeItemCustom(draw=lambda self, layout, context: layout.separator())
- yield NodeItem("GeometryNodeInputMaterialIndex")
- yield NodeItem("GeometryNodeMaterialSelection")
- yield NodeItemCustom(draw=lambda self, layout, context: layout.separator())
- yield NodeItem("GeometryNodeSetMaterial")
- yield NodeItem("GeometryNodeSetMaterialIndex")
-
-
-# Custom Menu for Geometry Node Points.
-def point_node_items(context):
- if context is None:
- return
- space = context.space_data
- if not space:
- return
- yield NodeItem("GeometryNodeDistributePointsInVolume")
- yield NodeItem("GeometryNodeDistributePointsOnFaces")
- yield NodeItem("GeometryNodePoints")
- yield NodeItem("GeometryNodePointsToVertices")
- yield NodeItem("GeometryNodePointsToVolume")
- yield NodeItemCustom(draw=lambda self, layout, context: layout.separator())
- yield NodeItemCustom(draw=lambda self, layout, context: layout.separator())
- yield NodeItem("GeometryNodeSetPointRadius")
-
-
# Generic node group items generator for shader, compositor, geometry and texture node groups.
def node_group_items(context):
if context is None:
@@ -648,122 +448,17 @@ texture_node_categories = [
]),
]
-geometry_node_categories = [
- # Geometry Nodes
- GeometryNodeCategory("GEO_ATTRIBUTE", "Attribute", items=[
- NodeItem("GeometryNodeCaptureAttribute"),
- NodeItem("GeometryNodeAttributeDomainSize"),
- NodeItem("GeometryNodeAttributeStatistic"),
- NodeItem("GeometryNodeRemoveAttribute"),
- NodeItem("GeometryNodeStoreNamedAttribute"),
- ]),
- GeometryNodeCategory("GEO_COLOR", "Color", items=[
- NodeItem("ShaderNodeMix", label="Mix Color", settings={"data_type": "'RGBA'"}),
- NodeItem("ShaderNodeRGBCurve"),
- NodeItem("ShaderNodeValToRGB"),
- NodeItem("FunctionNodeSeparateColor"),
- NodeItem("FunctionNodeCombineColor"),
- ]),
- GeometryNodeCategory("GEO_CURVE", "Curve", items=curve_node_items),
- GeometryNodeCategory("GEO_PRIMITIVES_CURVE", "Curve Primitives", items=[
- NodeItem("GeometryNodeCurvePrimitiveLine"),
- NodeItem("GeometryNodeCurvePrimitiveCircle"),
- NodeItem("GeometryNodeCurveStar"),
- NodeItem("GeometryNodeCurveSpiral"),
- NodeItem("GeometryNodeCurveArc"),
- NodeItem("GeometryNodeCurveQuadraticBezier"),
- NodeItem("GeometryNodeCurvePrimitiveQuadrilateral"),
- NodeItem("GeometryNodeCurvePrimitiveBezierSegment"),
- ]),
- GeometryNodeCategory("GEO_GEOMETRY", "Geometry", items=geometry_node_items),
- GeometryNodeCategory("GEO_INPUT", "Input", items=geometry_input_node_items),
- GeometryNodeCategory("GEO_INSTANCE", "Instances", items=geometry_instance_node_items),
- GeometryNodeCategory("GEO_MATERIAL", "Material", items=geometry_material_node_items),
- GeometryNodeCategory("GEO_MESH", "Mesh", items=mesh_node_items),
- GeometryNodeCategory("GEO_PRIMITIVES_MESH", "Mesh Primitives", items=[
- NodeItem("GeometryNodeMeshCircle"),
- NodeItem("GeometryNodeMeshCone"),
- NodeItem("GeometryNodeMeshCube"),
- NodeItem("GeometryNodeMeshCylinder"),
- NodeItem("GeometryNodeMeshGrid"),
- NodeItem("GeometryNodeMeshIcoSphere"),
- NodeItem("GeometryNodeMeshLine"),
- NodeItem("GeometryNodeMeshUVSphere"),
- ]),
- GeometryNodeCategory("GEO_OUTPUT", "Output", items=[
- NodeItem("GeometryNodeViewer"),
- ]),
- GeometryNodeCategory("GEO_POINT", "Point", items=point_node_items),
- GeometryNodeCategory("GEO_TEXT", "Text", items=[
- NodeItem("FunctionNodeStringLength"),
- NodeItem("FunctionNodeSliceString"),
- NodeItem("FunctionNodeValueToString"),
- NodeItem("GeometryNodeStringJoin"),
- NodeItem("FunctionNodeInputSpecialCharacters"),
- NodeItem("GeometryNodeStringToCurves"),
- NodeItem("FunctionNodeReplaceString"),
- ]),
- GeometryNodeCategory("GEO_TEXTURE", "Texture", items=[
- NodeItem("ShaderNodeTexBrick"),
- NodeItem("ShaderNodeTexChecker"),
- NodeItem("ShaderNodeTexGradient"),
- NodeItem("ShaderNodeTexMagic"),
- NodeItem("ShaderNodeTexMusgrave"),
- NodeItem("ShaderNodeTexNoise"),
- NodeItem("ShaderNodeTexVoronoi"),
- NodeItem("ShaderNodeTexWave"),
- NodeItem("ShaderNodeTexWhiteNoise"),
- NodeItem("GeometryNodeImageTexture"),
- ]),
- GeometryNodeCategory("GEO_UTILITIES", "Utilities", items=[
- NodeItem("GeometryNodeAccumulateField"),
- NodeItem("GeometryNodeFieldAtIndex"),
- NodeItem("GeometryNodeFieldOnDomain"),
- NodeItem("ShaderNodeMapRange"),
- NodeItem("ShaderNodeFloatCurve"),
- NodeItem("ShaderNodeClamp"),
- NodeItem("ShaderNodeMath"),
- NodeItem("FunctionNodeBooleanMath"),
- NodeItem("FunctionNodeRotateEuler"),
- NodeItem("FunctionNodeCompare"),
- NodeItem("ShaderNodeMix"),
- NodeItem("FunctionNodeFloatToInt"),
- NodeItem("GeometryNodeSwitch"),
- NodeItem("FunctionNodeRandomValue"),
- NodeItem("FunctionNodeAlignEulerToVector"),
- ]),
- GeometryNodeCategory("GEO_UV", "UV", items=uv_node_items),
- GeometryNodeCategory("GEO_VECTOR", "Vector", items=[
- NodeItem("ShaderNodeVectorCurve"),
- NodeItem("ShaderNodeSeparateXYZ"),
- NodeItem("ShaderNodeCombineXYZ"),
- NodeItem("ShaderNodeVectorMath"),
- NodeItem("ShaderNodeVectorRotate"),
- ]),
- GeometryNodeCategory("GEO_VOLUME", "Volume", items=[
- NodeItem("GeometryNodeVolumeCube"),
- NodeItem("GeometryNodeVolumeToMesh"),
- ]),
- GeometryNodeCategory("GEO_GROUP", "Group", items=node_group_items),
- GeometryNodeCategory("GEO_LAYOUT", "Layout", items=[
- NodeItem("NodeFrame"),
- NodeItem("NodeReroute"),
- ]),
-]
-
def register():
nodeitems_utils.register_node_categories('SHADER', shader_node_categories)
nodeitems_utils.register_node_categories('COMPOSITING', compositor_node_categories)
nodeitems_utils.register_node_categories('TEXTURE', texture_node_categories)
- nodeitems_utils.register_node_categories('GEOMETRY', geometry_node_categories)
def unregister():
nodeitems_utils.unregister_node_categories('SHADER')
nodeitems_utils.unregister_node_categories('COMPOSITING')
nodeitems_utils.unregister_node_categories('TEXTURE')
- nodeitems_utils.unregister_node_categories('GEOMETRY')
if __name__ == "__main__":