示例#1
0
def point_node_items(context):
    if context is None:
        return
    space = context.space_data
    if not space:
        return

    if geometry_nodes_legacy_poll(context):
        yield NodeItem("GeometryNodeLegacyAlignRotationToVector",
                       poll=geometry_nodes_legacy_poll)
        yield NodeItem("GeometryNodeLegacyPointDistribute",
                       poll=geometry_nodes_legacy_poll)
        yield NodeItem("GeometryNodeLegacyPointInstance",
                       poll=geometry_nodes_legacy_poll)
        yield NodeItem("GeometryNodeLegacyPointScale",
                       poll=geometry_nodes_legacy_poll)
        yield NodeItem("GeometryNodeLegacyPointSeparate",
                       poll=geometry_nodes_legacy_poll)
        yield NodeItem("GeometryNodeLegacyPointTranslate",
                       poll=geometry_nodes_legacy_poll)
        yield NodeItem("GeometryNodeLegacyRotatePoints",
                       poll=geometry_nodes_legacy_poll)
        yield NodeItemCustom(
            draw=lambda self, layout, context: layout.separator())

    yield NodeItem("GeometryNodeDistributePointsOnFaces")
    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")
示例#2
0
def geometry_node_items(context):
    if context is None:
        return
    space = context.space_data
    if not space:
        return

    if geometry_nodes_legacy_poll(context):
        yield NodeItem("GeometryNodeLegacyDeleteGeometry",
                       poll=geometry_nodes_legacy_poll)
        yield NodeItem("GeometryNodeLegacyRaycast",
                       poll=geometry_nodes_legacy_poll)
        yield NodeItemCustom(
            draw=lambda self, layout, context: layout.separator())

    yield NodeItem("GeometryNodeBoundBox")
    yield NodeItem("GeometryNodeConvexHull")
    yield NodeItem("GeometryNodeDeleteGeometry")
    yield NodeItem("GeometryNodeGeometryToInstance")
    yield NodeItem("GeometryNodeMergeByDistance")
    yield NodeItem("GeometryNodeProximity")
    yield NodeItem("GeometryNodeJoinGeometry")
    yield NodeItem("GeometryNodeRaycast")
    yield NodeItem("GeometryNodeSeparateComponents")
    yield NodeItem("GeometryNodeSeparateGeometry")
    yield NodeItem("GeometryNodeTransform")
    yield NodeItemCustom(draw=lambda self, layout, context: layout.separator())
    yield NodeItem("GeometryNodeSetID")
    yield NodeItem("GeometryNodeSetPosition")
示例#3
0
def geometry_input_node_items(context):
    if context is None:
        return
    space = context.space_data
    if not space:
        return

    if geometry_nodes_legacy_poll(context):
        yield NodeItem("FunctionNodeLegacyRandomFloat")
        yield NodeItemCustom(
            draw=lambda self, layout, context: layout.separator())

    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("GeometryNodeInputNormal")
    yield NodeItem("GeometryNodeInputPosition")
    yield NodeItem("GeometryNodeInputRadius")
    yield NodeItem("GeometryNodeInputSceneTime")
示例#4
0
def mesh_node_items(context):
    if context is None:
        return
    space = context.space_data
    if not space:
        return
    yield NodeItem("GeometryNodeDualMesh")
    yield NodeItem("GeometryNodeExtrudeMesh")
    yield NodeItem("GeometryNodeFlipFaces")
    yield NodeItem("GeometryNodeMeshBoolean")
    yield NodeItem("GeometryNodeMeshToCurve")
    yield NodeItem("GeometryNodeMeshToPoints")
    yield NodeItem("GeometryNodeMeshToVolume")
    yield NodeItem("GeometryNodeSplitEdges")
    yield NodeItem("GeometryNodeSubdivideMesh")
    yield NodeItem("GeometryNodeSubdivisionSurface")
    yield NodeItem("GeometryNodeTriangulate")
    yield NodeItem("GeometryNodeScaleElements")
    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("GeometryNodeInputMeshFaceIsPlanar")
    yield NodeItem("GeometryNodeInputMeshIsland")
    yield NodeItem("GeometryNodeInputShadeSmooth")
    yield NodeItem("GeometryNodeInputMeshVertexNeighbors")
    yield NodeItemCustom(draw=lambda self, layout, context: layout.separator())
    yield NodeItem("GeometryNodeSetShadeSmooth")
示例#5
0
def mesh_node_items(context):
    if context is None:
        return
    space = context.space_data
    if not space:
        return

    if geometry_nodes_legacy_poll(context):
        yield NodeItem("GeometryNodeLegacyEdgeSplit",
                       poll=geometry_nodes_legacy_poll)
        yield NodeItem("GeometryNodeLegacySubdivisionSurface",
                       poll=geometry_nodes_legacy_poll)
        yield NodeItemCustom(
            draw=lambda self, layout, context: layout.separator())

    yield NodeItem("GeometryNodeMeshBoolean")
    yield NodeItem("GeometryNodeMeshToCurve")
    yield NodeItem("GeometryNodeMeshToPoints")
    yield NodeItem("GeometryNodeSplitEdges")
    yield NodeItem("GeometryNodeSubdivideMesh")
    yield NodeItem("GeometryNodeSubdivisionSurface")
    yield NodeItem("GeometryNodeTriangulate")
    yield NodeItemCustom(draw=lambda self, layout, context: layout.separator())
    yield NodeItem("GeometryNodeInputShadeSmooth")
    yield NodeItemCustom(draw=lambda self, layout, context: layout.separator())
    yield NodeItem("GeometryNodeSetShadeSmooth")
示例#6
0
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("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")
示例#7
0
def point_node_items(context):
    if context is None:
        return
    space = context.space_data
    if not space:
        return
    yield NodeItem("GeometryNodeDistributePointsOnFaces")
    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")
示例#8
0
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")
示例#9
0
def node_group_items(context):
    if context is None:
        return
    space = context.space_data
    if not space:
        return
    ntree = space.edit_tree
    if not ntree:
        return

    yield NodeItemCustom(draw=group_tools_draw)

    def contains_group(nodetree, group):
        if nodetree == group:
            return True
        else:
            for node in nodetree.nodes:
                if node.bl_idname in node_tree_group_type.values(
                ) and node.node_tree is not None:
                    if contains_group(node.node_tree, group):
                        return True
        return False

    for group in context.blend_data.node_groups:
        if group.bl_idname != ntree.bl_idname:
            continue
        # filter out recursive groups
        if contains_group(group, ntree):
            continue
        # filter out hidden nodetrees
        if group.name.startswith('.'):
            continue
        yield NodeItem(node_tree_group_type[group.bl_idname], group.name,
                       {"node_tree": "bpy.data.node_groups[%r]" % group.name})
示例#10
0
def curve_node_items(context):
    if context is None:
        return
    space = context.space_data
    if not space:
        return
    if not space.edit_tree:
        return

    if geometry_nodes_legacy_poll(context):
        yield NodeItem("GeometryNodeLegacyCurveEndpoints")
        yield NodeItem("GeometryNodeLegacyCurveReverse")
        yield NodeItem("GeometryNodeLegacyCurveSubdivide")
        yield NodeItem("GeometryNodeLegacyCurveToPoints")
        yield NodeItem("GeometryNodeLegacyMeshToCurve")
        yield NodeItem("GeometryNodeLegacyCurveSelectHandles")
        yield NodeItem("GeometryNodeLegacyCurveSetHandles")
        yield NodeItem("GeometryNodeLegacyCurveSplineType")
        yield NodeItemCustom(
            draw=lambda self, layout, context: layout.separator())

    yield NodeItem("GeometryNodeCurveFill")
    yield NodeItem("GeometryNodeCurveFillet")
    yield NodeItem("GeometryNodeCurveLength")
    yield NodeItem("GeometryNodeCurveReverse")
    yield NodeItem("GeometryNodeCurveSample")
    yield NodeItem("GeometryNodeCurveSubdivide")
    yield NodeItem("GeometryNodeCurveToMesh")
    yield NodeItem("GeometryNodeCurveTrim")
    yield NodeItem("GeometryNodeCurveResample")
    yield NodeItemCustom(draw=lambda self, layout, context: layout.separator())
    yield NodeItem("GeometryNodeInputCurveHandlePositions")
    yield NodeItem("GeometryNodeCurveParameter")
    yield NodeItem("GeometryNodeInputTangent")
    yield NodeItem("GeometryNodeInputCurveTilt")
    yield NodeItem("GeometryNodeCurveHandleTypeSelection")
    yield NodeItem("GeometryNodeInputSplineCyclic")
    yield NodeItem("GeometryNodeSplineLength")
    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")
示例#11
0
def node_group_items(context):
    if context is None:
        return
    space = context.space_data
    if not space:
        return

    yield NodeItemCustom(draw=group_tools_draw)

    yield NodeItem("NodeGroupInput", poll=group_input_output_item_poll)
    yield NodeItem("NodeGroupOutput", poll=group_input_output_item_poll)

    ntree = space.edit_tree
    if not ntree:
        return

    yield NodeItemCustom(draw=lambda self, layout, context: layout.separator())

    def contains_group(nodetree, group):
        if nodetree == group:
            return True
        else:
            for node in nodetree.nodes:
                if node.bl_idname in node_tree_group_type.values(
                ) and node.node_tree is not None:
                    if contains_group(node.node_tree, group):
                        return True
        return False

    for group in context.blend_data.node_groups:
        if group.bl_idname != ntree.bl_idname:
            continue
        # filter out recursive groups
        if contains_group(group, ntree):
            continue
        # filter out hidden nodetrees
        if group.name.startswith('.'):
            continue
        yield NodeItem(
            node_tree_group_type[group.bl_idname],
            label=group.name,
            settings={"node_tree": "bpy.data.node_groups[%r]" % group.name})
示例#12
0
def geometry_material_node_items(context):
    if context is None:
        return
    space = context.space_data
    if not space:
        return
    if not space.edit_tree:
        return

    if geometry_nodes_legacy_poll(context):
        yield NodeItem("GeometryNodeLegacyMaterialAssign")
        yield NodeItem("GeometryNodeLegacySelectByMaterial")
        yield NodeItemCustom(draw=lambda self, layout, context: layout.separator())

    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")
示例#13
0
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")
示例#14
0
def sv_group_items(context):
    """
    Based on the built in node_group_items in the blender distrubution
    somewhat edited to fit.
    """
    if context is None:
        return
    space = context.space_data
    if not space:
        return
    ntree = space.edit_tree
    if not ntree:
        return

    yield NodeItemCustom(draw=draw_node_ops)

    def contains_group(nodetree, group):
        if nodetree == group:
            return True
        else:
            for node in nodetree.nodes:
                if node.bl_idname in node_tree_group_type.values(
                ) and node.node_tree is not None:
                    if contains_group(node.node_tree, group):
                        return True
        return False

    if ntree.bl_idname == "SverchGroupTreeType":
        yield NodeItem("SvMonadInfoNode", "Monad Info")

    for monad in context.blend_data.node_groups:
        if monad.bl_idname != "SverchGroupTreeType":
            continue
        # make sure class exists
        cls_ref = get_node_class_reference(monad.cls_bl_idname)

        if cls_ref and monad.cls_bl_idname:
            yield NodeItem(monad.cls_bl_idname, monad.name)
        elif monad.cls_bl_idname:
            monad_cls_template_dict = {
                "cls_bl_idname": "str('{}')".format(monad.cls_bl_idname)
            }
            yield NodeItem("SvMonadGenericNode", monad.name,
                           monad_cls_template_dict)