忍者ブログ

≪ 前の記事次の記事 ≫

[PR]

×

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

▲TOP

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

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

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

前回、「aのようにモノを表すものが「オブジェクト」です。」といいましたが、ちょっと大胆すぎました。
aは実際には「入れ物」みたいなものです。その時々で中身が変わります。

リスナーを開いて(マクロレコーダーはオフでいいです)ピンク画面に前回と同じように

a=box()

とします。今 aの中身はボックスと呼ばれるオブジェクトが入っています。
それは今画面に書かれているボックスを指します。
新規書類でこのコマンドを実行したら名前は恐らくBox01です。

では、もう一回 a=box() とします。
そうすると、同じ場所に同じサイズのボックスがもう一個作成されます。
名前はBox02です。それと同時にaの中身もこちらに変わっています。
かといってBox01が消えたわけではありません。
リスナーの記録から外れただけです。


これは「便宜上、これをaと呼ぶね」と言っているだけだからです。
このaのことを厳密には「変数」と呼びます。

ちなみに変数はべつにaでなくとも半角英数字と_(アンダーバー)の組み合わせであればOKです。
また、大文字小文字をMaxScriptの場合区別しません。
なので例えば「MyBox」も「mybox」同じものを指します。


さて、、本題に入ります。

ターゲット連結はどういうことをやっているか調べます。

最初にボックスなり球なりつくって、編集可能ポリゴンにして、頂点編集モードにします。
リスナーを開き、マクロレコーダーをオン(使用可能にする)にします。
「ターゲット連結」ボタンを有効(黄色)にして、適当な隣り合っている頂点を連結します。
そうすると下の画像のような文字列がピンク画面に表示されるかと思います。
4dff167b.jpeg

とりあえず、マクロレコーダーをオフにします。「ターゲット連結」もオフにします。
Ctrl+Zで連結前に戻り、出てきた文字列の一番末尾にカーソルを移動してEnterを押します。
(文字列をコピー&ペーストしてEnterでも同じです。)

8b9d2f55.jpeg

何はともあれ、ターゲット連結モードに入らず(「ターゲット連結ボタンが黄色になる事無く)頂点を連結してくれました。


再度連結前に戻り、サブオブジェクトレベルをポリゴンや要素にしたり、メインオブジェクトレベル(「選択ロールアウト」でどのサブオブジェクトレベルも選 ばれていない状態=「編集可能ポリゴン」がオン(グレー)になっている状態で同じ事をやってみてください。同じ結果になることが分かるかと思います。

594f34ef.jpeg

最後にオブジェクトの選択を外し、何も選択されていない状態でコマンドを実行してみると、、、

e148687d.jpeg
何もおこらず、上の画像のようにリスナーの白画面に
-- 未知のプロパティ : "EditablePoly" 場所は undefined
と意味不明な言葉が表示されると思います。
訳すると「アンタ 編集可能ポリゴンをどうのこうのっていうけどなにもえらんでないじゃない?」という感じです。
Undefinedは訳すと「未定義」「漠然とした」とかいう意味らしいです。

ちなみに $ という記号がありますが、これは「今選んでいるオブジェクト」という言葉の代わりだと思ってください。頻繁に使うことになると思います。

リスナーに $ と入力してEnterを押すと中身が分かります。 オブジェクトを選択している状態ではその内容(メインオブジェクトレベル)が示され、何も選んでいないときはUndefinedと答えが帰ってきます。
複数のオブジェクトを選択しているときは $selection が返って来ます。

また、今回の赤字の返事はエラーなのですが、この程度のことならばエラーが出てもPCが壊れることは無く、何も起こらない程度だと思ってください。なので、遠慮せずにいろいろと試されることをお勧めします。
場合によってはアプリが強制終了するくらいはあるかとおもいますが。

ここで初めてMaxScriptリファレンスで「EditablePoly.weldVerts」とはなんぞや?と調べます。
普通はリファレンス中の「検索」や「キーワード」にこの文字列を入れて探します。
出てこないときは「weldVerts」というように短くするとで検索すると良い結果が得られる場合が多いです。

見つけ出した結果、下記のような情報が得られました。

<bool>weldVerts <index>vertex1 <index>vertex2 <point3>destinationPoint

2 つの指定された頂点を連結し、その結果生じる頂点を指定された位置に移動します。正常に終了した場合は true を返します。


慣れないと 「君は何をいっているんだい?」 な状態です。

< >で囲まれたものはデータの「型」を表すものです。

説明にかなり時間がかかりそうなので、端折りますが ターゲット連結をする際に、最初に押した頂点の番号(整数)がVertex1  次に押した頂点がvertex2 にあたります。 destinationPointはターゲット連結の場合は自動的に後に押した方の頂点の座標 [x,y,z] が指定されます。

ということで、[x,y,z] の値を変えてみたり、頂点番号を変えてみたりして遊んでみてください。
ちなみに連結できる頂点(連結先)には法則性(ルール)があります。
なので、ルールに外れるものを指定した場合、エラーになります。

また、頂点番号は連結した時点で変わります。


今回はここまでにします。
次回はこのままではつぶしが利かないので、汎用性を高める方法について記載します。
PR

Comment (0) | Trackback () | ▲TOP

Comment

  • メールアドレスは入力しても管理画面でしか表示されません。
  • コメント投稿時にパスワードを設定していた場合のみ、名前をクリックすると編集出来ます。

Vodafone絵文字 i-mode絵文字 Ezweb絵文字

Trackback

Trackback URL: