« 趣味:読書って言えるようになるのが目標 | トップページ | 気持ちになって考えてみる »

2011年11月 7日 (月)ICEを使ってみる 第3回 プロジェクト格子点

おはようございます、本日の当番モーションデザイナーのY.Nです。
前回に引き続き、今回もまたまたICEの基礎的な使用方法に関してです。

今回は、配列を扱ってみたいと思います。

まずは結果から。
オブジェクトの形を2次元平面上の点で表してみました。
2011_1104_01


今回説明しようとしている事柄
・配列関連ノードの使い方

結果を得るまでの大まかな流れはだいたいこんな感じでしょうか。
1.必要データを用意
2.対象オブジェクトのサイズを取得
3.オブジェクトのサイズに合わせたグリッドの情報を作成
4.グリッドからオブジェクトにレイキャスト
  グリッド上の点のうち、オブジェクトにヒットするレイを飛ばせる点だけ表示
  簡単のために、レイを飛ばす方向はz軸方向に固定することにしておきます。



では開始…とする前に、基礎の基礎についての備忘メモ。

とりあえず、配列の作り方、要素数、インデックスx番目の指定など。
2011_1104_02  

他にもいろいろありますが、とりあえずこんだけあれば
他のも類推できるようになるかなということで、
ノード単独のメモはここまでにしときます。
では本題に入りましょう。
 

■1.必要データを用意
まずは、データを用意します。
最初に形状参照用のオブジェクト。
今回はPremitive/Model/Body-Manを召喚。
次に点を用意します。
これは状況に合わせて好きなように編集できる、
ポイントクラウドを使いましょう。
で、今回はこのポイントクラウドにICEを設定します。

ところで、最初に配列やるって言ったので、
以下では無理やりにでも配列を使う方向で、話を進めていきます。
 

■2.対象オブジェクトのサイズを取得
対象オブジェクトが縦横どれだけのサイズなのか測っておきます。

後でグリッドからレイを飛ばす時に、
固定サイズのグリッドからレイを飛ばすのであれば不要な事です。
が、ここでは敢えてオブジェクトのサイズに合わせて
グリッドサイズを変えるようにしたいと思います。

オブジェクトの点情報を全部配列にして、
x,y座標の最大値と最小値を取得したらよさそうですね。
2011_1104_06    

■3.オブジェクトのサイズに合わせたグリッドの情報を作成
プリミティブのグリッドを使えば楽そうですけど、ここでは敢えて
配列でグリッドの位置情報を作ります。

まずは簡単な状態から見て行くことにしましょうか。
たとえば1行2列のグリッドの場合、点は下記のように配置されることになります。
2011_1104_07
 

図に点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を用意できます。
2011_1104_08
 

後は、1番で入手していたx,y座標を使ってグリッドサイズを
設定してベクトルの配列を作ったら、このパートは終了です。
2011_1104_09
 

この処理は場所を取るので、
ここではコンパウンド化(次の図でピンクのノード)してます。
 

■4.グリッドからオブジェクトにレイキャスト
グリッド状に置いた点からレイキャストしてHit判定を取得、
さらにHitした分だけキャスト元の情報を取得します。

ここではFind in Array を使って、条件に合致したデータだけ
新規配列の中に追加するようにしています。
2011_1104_10
 

以上全部を一括表示するとこうなります。
2011_1104_11
 

それをコンパウンド化したものがこれ。
2011_1104_12
グリッドの分割数と参照オブジェクト用、あと点の色表示オプションだけ
入力ポートを残してみました。

ってな感じで今回はここまでで。
次回はループ処理やろうと思います。それでは。

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2011/11/ice3-8609.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

« 趣味:読書って言えるようになるのが目標 | トップページ | 気持ちになって考えてみる »

モーションデザイナー」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: ICEを使ってみる 第3回 プロジェクト格子点:

« 趣味:読書って言えるようになるのが目標 | トップページ | 気持ちになって考えてみる »