2012年10月25日

アンカーが割り当てられている頂点を編集する modo601 SP2

前回ソフトボディの頂点をリジッドボディと連結するアンカーアイテムが出てきたので、今回はそのアンカーアイテムに関するスクリプトをちょっと作ってみたよ。

fig01

通常のアンカーアイテムのプロパティには接続されている頂点番号が表示されていないので、アンカーがどの頂点に接続されているかはチャンネルリストでindexチャンネルを確認する必要がある。

fig02

そしてその番号がメッシュのどこの頂点なのかを確認するにはビューポートの設定でインデックス表示をONにしたりとか、選択して頂点の情報を見たりとかしないとならないので面倒だ。

そこで上のフォームのようにアンカーが現在リンクしている頂点番号をプロパティパネルに表示して、その番号を「頂点選択」ボタンを押すことで選択状態にして示し、また現在選択している頂点番号を「頂点セット」ボタンを押すことでセットするようにしてみた(下のGIFアニメはクリックすると大きくなるよ)。

fig03

例えば四隅の頂点が左右の直方体のリジッドボディにアンカーで接続されているこのシーンで、

fig04

アンカーアイテムはanchor、anchor(9)、anchor(10)、anchor(18)の4つあって、

fig05

それぞれが下のように割り当てられているとすると、

fig06

anchor(18)を選んで、頂点選択ボタンを押すと、

fig07

アンカーが割り当てられた頂点が選択状態になる。

fig08

ここで例えば下の画像のように別の頂点を選択し、

fig09

頂点セットボタンを押せば、頂点番号が読み取られて頂点番号が再セットされる。

fig10

再びシミュレーションしてみると、アンカーの位置が変わったのが確認できる。

fig11

たまにリジッドボディとアンカーの相対位置がズレる現象が起きたけど、リジッドボディの方のトランスフォームのゼロ(位置)とリセット(位置)で修正できた。

さて、このツールをフォームに組み込むには以下の手順を踏む必要がある。

まずアンカーアイテムを1つ適当に作っておいて(作り方は前回の記事を見てね)、アンカーアイテムをを選択してアンカーのプロパティが表示されている状態にする。

次にフォームエディタを立ち上げて、アンカーアイテムのプロパティをフォームから探す。そのためにリストのフォームの横の三角形ボタンを押してフォーム側のリストを展開しておいてから「フォーム検索」ボタンを押し、

fig12

アンカーの「hardness」プロパティをクリックする。

fig13

これでフォームエディタのリストは「hardness」にハイライトするから、「(新規コントロール)」ボタンをクリックして、「コマンドの追加」を選択し、

fig14

コマンド入力のダイアログが出たら、以下のように入力する。

item.channel {anchor$index} ?

これでアンカーがどの頂点とリンクしているかを表示するボックスがフォームに追加される。そしてフォームエディタのラベルに「頂点番号」などのラベルを入力する。

fig15

 同様にして、以下の2つのコマンドも作成する。

頂点選択 @op_anchor_vert.py 

頂点セット @op_anchor_vert.py 1 

頂点セットの方のコマンドは後ろに引数「1」が付いているので入力の時落とさないでね。この引数の内容は1じゃなくても構わないけど、コマンドの後ろにスペースを1つあけて何か文字が入って無いとスクリプトが頂点セットの動作をしないからね。

あとはスクリプトop_anchor_vert.pyをscriptsフォルダーなどのパスの通ったフォルダーにコピーすれば完了だ。

ちなみにscriptsフォルダーは、以下のコマンドをコマンド入力に打ち込んで実行すれば、イベントログ(システム→高度な設定→イベントログ)に表示されるよ。

query platformservice path.path ? scripts

どうもフォームエディタが不安定でSP3で変更しようとするとmodoが落ちる。だから今回フォームを書き換える部分まで含めた動作確認が出来たのはSP2まで。フォームを書き換えた後ならSP3でも動作確認が出来ているよ。

もしかしたらVC++2010をインストールしたせいかも知れないな・・・。

それではまた次回。

カテゴリー別ページ(ダウンロードはこちらから)



take_z_ultima at 12:01│Comments(0)TrackBack(0)modo | CG

トラックバックURL

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔   
 
 
 

Archives