[PR]
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
3dsMax:スクリプトを書いてみよう! 入門編 第1回
2009.05.20 Wednesday 00:57 | 3ds Max
はjめに、、
私はMaxを全くのデフォルトで使用しています。
なぜなら、ほとんど外部からデータをインポートしてレンダリングする程度の作業にしか使っていないからです。その他の機能(モデリングやアニメーション、シミュレーションなど)は業務外の勉強でしか使っていません。アプリの価格を考えると自腹を切ったわけではありませんが非常にもったいない話です。
そこで、もっと業務での利用頻度を高めたいと常々思っていたのですが、Maxには広範囲に適用できるスクリプト環境があり、変に3DCGにこだわらなければ実に面白い(業務に役立つ)使い方が出来る予感が最近し始めています。
それそのものの内容は専門の、しかもかなりマニアックな内容なので割愛しますが、出来た暁には10回ほどそれをつかえばMaxが新規購入できるくらいの効果が見込めます。
ということで、今回から何回になるか分かりませんが、自分の勉強&覚書+Max所有者でMaxScriptを使われたことがない方向けにMaxScriptをテーマに取り上げたいと思います。
入門編の着地点を操作系改造(?)として、
「ポリゴンモデリング中、頂点のターゲット連結の操作をメタセコとおなじにしよう!」にしたいと思います。
出来るかどうか?? はっきり言って分かりません。
完璧には出来なかったとしても、「ここまではできた」とわかればいいかと思っています。
MaxScriptに限らずスクリプトやプログラム、マクロなどで「どうやって考えたらいいかわからない」という相談を受けることがありますので、私はどうやっているか?を紹介したいと思います。
まず最初に、メタセコの操作はどのようになっているのか?
・頂点をドラッグで「移動」中に右クリック(左右ボタンが同時に押された状態)すると移動中の頂点の「近くに」ある頂点に連結します。頂点を移動する状態のときであればいつでも使用できます。結構便利です。
次に同じようなことをMaxでする場合はどうでしょうか?
・サブオブジェクトレベルを「頂点」にして、「ターゲット連結」をオン(黄色になります)の状態で、連結元、連結先の順番でクリックします。メタセコの場合と違い、トグルタイプなので、「ターゲット連結」をオフにするまでその作業が続けられます。
救いなのは、手順は違っていても同じ処理がどちらも(特にMax側で)標準で出来ることです。
**本当はメタセコ側での「近く」とは画面(ビュー投影結果で「近い」のか、3次元空間的に「近い」のか? どのくらいの距離だと「近い」と判断するのか?などをテストして確認する必要があったりするかと思いますが、今回はあえてそれらを無視して、後に検証します。
ここからはMAXでどうするかを考えます。
一旦言葉に直しますと、
「頂点編集(移動)中にマウスの左右ボタンが同時にクリックされたら、ターゲット連結をオンにする。その際に連結元の頂点は現在選択されている頂点、連結先は現在選択されている頂点に最も近い(ただし、**ピクセル以内)頂点を指定する。終わったらターゲット連結をオフにする」というかんじでしょうか。
実際のコード(スクリプト)をどのように記述するのか、どのようなやり方があるのかは現時点では全く分からないという前提で、それをどうやって調べていくかを次の課題にしたいと思います。
一旦進めやすいように現時点で難しそう、かつ代替方法がありそうなものを外します。
ここでは「マウスの左右ボタンが同時にクリックされたら」と
「現在選択されている頂点に最も近い(ただし、**ピクセル以内)頂点」です。
前者を「イベント」とか「トリガ」といってプログラムなどが動作するきっかけになるものですが、仕込みの方法やタイミング(アプリ起動時からずっとそのキーが押されるのを監視するのか、頂点移動モードのときだけスクリプトを起動するようにするのか)がどうなっているかを調べるのはとっても面倒そうなのでとりあえず外します。
代替案としてスクリプトボタンをとりあえず作り、頂点をくっつけたい頂点の近くに持ってきてからそのボタンを押すような仕様にしておきます。
次の「最も近い」は方法としては2つ考えられます。
空間上の「近い」は、現在選択中の頂点と、それ以外の全ての頂点との距離を調べて最も値が小さいものを連結先頂点とすればよいのですが、頂点数が多いときは時間がかかりそうです。やり方は何となくですがわかります。
もう一つは画面上にある頂点の中で2次元的に近いものを探す方法です。こちらの方が負担がはるかに少ないと思いますが、やり方はわかりません。
代替案として、引っ付けたい頂点はあらかじめ適当に決めておいて(頂点番号は簡単に調べられます)からテストをします。
ということで、初期モデルは「頂点を1つ選択した状態で、ボタンを押したらある固定の頂点にターゲット連結する」という非常にチープなものになります。 これに汎用性をつけて行きたいと思います。
次回はその記述方法や実際のコマンド等の調べ方を紹介します。
****ご要望やご質問はコメント欄に記入頂ければ私の分かる範囲でお答えします***
にほんブログ村
私はMaxを全くのデフォルトで使用しています。
なぜなら、ほとんど外部からデータをインポートしてレンダリングする程度の作業にしか使っていないからです。その他の機能(モデリングやアニメーション、シミュレーションなど)は業務外の勉強でしか使っていません。アプリの価格を考えると自腹を切ったわけではありませんが非常にもったいない話です。
そこで、もっと業務での利用頻度を高めたいと常々思っていたのですが、Maxには広範囲に適用できるスクリプト環境があり、変に3DCGにこだわらなければ実に面白い(業務に役立つ)使い方が出来る予感が最近し始めています。
それそのものの内容は専門の、しかもかなりマニアックな内容なので割愛しますが、出来た暁には10回ほどそれをつかえばMaxが新規購入できるくらいの効果が見込めます。
ということで、今回から何回になるか分かりませんが、自分の勉強&覚書+Max所有者でMaxScriptを使われたことがない方向けにMaxScriptをテーマに取り上げたいと思います。
入門編の着地点を操作系改造(?)として、
「ポリゴンモデリング中、頂点のターゲット連結の操作をメタセコとおなじにしよう!」にしたいと思います。
出来るかどうか?? はっきり言って分かりません。
完璧には出来なかったとしても、「ここまではできた」とわかればいいかと思っています。
MaxScriptに限らずスクリプトやプログラム、マクロなどで「どうやって考えたらいいかわからない」という相談を受けることがありますので、私はどうやっているか?を紹介したいと思います。
まず最初に、メタセコの操作はどのようになっているのか?
・頂点をドラッグで「移動」中に右クリック(左右ボタンが同時に押された状態)すると移動中の頂点の「近くに」ある頂点に連結します。頂点を移動する状態のときであればいつでも使用できます。結構便利です。
次に同じようなことをMaxでする場合はどうでしょうか?
・サブオブジェクトレベルを「頂点」にして、「ターゲット連結」をオン(黄色になります)の状態で、連結元、連結先の順番でクリックします。メタセコの場合と違い、トグルタイプなので、「ターゲット連結」をオフにするまでその作業が続けられます。
救いなのは、手順は違っていても同じ処理がどちらも(特にMax側で)標準で出来ることです。
**本当はメタセコ側での「近く」とは画面(ビュー投影結果で「近い」のか、3次元空間的に「近い」のか? どのくらいの距離だと「近い」と判断するのか?などをテストして確認する必要があったりするかと思いますが、今回はあえてそれらを無視して、後に検証します。
ここからはMAXでどうするかを考えます。
一旦言葉に直しますと、
「頂点編集(移動)中にマウスの左右ボタンが同時にクリックされたら、ターゲット連結をオンにする。その際に連結元の頂点は現在選択されている頂点、連結先は現在選択されている頂点に最も近い(ただし、**ピクセル以内)頂点を指定する。終わったらターゲット連結をオフにする」というかんじでしょうか。
実際のコード(スクリプト)をどのように記述するのか、どのようなやり方があるのかは現時点では全く分からないという前提で、それをどうやって調べていくかを次の課題にしたいと思います。
一旦進めやすいように現時点で難しそう、かつ代替方法がありそうなものを外します。
ここでは「マウスの左右ボタンが同時にクリックされたら」と
「現在選択されている頂点に最も近い(ただし、**ピクセル以内)頂点」です。
前者を「イベント」とか「トリガ」といってプログラムなどが動作するきっかけになるものですが、仕込みの方法やタイミング(アプリ起動時からずっとそのキーが押されるのを監視するのか、頂点移動モードのときだけスクリプトを起動するようにするのか)がどうなっているかを調べるのはとっても面倒そうなのでとりあえず外します。
代替案としてスクリプトボタンをとりあえず作り、頂点をくっつけたい頂点の近くに持ってきてからそのボタンを押すような仕様にしておきます。
次の「最も近い」は方法としては2つ考えられます。
空間上の「近い」は、現在選択中の頂点と、それ以外の全ての頂点との距離を調べて最も値が小さいものを連結先頂点とすればよいのですが、頂点数が多いときは時間がかかりそうです。やり方は何となくですがわかります。
もう一つは画面上にある頂点の中で2次元的に近いものを探す方法です。こちらの方が負担がはるかに少ないと思いますが、やり方はわかりません。
代替案として、引っ付けたい頂点はあらかじめ適当に決めておいて(頂点番号は簡単に調べられます)からテストをします。
ということで、初期モデルは「頂点を1つ選択した状態で、ボタンを押したらある固定の頂点にターゲット連結する」という非常にチープなものになります。 これに汎用性をつけて行きたいと思います。
次回はその記述方法や実際のコマンド等の調べ方を紹介します。
****ご要望やご質問はコメント欄に記入頂ければ私の分かる範囲でお答えします***
にほんブログ村
PR
Trackback
Trackback URL:
Comment