忍者ブログ

次の記事 ≫

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

▲TOP

3dsMax:スクリプトを書いてみよう! 入門編 第6回

まず最初に、前回一部誤りがありました。まだ具体的なコードでは出てきていないので、訂正内容は第5回を参照お願いします。

さて、そろそろ最初の着地点に到達したいと思います。
前回のやり方で頂点2の候補のリストアップは可能になりました。
次はどうやって実際の連結先を決めるのか? になります。

PR

つづきはこちら

Comment (0) | Trackback () | ▲TOP

3dsMax:スクリプトを書いてみよう! 入門編 第5回

さて、今回は前回の2番、
頂点2の頂点番号連結後の頂点座標を連結可能な頂点のうち、頂点1に最も近い頂点の番号と座標にする」について考えて見ます。

つづきはこちら

Comment (0) | Trackback () | ▲TOP

3dsMax:スクリプトを書いてみよう! 入門編 第4回

さて、今回は前回出てきた .weldverts を潰しが利くようにする、すなわち汎用性をもたせるようにする方法を考えて見ます。

おさらいですが、選択されている編集可能ポリゴンで頂点を連結するには、

$.editablepoly.weldverts 頂点1の頂点番号(整数) 頂点2の頂点番号(整数) 連結後の頂点座標

と書くと良さそうです。 


つづきはこちら

Comment (0) | Trackback () | ▲TOP

3dsMax:スクリプトを書いてみよう! 入門編 第3回

なんだかちっとも進んでいないような気がしますが、3回目に突入です。

今回こそ本題に近づこうと思っていましたが、先に訂正というか補足をします。

つづきはこちら

Comment (0) | Trackback () | ▲TOP

3dsMax:スクリプトを書いてみよう! 入門編 第2回

ということで2回目です。

とりあえず
「頂点を1つ選択した状態で、ボタンを押したらある固定の頂点にターゲット連結する」スクリプトを作るための準備を始めます。

まず最初にどんなことをすればそのようなことが出来るのかを調べるために「リスナー」というものを使います。

つづきはこちら

Comment (0) | Trackback () | ▲TOP

3dsMax:スクリプトを書いてみよう! 入門編 第1回

はjめに、、

私はMaxを全くのデフォルトで使用しています。

なぜなら、ほとんど外部からデータをインポートしてレンダリングする程度の作業にしか使っていないからです。その他の機能(モデリングやアニメーション、シミュレーションなど)は業務外の勉強でしか使っていません。アプリの価格を考えると自腹を切ったわけではありませんが非常にもったいない話です。

そこで、もっと業務での利用頻度を高めたいと常々思っていたのですが、Maxには広範囲に適用できるスクリプト環境があり、変に3DCGにこだわらなければ実に面白い(業務に役立つ)使い方が出来る予感が最近し始めています。

それそのものの内容は専門の、しかもかなりマニアックな内容なので割愛しますが、出来た暁には10回ほどそれをつかえばMaxが新規購入できるくらいの効果が見込めます。

ということで、今回から何回になるか分かりませんが、自分の勉強&覚書+Max所有者でMaxScriptを使われたことがない方向けにMaxScriptをテーマに取り上げたいと思います。

入門編の着地点を操作系改造(?)として、
「ポリゴンモデリング中、頂点のターゲット連結の操作をメタセコとおなじにしよう!」にしたいと思います。
出来るかどうか?? はっきり言って分かりません。
完璧には出来なかったとしても、「ここまではできた」とわかればいいかと思っています。

MaxScriptに限らずスクリプトやプログラム、マクロなどで「どうやって考えたらいいかわからない」という相談を受けることがありますので、私はどうやっているか?を紹介したいと思います。

まず最初に、メタセコの操作はどのようになっているのか?

32890bc0.jpeg
・頂点をドラッグで「移動」中に右クリック(左右ボタンが同時に押された状態)すると移動中の頂点の「近くに」ある頂点に連結します。頂点を移動する状態のときであればいつでも使用できます。結構便利です。



次に同じようなことをMaxでする場合はどうでしょうか?
max.jpg
・サブオブジェクトレベルを「頂点」にして、「ターゲット連結」をオン(黄色になります)の状態で、連結元、連結先の順番でクリックします。メタセコの場合と違い、トグルタイプなので、「ターゲット連結」をオフにするまでその作業が続けられます。


救いなのは、手順は違っていても同じ処理がどちらも(特にMax側で)標準で出来ることです。

**本当はメタセコ側での「近く」とは画面(ビュー投影結果で「近い」のか、3次元空間的に「近い」のか? どのくらいの距離だと「近い」と判断するのか?などをテストして確認する必要があったりするかと思いますが、今回はあえてそれらを無視して、後に検証します。

ここからはMAXでどうするかを考えます。

一旦言葉に直しますと、
「頂点編集(移動)中にマウスの左右ボタンが同時にクリックされたら、ターゲット連結をオンにする。その際に連結元の頂点は現在選択されている頂点、連結先は現在選択されている頂点に最も近い(ただし、**ピクセル以内)頂点を指定する。終わったらターゲット連結をオフにする」というかんじでしょうか。

実際のコード(スクリプト)をどのように記述するのか、どのようなやり方があるのかは現時点では全く分からないという前提で、それをどうやって調べていくかを次の課題にしたいと思います。

一旦進めやすいように現時点で難しそう、かつ代替方法がありそうなものを外します。

ここでは「マウスの左右ボタンが同時にクリックされたら」と
「現在選択されている頂点に最も近い(ただし、**ピクセル以内)頂点」です。

前者を「イベント」とか「トリガ」といってプログラムなどが動作するきっかけになるものですが、仕込みの方法やタイミング(アプリ起動時からずっとそのキーが押されるのを監視するのか、頂点移動モードのときだけスクリプトを起動するようにするのか)がどうなっているかを調べるのはとっても面倒そうなのでとりあえず外します。

代替案としてスクリプトボタンをとりあえず作り、頂点をくっつけたい頂点の近くに持ってきてからそのボタンを押すような仕様にしておきます。

次の「最も近い」は方法としては2つ考えられます。
空間上の「近い」は、現在選択中の頂点と、それ以外の全ての頂点との距離を調べて最も値が小さいものを連結先頂点とすればよいのですが、頂点数が多いときは時間がかかりそうです。やり方は何となくですがわかります。

もう一つは画面上にある頂点の中で2次元的に近いものを探す方法です。こちらの方が負担がはるかに少ないと思いますが、やり方はわかりません。

代替案として、引っ付けたい頂点はあらかじめ適当に決めておいて(頂点番号は簡単に調べられます)からテストをします。

ということで、初期モデルは「頂点を1つ選択した状態で、ボタンを押したらある固定の頂点にターゲット連結する」という非常にチープなものになります。 これに汎用性をつけて行きたいと思います。

次回はその記述方法や実際のコマンド等の調べ方を紹介します。


****ご要望やご質問はコメント欄に記入頂ければ私の分かる範囲でお答えします***


にほんブログ村 デザインブログ コンピュータグラフィックスへ
にほんブログ村

Comment (0) | Trackback () | ▲TOP

3dsMax:MaxScript:参考にしているHP

最近、MaxScriptに手を出し始めました。
非常に多岐にわたって適用可能なのですが、まだ「ツボ」がわかりません。

その為、いろんなHPを読み漁っているのですが「さっき見たあのページどれだっけ?」状態に陥り、それを再び探すのにえらく時間をとられるという阿呆な状態です。

ということで、今回は覚書もかねて、参考HPをリストします。


・Studio HAND(スタジオハンド)

Tipsがシンプルでわかりやすいです。
(トップ右下のAutodesk University Japan~のところにあります。)
http://www.studio-hand.com/

スクリプトに関してはこちら。
とりあえずこの呼び出しボタンの作り方は知っておいたほうが良いと思います。
http://www.studio-hand.com/au_tips/au_tips_maxscript.htm


・Zで行こう!

解説が非常に論理的で、内容の濃さに脱帽します。
いろいろな疑問を試行錯誤しながら解決して行く流れが最高に良いです。
http://blog.livedoor.jp/take_z_ultima/


・TapuoさんのHP。(タイトル不明:3DSMAXとなっていますが。) 

ここにあるスクリプトの[ buEdgeSketch]が非常に気になっています。
http://www.ummb.jp/lc/TandT/max/index.html

特に、この操作方法。
これが理解できたら、、、あれやこれやに使えそうです。
http://www.ummb.jp/lc/TandT/max/buEdgeSketch/buES.html



Comment (0) | Trackback () | ▲TOP

3dsMax:コンストレイント 最終回

今回はパスコンストレイントと、リンクコンストレイントです。
今までのものとはやや性質が異なります。

・パスコンストレイント
オブジェクトをスプライン/NURBUS/拡張スプライン等で描いた線(パス)にコンストレイントします。
モーションタブの「パスパラメータ」ロールアウトの「パス オプション」にある、「パスに沿った%」が0から100に変化すると、パスの始点から終点まで移動します。

このパーセンテージはマイナスへも設定可能です。そのときには「ループ」にチェックが入っていないとどれだけマイナス数値にしても0扱いです。

複数のパスをターゲットにした場合は、おのおのパスの合計値の所を通ります。

また、デフォルトでは、100フレームで丁度100%になるようになっていますので、例えば30フレームスタートの60フレームゴールとしたい場合は、「セットキー」をONにして、
1.0フレーム(%は0)でキーを打つ。
2.30フレームまでタイムスライダを移動し、%を0にしてキーを打つ
3.60フレームまで移動して、%を100にしてキーを打つ
という風にすると良いです。

オブジェクトを移動することでも%は変えられるので、見た目でやりたい時はこちらが楽かと思います。

フォロー/バンクもありますので、比較的楽に雰囲気のある動きをさせることが出来ます。

・リンクコンストレイント

リンク先(親)を切り替えることができる、コンストレイントです。
移動/回転/スケールが反映されます。

ターゲットは複数追加できますが、指定したフレーム数からリンクが開始され、次のターゲットの開始フレームまではその関係が続く=一度に複数のリンク先は設定不可です。

ここでのリンクはスケマティックビューではリンクとしては表示されません。(コンストレイントとして標示されます。)

使いどころは、、例えば床に落ちている武器をキャラクターが拾って使う、、という場合によいと思います。
拾われるまではワールドや床にリンクしておいて、握ったときからリンクをキャラクターの手などに移す、、以降はキャラクターの動きに合わせて、、、という感じでしょうか。



次のテーマは、、、何にしましょう。

やったことが無いものとしては「モーフターゲット」

最近覚えて遊んでいるのが、「式」と「スクリプト(MaxScript)」、、楽しいです。

あとは、気まぐれに、レンダリング、エフェクト、マテリアル(スキン系)などを地味に勉強しなおしています。

ちょっとづつアップします。


にほんブログ村 デザインブログ コンピュータグラフィックスへ
にほんブログ村

Comment (0) | Trackback () | ▲TOP