🎨

ArnoldでメッシュにRGBを割り振るAOVsを作成する

2024/04/07に公開

これ↓をスクリプトにする.
https://tablogweb.wordpress.com/2020/09/04/arnold-rgb-matte-aovs-part2/

準備

元記事の(2)の工程をやる。

core.createOptions()
aovs.AOVInterface().addAOV("id_manual_aov", aovType='rgba')

cmds.shadingNode("aiUserDataColor", asUtility=True, name="id_manual_color")
cmds.setAttr("id_manual_color.attribute","aovColor",type="string")
cmds.shadingNode("aiUtility", asUtility=True, name="id_manual_utility")
cmds.setAttr("id_manual_utility.shadeMode",2)
cmds.connectAttr("id_manual_color.outColor","id_manual_utility.color",f=True)
cmds.connectAttr("id_manual_utility.outColor","aiAOV_id_manual_aov.defaultValue",f=True)

RGBを指定

(1)の工程をやる。

def add_custom_attr_R(mesh:str):
    cmds.addAttr(mesh, ln="mtoa_constant_aovColor", at="double3")
    cmds.addAttr(mesh, ln="mtoa_constant_aovColorX", at="double",p="mtoa_constant_aovColor")
    cmds.addAttr(mesh, ln="mtoa_constant_aovColorY", at="double",p="mtoa_constant_aovColor")
    cmds.addAttr(mesh, ln="mtoa_constant_aovColorZ", at="double",p="mtoa_constant_aovColor")
    #GとBは引数の数値を変える
    cmds.setAttr(f"{mesh}.mtoa_constant_aovColor",1,0,0)

cmds.polySphere()
add_custom_attr_R("pSphereShape1")

Rの色がつきました。

おまけ

render viewでメッシュの色が変わらないことがある。
その時は、以下のattributeを変更するとメッシュの再評価が行われる。
なんでかは知らないです。

def reload_mesh(shape):
    value = cmds.getAttr(f"{shape}.aiSubdivFrustumIgnore") or False
    cmds.setAttr(f"{shape}.aiSubdivFrustumIgnore", value)

Discussion