MayaとかUE4で色々やったやつ

主にぷちコン向けに作品を作っています

TransformのDrawing OverridesでRGBをPython経由(PyMelで)指定する

表題通り 主にリグコントローラをあまり手で触りたくない時用

要旨

targetNode = pm.PyNode("node_name_of_target")
targetNode.overrideEnabled.set(1)
targetNode.overrideRGBColors.set(1)
targetNode.overrideColorRGB.set(rgbColor)

コード例

関数化するなら多分こんな感じ 引数がHSVなのは好みの問題

import pymel.core as pm


def setOverrideColor(hsv, targetNode=None):
    try:
        rgbColor = pm.dt.Vector(hsv)
        rgbColor = pm.mel.hsv_to_rgb(rgbColor)
    except TypeError as e:
        raise TypeError(u"Cannot Cast HSV to vector. HSV should be three element tuple and 0.0-1.0 range, such as (0.5, 0.8, 0.2)")

    if not targetNode:
        if not pm.selected():
            pm.displayWarning(u"No target specified.")
            return

        # recursive call
        for selectedNode in pm.selected():
            setOverrideColor(hsv, targetNode=selectedNode)
        return

    targetNode.overrideEnabled.set(1)
    targetNode.overrideRGBColors.set(1)
    targetNode.overrideColorRGB.set(rgbColor)


# usage sample
setOverrideColor(hsv=(0.2, 0.4, 1.0))

hsv_to_rgbに渡す値はpm.dt.Vectorである必要がある