GraphコラムチュートリアルMCGの6回目ですね。ターゲットオブジェクトの位置情報に正確に合わせる編集と、ある一定範囲のグラフをコンパウンドでまとめる工程を行います。前回作成したグラフをMCGエディタで開きましょう。INode」で指定したオブジェクトが持つ位置情報を「Add」で加算した後に「DivideByScaler」を使って定数(Consistent)で割るという工程でした。子供のころに勉強した平均値を求める式を四則演算で構築してグラフで実行させただけですね(笑)で、作成したグラフは以下の様な物です。もって今回は単純な平均値を求めるのではなく、下図の部分をもう少し賢く編集して見ましょう。MCGでは様々な小技系の関数が用意されています。Vectors」の中身を見ると、ジオメトリが持つベクター情報に対して使用可能な関数が色々と用意されています。コンパウンド化されていないノードの中からいくつか引っ張り出して、それぞれのポップアップを見てみると、それらの用途が見えてきますよ。いくつかノードを引っ張り出してみました。「Cross」は「2つのベクターの交点を割り出す」とありますね。「Clamp」は「指定された範囲内に値を制限する」。「Lerp」は「2つの3Dベクトル間の線形補間を行う」とそれぞれはごくシンプルな関数であることがわかります。いろいろな関数の用途をポップアップ表示や「オペレータの種類」に記載される内容を見て把握しておくと、いざというときに役に立ちますよ!前回作成したグラフではターゲットの2つのオブジェクトが持つベクター情報の補間を行えばいいので、先に記した「Lerp」というノードが使えそうですね。この「Lerp」を使ってグラフを構築し直してみましょう。組み直した物が以下のグラフになるわけです。Single」を接続すればいいわけですね。設定しておきましょう。評価してみましょうね下図のように、オブジェクトの指定ボタンの他に[amount]のパラメータが追加されて、値を変えると、2つのターゲットのコンストレイントの比率が変化しますね。いい感じになってきましたよ!!でも、またコンストレイントさせるティーポッドはオフセットされたままです。最後にこの辺を修正していきましょう。実際に何をすればいいのでしょうか?処理する為には、ワールド座標系で定義されている位置情報を指定したローカル空間情報に置き換えれば良いのです。なんか難しそうですが、要はティーポッドをモディファイヤで定義されているローカル座標系に置き換えなければなりません。matrix.」と書かれています。「行列によって定義される座標系に、ワールド空間にあると想定されるメッシュを座標変換します。modifier」と「TransformMesh」の間に挿入しましょう。参照する座標系を指定しなければなりませんでしたね。行列で指定しなきゃあかんの?と疑問に思うかもしれませんね。matrix.」と書かれていました。(Matrix)]となっていますよね。モディファイヤのmatrixですから「modifier」で検索するとすぐに出てきますよ。こいつです!ではこのノードを入力しましょう。結果はこんな感じです。モディファイヤは完成です!今回作成したモディファイヤは、二つのオブジェクトによって位置コンストレイントさせるもので、極シンプルな機能と言えますが、ほかのグラフ作成でも再利用ができそうな部分がありますね。このグラフのエンジン部分をコンパウンドノードとして保存し、いつでも再利用できるようにしてみましょう。コンパウンドノードの組み方コンパウンドノードはもうおわかりだと思いますが、ノード接続されたグラフの一部を、一つのノードとして保存、再利用しようという物です。compound」ノードを接続させて[.maxcompound]ファイルで保存します。注意するべき事してはユーザーインターフェースに関する各種「Parameter」ノードに関しては、組み込むことは出来ませんので注意して下さい。保存は出来るのですが、メッセージログにはファイルを名前を付けて保存しました。nodes.と表記されます。ログの最後の方に「コンパウンドはパラメータを含めることは出来ません。Inputノード出なければなりません」と書かれてますね。ファイルで保存する場合は入力に関するノードには「Input」ノードである必要があります。ログにはエラーの情報が表示されます。ノードが表示されない場合は、エラーが発生している場合が想定されますので、ログを確認するようにして下さい。「Input」ノードに切り替えて再度保存してみます。グラフとしては下図のような状態です。この状態で[.maxcompound]ファイルで保存しましょう。保存先は以前コラムで書いたように以下のパスに保存します。ちなみに保存名は「test.maxcompound」で保存しましょう。ノードは使用でいるのですが、それでは面倒ですね。オペレータリストに登録されます。ちなみに現在のオペレータリストから「Compounds」グループを開くと、はいありました!「test」という紫色のノードが!試しに、エディタにドロップするとこんな感じです。なんともまあ、さみしい感じではありますが、この中身を開いてみましょうか?開くためには、ノードを選択し、マウス右クリックしてメニューから「新しいタブでコンポーネントを開く」を実行します。新しいタブが作成されて、このコンパウンドノードの中身を閲覧、編集が出来るようになります。オペレータを再ロード」を実行して下さいねでは、このコラムで仕上げた2オブジェクトで位置コンストレイントさせるグラフの一部をコンパウンド化させてみましょう。Compound」に入れ替えようと思ったのですが、ここは今後の汎用性を考えて「Lerp」ノードのまででコンパウンド化させておきましょう。下図のような状態です。さあ、この状態で「2Point_P_constraint.maxcompound」という名前で保存しましょう。終わりましたら、オペレータを再読込させて、オペレータリストから新規エディタ上へ配置します。(Venctor3)]の後は、先程と同じようにノードを組んでおきます。下図のような状態です。この後いろいろな場面で活用出来ますよね。インターフェイスの改造などを紹介していきたいと思います。Graphを使おう!(その7)2015.07.14MCG7回目です。今回は作成したカスタムツールのユーザーインターフェイスに関する編集を行っていきましょう。30日間無償で体験できます。30日間無償で体験できます。製品のご購入に関してご連絡を希望される場合は、こちらからお問い合わせください。