Beispiel #1
0
def plusMinusAverage(*args, **kwargs):
    from nodex.core import Nodex
    d = kwargs.pop("dimensions", None)
    o = kwargs.pop("operation", 1)
    name = kwargs.pop("name", "plusMinusAverage")
    output = kwargs.pop("output3D", None)

    # Get dimensions from input Nodex
    if d is None:
        d = max(x.dimensions() for x in args)

    if d > 3:
        raise RuntimeError("Can't use plusMinusAverage with higher dimensions than 3")

    # Get corresponding output attribute/length for the current dimension
    resultAttrs = {1: "output1D", 2: "output2D", 3: "output3D"}
    resultAttr = resultAttrs[d]

    n = pm.createNode("plusMinusAverage", name=name)
    n.operation.set(o) # average
    for i, v in enumerate(args):
        n_input_attr = n.attr("input{dimension}D[{index}]".format(dimension=d, index=i))
        v.connect(n_input_attr)

    result = Nodex(n.attr(resultAttr))
    if output is not None:
        result.connect(output)

    return result
Beispiel #2
0
def plusMinusAverage(*args, **kwargs):
    from nodex.core import Nodex
    d = kwargs.pop("dimensions", None)
    o = kwargs.pop("operation", 1)
    name = kwargs.pop("name", "plusMinusAverage")
    output = kwargs.pop("output3D", None)

    # Get dimensions from input Nodex
    if d is None:
        d = max(x.dimensions() for x in args)

    if d > 3:
        raise RuntimeError(
            "Can't use plusMinusAverage with higher dimensions than 3")

    # Get corresponding output attribute/length for the current dimension
    resultAttrs = {1: "output1D", 2: "output2D", 3: "output3D"}
    resultAttr = resultAttrs[d]

    n = pm.createNode("plusMinusAverage", name=name)
    n.operation.set(o)  # average
    for i, v in enumerate(args):
        n_input_attr = n.attr("input{dimension}D[{index}]".format(dimension=d,
                                                                  index=i))
        v.connect(n_input_attr)

    result = Nodex(n.attr(resultAttr))
    if output is not None:
        result.connect(output)

    return result
Beispiel #3
0
def condition(firstTerm=None, secondTerm=None, ifTrue=None, ifFalse=None, output=None, **kwargs):
    from nodex.core import Nodex
    o = kwargs.pop("operation", 0)
    name = kwargs.pop("name", "condition")
    d = kwargs.pop("dimensions", None)
    output = kwargs.pop("output", None)

    # Ensure inputs are Nodex
    if firstTerm is not None and not isinstance(firstTerm, Nodex):
        firstTerm = Nodex(firstTerm)
    if secondTerm is not None and not isinstance(secondTerm, Nodex):
        secondTerm = Nodex(secondTerm)
    if ifTrue is not None and not isinstance(ifTrue, Nodex):
        ifTrue = Nodex(ifTrue)
    if ifFalse is not None and not isinstance(ifFalse, Nodex):
        ifFalse = Nodex(ifFalse)

    # Get dimensions from input Nodex
    if d is None:
        d = max(x.dimensions() for x in [firstTerm, secondTerm, ifTrue, ifFalse] if not x is None)

    if d > 3:
        raise RuntimeError("Can't use plusMinusAverage with higher dimensions than 3")

    suffices = ["R", "G", "B"]

    n = pm.createNode("condition", name=name)
    n.operation.set(o)

    # region define output attribute
    # Get corresponding output attribute/length for the current dimension
    outputAttrs = {1: "outColorR", 2: ["outColorR", "outColorG"], 3: "outColor"}
    outputAttr = outputAttrs[d]
    # use node name plus attribute to identify output so we can use it as the nodex directly
    if isinstance(outputAttr, list):
        outputAttr = ["{0}.{1}".format(n.name(), x) for x in outputAttr]
    else:
        outputAttr = "{0}.{1}".format(n.name(), outputAttr)
    # endregion

    if firstTerm is not None:
        firstTerm.connect(n.attr("firstTerm"))

    if secondTerm is not None:
        secondTerm.connect(n.attr("secondTerm"))

    if ifTrue is not None:
        ifTrue.connect(n.attr("colorIfTrue"))
    else:
        n.attr("colorIfTrue").set((1, 1, 1))

    if ifFalse is not None:
        ifFalse.connect(n.attr("colorIfFalse"))
    else:
        n.attr("colorIfFalse").set((0, 0, 0))

    if output is not None:
        ifFalse.connect(outputAttr)

    return Nodex(outputAttr)
Beispiel #4
0
def condition(firstTerm=None,
              secondTerm=None,
              ifTrue=None,
              ifFalse=None,
              output=None,
              **kwargs):
    from nodex.core import Nodex
    o = kwargs.pop("operation", 0)
    name = kwargs.pop("name", "condition")
    d = kwargs.pop("dimensions", None)
    output = kwargs.pop("output", None)

    # Ensure inputs are Nodex
    if firstTerm is not None and not isinstance(firstTerm, Nodex):
        firstTerm = Nodex(firstTerm)
    if secondTerm is not None and not isinstance(secondTerm, Nodex):
        secondTerm = Nodex(secondTerm)
    if ifTrue is not None and not isinstance(ifTrue, Nodex):
        ifTrue = Nodex(ifTrue)
    if ifFalse is not None and not isinstance(ifFalse, Nodex):
        ifFalse = Nodex(ifFalse)

    # Get dimensions from input Nodex
    if d is None:
        d = max(x.dimensions()
                for x in [firstTerm, secondTerm, ifTrue, ifFalse]
                if not x is None)

    if d > 3:
        raise RuntimeError(
            "Can't use plusMinusAverage with higher dimensions than 3")

    suffices = ["R", "G", "B"]

    n = pm.createNode("condition", name=name)
    n.operation.set(o)

    # region define output attribute
    # Get corresponding output attribute/length for the current dimension
    outputAttrs = {
        1: "outColorR",
        2: ["outColorR", "outColorG"],
        3: "outColor"
    }
    outputAttr = outputAttrs[d]
    # use node name plus attribute to identify output so we can use it as the nodex directly
    if isinstance(outputAttr, list):
        outputAttr = ["{0}.{1}".format(n.name(), x) for x in outputAttr]
    else:
        outputAttr = "{0}.{1}".format(n.name(), outputAttr)
    # endregion

    if firstTerm is not None:
        firstTerm.connect(n.attr("firstTerm"))

    if secondTerm is not None:
        secondTerm.connect(n.attr("secondTerm"))

    if ifTrue is not None:
        ifTrue.connect(n.attr("colorIfTrue"))
    else:
        n.attr("colorIfTrue").set((1, 1, 1))

    if ifFalse is not None:
        ifFalse.connect(n.attr("colorIfFalse"))
    else:
        n.attr("colorIfFalse").set((0, 0, 0))

    if output is not None:
        ifFalse.connect(outputAttr)

    return Nodex(outputAttr)