2005/05/31

Object Link

連番名のついたオブジェクトをリンクさせる動作を自動化させたスクリプトです。
例えば、「Dummy01,Dummy02,....」というオブジェクトを「Box01,Box02,....」というオブジェクトにDummy01とBox01,Dummy02とBox02といった具合にリンクさせることができます。


ダウンロードはこちらから


-- 使用方法 --
①リンクさせる親または子のオブジェクト数をスピナに入力
②"Parent Name"とある欄に親の名前(数字を除いたもの)を入力
③"Child Name"とある欄に子の名前(数字を除いたもの)を入力
④"Link!"ボタンを押す

2005/05/22

スクリプトの便利な使い方②

その①でパラメーターワイヤリングを使用せずにパラメーターを一括変更する方法を書きましたが、今度は同じモディファイヤを複数オブジェクトに適用させる場合はどうでしょう?その①で使用した方法(マクロレコーダーの構文をそのまま利用)でやってみると、複数オブジェクトを選択してモディファイヤを適用した状態と同じになってしまいます。(ギズモが選択オブジェクト全体の大きさになる)
 → 


「これを1つ1つに適用させた状態にまとめてできないか?」

オブジェクトを複数選択した状態で、次のようにするとできます。(UVWマップを適用する場合)
---------------------------------------
for i in selection do
(
addmodifier i (uvwmap())
)

---------------------------------------
これはfor文というもので()内に記載された動作を「i」回繰り返し行うというものです。それを今回は選択オブジェクト分1回1回モディファイヤを適用させてほしいので「in selection」というのをつけています。詳しくはヘルプを見てください。マクロレコーダーで調べてみると、
「modPanel.addModToSelection (Uvwmap ()) ui:on」
と出るのですがこのままでは使えません。「(Uvwmap())」というのだけが使用できるので他のモディファイヤで行う時も「(SliceModifier ())」といった感じで
「addmodefier i」の後にコピーしてください。モディファイヤのパラメーターをまとめて変更したい時は前回説明した方法でやればいいと思います。

2005/05/19

スクリプトの便利な使い方①

スクリプトの便利な使い方その①
なんといっても複数オブジェクトの一括管理がスクリプトの手軽で最もよく使う手法だと思う。ごく基本的な使い方を少し紹介。

例えば、「インスタンスさせたくない複数のライトの強度をまとめて同じ値にしたい。」という時どうしますか?1つ1つやりますか?それともパラメーターワイヤリングでやりますか?スクリプトでやるとこんなに簡単。
①まずは1つのライトを選択して強度を変えてみる。この時にマクロレコーダーをオンにしてMaxscriptリスナーを開いておく。
②そうすると、リスナーに「$.multiplier = 0.3」といった感じで表示されるはず
③ここで変更したいライトすべてを選択
④さきほど表示された「$.multiplier = 0.3」を新規スクリプトから実行するか左下のミニリスナー(赤い方)にコピーして実行

これで選択したすべてのライトの強度が変わっているはずです。

マクロレコーダーに記載されるコマンドはすべてがそのまま使えるわけではないですが使えるものも多くあるのでコマンドを調べるのにもとても便利です。

-- こんな使い方は? ---
たくさんのライトを使ってライティングを設定してあるシーンで、カットごとにライティングを変えたい時は?自分ならカット別にライトをレイヤー分けしておいてまとめてライトをオン・オフして切り替える・・・かな?それかライトの設定をボタン1つで切り替えられるようにすると思う。2つも3つもカットごとにmaxファイルを用意しなくていいですし・・・。
----------------------------------
$.enabled = off
----------------------------------
といった感じで。

2005/05/18

ObjectProperties

よく使用すると思われるオブジェクトプロパティを簡単に切り替えできるようにしました。"KillMaterial"でマテリアルを未適用の状態にすることができます。複数オブジェクトに対応。ボタンをONでオブジェクトプロパティダイアログのチェックが入っている状態です。



ダウンロードはこちらから
tested using max7.0E


-- 起動方法 --
"objectproperties.zip"を解凍して"objectproperties.mse"を実行

-- 使用方法 --
①プロパティを変更したいオブジェクト(複数可)を選択
②変更したいプロパティのボタンを押す

--- 注意 ---
オブジェクトのプロパティをオフにする場合、1度ボタンをオンにしてからオフにする必要があります。

"koh@maxscript" Open!

maxscriptに関してはまだまだ未熟ですが、maxscriptの役に立つ情報などを自分のわかる範囲で少しずつ掲載していこうと思っています。自作スクリプト(kohscript)の公開もあわせて行っていくつもりです。

UVW Mapper

複数オブジェクトにUVWマップをx,y,z軸の3つまでまとめて適用することができます。x,y,z軸それぞれにマッピングチャンネルを設定することができます。選択オブジェクトのモディファイヤをスタックレベルの指定によりまとめて削除することが出来ます。



ダウンロードはこちらから
tested using Max 8 SP3 E


--- 使用方法 ---
■Set UVW
①UVWマップを適用したいオブジェクトを選択
②使用したい軸にチェックを入れる
③マップチャンネルを設定
④"Set UVW"ボタンを押す

■Delete UVW
①選択オブジェクトの削除したいモディファイヤのスタックレベルを"Stack Level"で指定。複数のモディファイヤを削除したいときは"Stack Range"で範囲を指定。
②"DeleteMod"ボタンを押す
※すべてのモディファイヤを削除したいときは"ALL Delete Mod"ボタンを押す

--- 更新履歴 ---
●v1.2 Boxにも対応させました
●v1.3 "Delete UVW"の使い勝手を向上
●v1.4 
⇒○オブジェクトに回転やスケールがかかっているときちんとギズモがオブジェクトの大きさにフィットされない問題を解消。
 ○Box機能がきちんと働いていなかった問題を解消。
●v2.0 詳細はこちら

Selecter

■OpenedShapes : 選択オブジェクトの中から開いているシェイプのみを選択します。
■CosedShapes : 選択オブジェクトの中から閉じているシェイプのみを選択します。
■PolySelecter :
①選択オブジェクトの中から指定したポリゴン数よりも小さい(または大きい)ポリゴン数のオブジェクトを選択します。(編集可能ポリゴンのみ対応)
②選択しているポリゴンをスキップ選択します。(選択位置をA,Bで変更可能)
■EdgeSelecter :選択しているエッジをスキップ選択します。(選択位置をA,Bで変更可能)



ダウンロードはこちらから
tested using Max 8.0 SP3 E


--- 注意 ---
□"OpenedShapes"を押したときに開いているパスが1つ以上選択されていれば問題なく動作します。"ClosedShapes"の場合も同様。ラインだけを選択してある状態であれば、対象となるパスがなくても何も起こりません。ポリゴンしか選択していなかったりすると不具合が発生します。
□スキップ選択機能はあまり賢くないので、基本的にポリゴン編集などをしたものにはうまく動作しません。プリミティブオブジェクトをポリゴンに変換しただけのオブジェクトであれば問題なく動作します。

--- 更新履歴 ---
v1.2 ポリゴンのスキップ選択機能を追加
v1.3 BugFix(2006/02)
v1.4 エッジのスキップ選択機能を追加(2007/10/09)

SelectionSave

編集可能メッシュ、編集可能ポリゴンでの頂点・エッジ・面の選択セットを作ります。それぞれ6つまで選択セットを作ることができます。ソフト選択にも対応しています。1つのオブジェクトにつき6つのセットではないのでご注意ください。

 

使ってみたい方はメール下さい
tested using Max 6.0 J



--- 起動方法 ---
"selectionsave.zip"を解凍して「スクリプトを起動」から"selectionsave.mse"を実行

--- 使用方法 ---
①選択したい頂点、エッジまたは面を選択します。
②頂点の場合は"SelectionVerts”、エッジの場合は"SelectionEdges"、面の場合は
"SelectionFaces"のロールアウトを使用します。
③"save1"に保存した情報は"load1"で呼び出すことができます。
④チェックボタンをオフにするとそのボタンに保存した情報は削除されます。

Snapshot

指定したキーフレーム(10個まで)のスナップショットをまとめて行うことができます。複数オブジェクトに対応。



ダウンロードはこちらから


--- 起動方法 ---
"snapshot.zip"を解凍して「スクリプトを起動」から"snapshot.mse"を実行

--- 使用方法 ---
①スナップショットをとるオブジェクトを選択(複数可)
②左上のチェックボックスから右側へ順々にスナップショットをとりたいフレームを入力する(入力する順序は上の画像参照)
③スナップショットをとりたいフレームの数をドロップダウンリスト(1~10)から選択する
④"SnapShot!"ボタンを押す

FrameRateChange

フレームレートを30fpsと60fpsに切り替えるスクリプトです。実際には、30fpsの時には60fpsへ、
それ以外のときは30fpsに設定するようになっています。

→(ドッキング)→→(切り替え)→

ダウンロードはこちらから


--- 起動方法 ---
"frc.zip"を解凍して「スクリプトを起動」から"frc.mse"を実行
ツールバーへドッキングして使ってください。

--- 更新履歴 ---
v1.1 マクロスクリプトに変更しました。その際にボタン表示を切り替えることができなくなってしまうので、設定したフレームレートを"30f","60f"という形でミニリスナーに表示させることで対処しました。

Key Loader

1フレーム単位でx,y,z座標が記載されているテキスト(右下の画像参照)を読み込むことにより選択しているオブジェクトすべてにキーフレームを打つことができます。絶対・相対座標に対応させています。

 

ダウンロードはこちらから
tested using Max 7.5 E


--- 起動方法 ---
"keyloader.zip"を解凍して「スクリプトを起動」から"keyloader.mse"を実行

--- 使用方法 ---
キーフレームを打つ間隔を"Interval Value"で設定した後、「Absolute(絶対位置)」「Relativity(相対位置)」のどちらかを選んでボタンを押し、座標値が記載されているデータを読み込むだけです。

--- 更新履歴 ---
○v1.1(10/27/2005)
ご要望により、キーフレームを打つ間隔を任意に設定できるようにしました。
○v1.3(03/28/2008)
テキストファイルに記載された座標に選択オブジェクトを配置することができるようにしました。

--- 今後の展開 ---
テキストデータの読み込み位置の変更や行をスキップさせて読み込ませるようにする予定です。いつになるかわかりませんが・・・。

Constrains

標準では複数のオブジェクトに対してコンストレインをまとめて適用させることができません。そこで、複数オブジェクトに適用させて問題のなさそうな(よく使う)コンストレインについて対応させました。現在では、パス・リンク・位置・方向・ルックアットコンストレイントの5つです。



ダウンロードはこちらから
tested using Max 6.0 J


--- 起動方法 ---
"constraints.zip"を解凍して「スクリプトを起動」から"constraints.mse"を実行

--- 使用方法 ---
標準機能と同様

Visibility Keyer

選択オブジェクトに可視トラックキーを打つことでオブジェクトのフェードイン(アウト)を行います。その他、可視トラックキーの移動、削除等の機能を付け加えてあります。



ダウンロードはこちらから


---インストール方法---
①"visibilitykeyer.zip"を解凍して、「スクリプトを起動」から"visibilitykeyer.mse"を実行

--- 説明 ---
①各項目(fade In , fede Out)のスピナにフェードイン(アウト)開始フレームを入力
②"Key"ボタンを押す。

--- 追記 ---
左側で入力したフレームに可視トラックキーの値0、右側に値1のキーが作成されます。フェードアウトはその逆。

--- 更新履歴 ---
v1.1 
カレントフレームからフレーム数を入力してフェードイン(アウト)ができるようにしました。

SPCutter

max6/7用スクリプト。
ポリゴンを分割するスクリプトです。QuickSliceやスライス平面で何分割もする作業が簡単に行えます。V2.0からmax7のEditPolyモディファイヤに対応させました。ただあまり分割しすぎると重くなるので注意してください。



ダウンロードはこちらから


---インストール方法---
①"spcutter.zip"を解凍して、「スクリプトを起動」から"spcutter.mse"を実行

--- 説明 ---
●Scissor hands
オブジェクトを編集可能ポリゴンに変換した後に各座標軸のポリゴンを分割します。
①分割したい面を選択する。
②分割したい座標軸に分割数を入力した後に"do"ボタンを押す。

●PolyCutter
選択したポリゴンをスライス平面によるスライスで一定距離に分割します。
①座標系を「ローカル」に設定する。
②オブジェクトを"編集可能ポリゴン"に変換するか"EditPolyモディファイヤ"を適用する。
③ポリゴンを1つ以上選択してスライス平面モードにする。
④スライス平面を切断したいポリゴと直角に配置します。
⑤スライス平面の移動軸とスライスする間隔、回数を入力して"Slice!"ボタンを押す。

--- 更新履歴 ---
○v2.2(2006/01/30)
オブジェクトをトップビュー以外で作った場合の"Scissorhands"におけるバグを修正しました。

○v2.1(2005/02/27) 
"Scissorhands"を選択ポリゴンのみに影響するようにしました。
ただし、上記に記載してあるバグによりうまく行かない場合もあります。

UniqueControl

オブジェクトのコピー、インスタンス、参照の相互変換を行うことができるスクリプトです。



ダウンロードはこちらから
tested using Max 4.26 J


---インストール方法---
①"uniquecontroll.lzh"を解凍して「スクリプトを起動」から"uniquecontroll.mse"を実行

--- 説明 ---
①"SelectObject"ボタンを押して元になるオブジェクト(A)を選択します。
②オブジェクト(A)のインスタンスや参照にしたいオブジェクト(B)を選択します。
③インスタンス、参照を解除するには"ChangeCopy"ボタンを押します。
インスタンスに変更するには"ChangeInstance"ボタンを押します。
参照に変更するには、"ChangeReference"ボタンを押します。

--- 注意 ---
①インスタンス⇒参照、参照⇒インスタンスの作業は必ず"ChangeCopy"を行った後に使用してください。
②バグがまだありそうなので使用には十分注意してください。
③グループ化されたオブジェクトには使用できません。

---2006/05/30 バグ修正 ---
①参照を行った後にコピーを行うとエラーが発生する問題を対処。
②グループには完全に適用できないようにしました(エラー回避のため)。

QuickAngle

マウスでクリックした距離を求めるスクリプトとしてBlurScriptの"QuickMeasure"があります。このスクリプトの発想を利用して角度を求めるスクリプトを作ってみました。




ダウンロードはこちらから
tested using Max 4.26 J

---インストール方法---
①"quickangle.lzh"を解凍して、「スクリプトを起動」から"quickangle.mse"を実行

--- 説明 ---
①メニュー等からスクリプトを起動(頂点にスナップさせたいときはスナップをONにしておく。)
②マウスで頂点3つを選択(図参照)