Material
マテリアルはオブジェクトから取得する時に selection(0).material じゃん?
そして、Material Library は ActiveProject.ActiveScene.MaterialLibraries でしょう?
なので、Materialは ActiveProject.ActiveScene.MaterialLibraries(0).Material と思うじゃない?
え?思わないんですか?
まぁ、とにかく正解は:
var oMat = ActiveProject.ActiveScene.MaterialLibraries(i).items
items かよ!
マニュアルを読め!ってことだけど、items かよ。
※ ActiveProject.ActiveScene.MaterialLibraries はコレクションなので、コレクションアイテムのindex数字を入れる必要があります。
Object から Material 取得
Junkiさんがコメントして下さったので追記します。
オブジェクト名.Materialで取得する時にPass とか Group に支配されているときはそっちの Material が取得されます。
それはそれで便利な時もありますが、自分自身の Material だけが欲しいときは、LocalProperties をループして type が Material のものが見つかればそれは自分自身のマテリアルである。
例:
//JScript
var oObj=selection(0)for (var i=0; i<oObj.localproperties.count ; i++){if (oObj.localproperties(i).type=="Material"){logmessage(oObj.properties(i))}}
注意:
localpropertiesループでクラスタからマテリアル取得する時にオブジェクトとの共有マテリアルが取得出来ません。
Image Clip
これも普通にマニュアルを読めばすぐ分かるんですけど、ログに騙されちゃうんですね。
あるClipを選択する時に
SelectObj("Clips.image_psd")
みたいなログが出るから
なんとなくActiveProject.ActiveScene.Clips なんじゃない?かと思っちゃうんだよな~。
そうでしょ。
でも全然違いますね。
正解は:
var oClips = ActiveProject.ActiveScene.ImageClips
これはイメージクリップのコレクションなので、イメージクリップ1個ずつはoClips(#) か oClips.item(#) になります。
何回も失敗したからもう覚えたけど、一応メモっておく。誰かに役に立つかもしれないし。