diff options
author | Hans Goudey <h.goudey@me.com> | 2022-09-26 20:36:13 +0300 |
---|---|---|
committer | Hans Goudey <h.goudey@me.com> | 2022-09-26 21:10:42 +0300 |
commit | 837144b4577f161baf1625f8a5478c83a088ea0f (patch) | |
tree | 4cb015aec5d1f8f5d1c6d0ff1ca060eba8b7f387 /release/scripts/startup/nodeitems_builtins.py | |
parent | 8a6dc0fac71cc5eb6fc945295b9c1f51f72cc407 (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.py | 305 |
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__": |