ICEを使ってみる 第3回 プロジェクト格子点
おはようございます、本日の当番モーションデザイナーのY.Nです。
前回に引き続き、今回もまたまたICEの基礎的な使用方法に関してです。
今回は、配列を扱ってみたいと思います。
まずは結果から。
オブジェクトの形を2次元平面上の点で表してみました。
今回説明しようとしている事柄
・配列関連ノードの使い方
結果を得るまでの大まかな流れはだいたいこんな感じでしょうか。
1.必要データを用意
2.対象オブジェクトのサイズを取得
3.オブジェクトのサイズに合わせたグリッドの情報を作成
4.グリッドからオブジェクトにレイキャスト
グリッド上の点のうち、オブジェクトにヒットするレイを飛ばせる点だけ表示
簡単のために、レイを飛ばす方向はz軸方向に固定することにしておきます。
では開始…とする前に、基礎の基礎についての備忘メモ。
とりあえず、配列の作り方、要素数、インデックスx番目の指定など。
他にもいろいろありますが、とりあえずこんだけあれば
他のも類推できるようになるかなということで、
ノード単独のメモはここまでにしときます。
では本題に入りましょう。
■1.必要データを用意
まずは、データを用意します。
最初に形状参照用のオブジェクト。
今回はPremitive/Model/Body-Manを召喚。
次に点を用意します。
これは状況に合わせて好きなように編集できる、
ポイントクラウドを使いましょう。
で、今回はこのポイントクラウドにICEを設定します。
ところで、最初に配列やるって言ったので、
以下では無理やりにでも配列を使う方向で、話を進めていきます。
■2.対象オブジェクトのサイズを取得
対象オブジェクトが縦横どれだけのサイズなのか測っておきます。
後でグリッドからレイを飛ばす時に、
固定サイズのグリッドからレイを飛ばすのであれば不要な事です。
が、ここでは敢えてオブジェクトのサイズに合わせて
グリッドサイズを変えるようにしたいと思います。
オブジェクトの点情報を全部配列にして、
x,y座標の最大値と最小値を取得したらよさそうですね。
■3.オブジェクトのサイズに合わせたグリッドの情報を作成
プリミティブのグリッドを使えば楽そうですけど、ここでは敢えて
配列でグリッドの位置情報を作ります。
まずは簡単な状態から見て行くことにしましょうか。
たとえば1行2列のグリッドの場合、点は下記のように配置されることになります。
図に点Indexと行Index、列Indexを振ってみました。
行列それぞれのIndexがわかれば、それと縦横の一辺の距離を
積算することで位置情報を設定することができます。
さて、図をよく見ると、
行Indexは点Indexを点の行数で割った余り、
列Indexは点Indexを点の行数で割った商になってますね。
点Index 行Index 列Index
0 →0 0
1 →1 0
2 →0 1
3 →1 1
4 →0 2
5 →1 2
この関係はグリッドの行列数を変化させても一定です。
というわけで、下記のようにして行列Indexを用意できます。
後は、1番で入手していたx,y座標を使ってグリッドサイズを
設定してベクトルの配列を作ったら、このパートは終了です。
この処理は場所を取るので、
ここではコンパウンド化(次の図でピンクのノード)してます。
■4.グリッドからオブジェクトにレイキャスト
グリッド状に置いた点からレイキャストしてHit判定を取得、
さらにHitした分だけキャスト元の情報を取得します。
ここではFind in Array を使って、条件に合致したデータだけ
新規配列の中に追加するようにしています。
以上全部を一括表示するとこうなります。
それをコンパウンド化したものがこれ。
グリッドの分割数と参照オブジェクト用、あと点の色表示オプションだけ
入力ポートを残してみました。
ってな感じで今回はここまでで。
次回はループ処理やろうと思います。それでは。
| 固定リンク
「モーションデザイナー」カテゴリの記事
- 連休の過ごし方(2012.05.09)
- 睡眠記録アプリ使用の結果、私は7時間寝ないとダメって分かった!(`・ω・´)+(2012.05.08)
- 旅行と発見(2012.05.07)
- セルフコントロール(2012.05.02)
- 外からイジル(2012.05.01)












コメント