今回はカラーとマテリアル周りをやっていきましょう。
その前に、少しプロパティの説明を。
以前、showproperties $ を紹介しましたが
これは、$(選択オブジェクト)の持っているプロパティをリスナーに表示してくれるメソッドでした。
maxでは、様々な値は階層構造になっています。
例を出すと、
$.pos.controller.X_position.controller.value
$.material.diffuseの様に、ドットで区切って階層を潜ってアクセスできます。
少し特殊ですが、こんな書き方もできます。
$.parent.rotation.contoller選択オブジェクトの親の回転のコントローラーにアクセスできます。
(親オブジェクトが無い場合はエラーになると思います。)
Twitterでも少し書きましたが、showpropertiesはどの階層でも使えるので
showproperties $.parent.materialの様な書き方もできます。
(プロパティを持たない場合はエラーになります。)
では、前回のスクリプトで作ったオブジェクトのワイヤフレームの色を変えてみようと思います。
別ソフトで作った多くのオブジェクトをmaxにインポートした場合、全て同じワイヤーフレームの色で
見づらいなんて事が起きますね。
他のソフトはそれがデフォルトですが、max育ちの自分にはあーやだやだってな感じです。
なので、ランダムにカラーを割り当てようと思います。
for o in selection do
(
Rr= random 0 255
Rg= random 0 255
Rb= random 0 255
o.wirecolor = color Rr Rg Rb
)
カラーの値の基本は、
color 赤 緑 青
の様に書きます。前回同様ランダムを3つ用意したのはRGBに全て同じ値が入ると
グレースケールになってしまうからです。逆にそのようにしたい場合は同じランダム値を
アサインすると良いと思います。
では、次にマテリアル版です。
maxではオブジェクトが作られた段階では、何もマテリアルが割り当てられていないので
そこから書く必要があります。
for o in selection do
(
Rr= random 0 255
Rg= random 0 255
Rb= random 0 255
m = standardmaterial()
m.diffuse = color Rr Rg Rb
m.selfillumination = 100
o.material = m
)
ついでに、自己照明の値も100にしてみました。
まず、スタンダードマテリアルを用意してその値を変更し
最後に選択オブジェクトに割り当てするといった流れです。
今回はこの辺で。
次回はアニメーション周りを解説したいと思います。
Tweet
0 件のコメント :
コメントを投稿