OpenMayaでLambertマテリアルを作成する

OpenMaya,Tips,Python,Maya

この記事はMaya Advent Calendar 2022の2日目の記事です
今年もAdventCalendarの季節がやってまいりました!!

今回は OpenMaya を使ってLambertシェーダーのマテリアルを作成する方法を紹介します

MayaのcmdsでLambertシェーダーのマテリアルを作成するとき、下のコードで実現できるのですが今回はOpenMayaで作成してみます

cmds.shadingNode("lambert", asShader=1)

OpenMayaでLambertシェーダーからマテリアルを作成する際に利用するクラスはMFnLambertShaderになります
MFnLambertShaderはLambertシェーダーを管理しているクラスでディペンデンシーグラフノードの作成と操作を行うことができます

Lambertシェーダーを作成

2022-12-02_01

import maya.OpenMaya as OpenMaya

mLambertShader = OpenMaya.MFnLambertShader()
mLambertShader.create()

作成するにはcreateメソッドを実行することでマテリアルを作成できます

作成したマテリアルの値を設定することもできます

名前を設定する

lambertShader.setName("OpenMayaMaterial")

カラーを設定する

color = OpenMaya.MColor(1.0, 0.0, 1.0)
lambertShader.setColor(color)

透明度を設定する

transparency =OpenMaya.MColor(0.5, 0.5, 0.5)
lambertShader.setColor(transparency)

他にもAmbientColorやGlowIntensityなども設定できます
詳しくはMFnLambertShaderにあるsetと書かれている関数を確認してみてください

コピペ用のコード

import maya.OpenMaya as OpenMaya

materialName = "OpenMayaMaterial"
color = OpenMaya.MColor(1.0, 0.0, 1.0)
transparency = OpenMaya.MColor(0.5, 0.5, 0.5)
ambient = OpenMaya.MColor(0.0, 1.0, 0.5)

mLambertShader = OpenMaya.MFnLambertShader()
mLambertShader.create()
mLambertShader.setName(materialName)
mLambertShader.setColor(color)
mLambertShader.setTransparency(transparency)
mLambertShader.setAmbientColor(ambient)