2007年07月22日

アイテムチャンネルを調べる modo 203

さて、今回のお題はスクリプトで操作する各アイテムのチャンネルについてだ。前回のスクリプトでもそうだったのだが、ツールを使ってアイテムのプロパティを操作する場合、うまくいかない事がままあるので、やはりチャンネルを操作するのが本筋なんじゃないかと思った。でもアイテムにはどんなチャンネルが付いているかマニュアルに記述されているわけでは無い。一番簡単に知る方法は、アイテムプロパティを適当に変更した時のコマンド履歴を確認することだ。例えばメッシュアイテムのX位置を変えるとこんなコマンドが履歴に残る。

item.channel locator$pos.X [100 um]

今回のお題であるチャンネルは「locator$pos.X」の部分なわけだ。この名前はアイテムのタイプである「locator」とそのチャンネル名「pos.X」で出来ているようだ(スクリプトマニュアルをよく見ると、メッシュもlocatorタイプだと書いてある)。いろいろ試してみた結果、どうやら$の前のアイテムタイプは書かなくてもいいようだ。だから上記のコマンドは、

item.channel pos.X [100 um]

と書いてもちゃんと機能するよ。うーむ。

これらのチャンネルにアクセスするには「item.channel」コマンドを使う。マニュアルを見るとこのように書かれている

item.channel name:string ?value:* <mode:{set|shift|scale}>

「?」が付いていることでわかる通り、このコマンドでアイテムの値を設定も取得も出来るようだ。例えば上記の「pos.X」の設定値が欲しければ、

item.channel pos.X  ?

とすればいい。現在選択されているアイテムの該当するチャンネルの値が全て得られる。全てと書いたのは複数選択しておくと、複数値が返ってくるからだ。
そしてmodeパラメータを見ると値をセットするだけじゃなくてずらしたり縮尺したりも可能なようだ。だからアイテムのチャンネル名さえわかればアイテムの操作はとっても簡単なわけだが、その名前をいちいち調べるのもなんだなぁって事で簡単なスクリプトを用意してみた。アイテムを1つ選択してスクリプトを起動すると、保存先を聞くダイアログが出るのでファイル名を入力してくれ。ただしファイルタイプにHTMLが選択出来ないので仕方なくテキストになっているが、出力される時の拡張子はHTMLになるようにしてある。これで以下のようなテーブルが書き出されるのでインターネットのブラウザで表示して見てくれ。これはマテリアルアイテムをシェーダーツリーで選択して実行した結果だ。

マテリアル : advancedMaterial
番号 ラベル 名前 タイプ ベクター
0 enable enable integer 0 1
1 opacity opacity float 0 1
2 ブレンドモード blend integer 0 normal
3 invert invert integer 0 0
4 effect effect storage 0
5 diffCol.R diffCol.R float 4 1
6 diffCol.G diffCol.G float 4 1
7 diffCol.B diffCol.B float 4 1
8 diffAmt diffAmt float 0 0.8
9 specCol.R specCol.R float 4 1
10 specCol.G specCol.G float 4 1
11 specCol.B specCol.B float 4 1
12 specAmt specAmt float 0 0.2
13 reflCol.R reflCol.R float 4 1
14 reflCol.G reflCol.G float 4 1
15 reflCol.B reflCol.B float 4 1
16 reflAmt reflAmt float 0 0
17 tranCol.R tranCol.R float 4 1
18 tranCol.G tranCol.G float 4 1
19 tranCol.B tranCol.B float 4 1
20 tranAmt tranAmt float 0 0
21 subsCol.R subsCol.R float 4 1
22 subsCol.G subsCol.G float 4 1
23 subsCol.B subsCol.B float 4 1
24 subsAmt subsAmt float 0 0
25 lumiCol.R lumiCol.R float 4 1
26 lumiCol.G lumiCol.G float 4 1
27 lumiCol.B lumiCol.B float 4 1
28 radiance radiance float 0 0
29 rough rough float 0 0.4
30 aniso aniso float 0 0
31 fresnel fresnel float 0 0
32 refIndex refIndex float 0 1
33 disperse disperse float 0 0
34 tranDist tranDist float 0 0
35 subsDist subsDist float 0 0.005
36 bump bump float 0 1
37 displace displace float 0 0.02
38 smooth smooth float 0 1
39 smAngle smAngle float 0 1.0472
40 dblSided dblSided integer 0 0
41 physical physical integer 0 0
42 反射タイプ reflType integer 0 full
43 reflBlur reflBlur integer 0 0
44 reflRays reflRays integer 0 &min
45 subsSmps subsSmps integer 0 &min
46 uvMap uvMap storage 0

値は現在の設定値が表示される。チャンネル名としては名前の項目に書かれているものを使ってね。暇な時にこれを使って一覧を作って置けば後々楽が出来ると思うよ。残念ながら選択項目の採りえる値とかまでは出せないんだけど、その辺は地道に調べてこの表に書き加えていってね。ラベルもパッと見わかりにくい名前なんかはmodoのパネルを見ながら書き換えて行くといいよ(結局凄い手間だけど・・・)。

それではまた次回。 

スクリプトまとめページ( Down Load はこちらから)  

カテゴリー別ページ

modo操作メモ



take_z_ultima at 12:57│Comments(5)TrackBack(1)modo | CG

トラックバックURL

この記事へのトラックバック

1. コマンドー 実況  [ NEWS TODAY ]   2007年07月23日 04:13
金曜ロードショー「アーノルド・シュワルツェネッガー コマンドー」goo 映画◇金曜ロードショー「アーノルド・シュワルツェネッガーコマンドー」◇85年、米。元コマンド部隊の男性が誘拐された娘を取り戻すため、テロ逑

この記事へのコメント

1. Posted by Puff   2007年07月23日 07:31
やってしまいました。
昨日、コツコツと作っていた飛行機、「別の名前で保存」しようとして、うっかり「保存」してしまい、さらにそれに気付かずmodoを終了してしまいました。うっかり「保存」してしまった飛行機は3軸ともにオブジェクトを回転してしまったのですが、これを正位置に戻す方法は何かあるのでしょうか。あー辛い。です。
2. Posted by take_z   2007年07月23日 13:38
急場しのぎには、作業平面を回すのが一番手っ取り早いですね。
ちょっと検討してみます。
3. Posted by Puff   2007年07月23日 14:06
作っていく過程でだんだんデータが重くなってきますと、アイテム・タブのデータ名を右クリックして出る「保存」「別名で保存」あたりの動作が緩慢になる傾向があり、「別名で保存」のつもりが、「保存」していたりします。それと、シーン(データ)の変更後に「シーンを閉じる」や「終了」を選択すると、そのまま閉じてしまうのは普通なのでしょうか。「変更されてますけど、保存しますか。」とか、他のソフトは聞いてくれるのですが、、。
4. Posted by take_z   2007年07月23日 16:10
Win版ですが、変更がある時に閉じようとすれば保存するか尋ねてきます。
仕様では無いと思います。
5. Posted by Puff   2007年07月23日 17:26
ありがとうございます。そーなんですか。初期設定ファイル捨ててみます。

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔   
 
 
 

Archives