🎨
ArnoldでメッシュにRGBを割り振るAOVsを作成する
これ↓をスクリプトにする.
準備
元記事の(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