Sample9の解説

 

 

Sample 9 ではマテリアルカラーを利用した当たり判定処理です

 

Sample 8では毎フレーム、存在する全ての三角形との当たり判定をとっていましたが

それではかなりのコストがかかってしまうので

検索する三角形を、マテリアルごとに区切ってしまうってな処理です

実際の処理は

モデルごとの当たり判定→メッシュごとの当たり判定→マテリアルごとの当たり判定

全てが当たっていれば当たっているマテリアルの三角形判定をします

 

マテリアルのDiffuseとAmbient、Specularが習得できるので

その値に応じた処理も追加できます

判定を6方向にすれば、

360、PS3のソニックで有名なライトフィールド的な事も出来るのではと思っています

 

やり方は、Sample 8のCheckCollisionの部分を

 

CollisionModel.CheckCollision(BoundlingSphere bs,CollisionModel colMehs,Vector3 startPosition,Vector3 endPosition,out Vector3 HitPosition,out Vector3 HitNormal);
CollisionModel.CheckCollision(BoundlingSphere bs,CollisionModel colMehs,Vector3 startPosition,Vector3 endPosition,out Vector3 HitPosition,out Vector3 HitNormal,out MaterialColor matCol);
BoundingSphereには判定元のBoundingSphere
CollisionModelには三角形を検索するCollisionModel
startPositionにはレイの開始位置
endPisitionにはレイの終了位置
HitPositionには当たった点の位置を習得するVector3
HitNormalには当たった面の法線を習得するVector3
で、マテリアルカラーを得たい場合は
matColにMatrialColorを設定してください

 

Sample 8と違うのは、レイに終端があるってことですね

向きを設定するのではなく、ちゃんと終了位置を記述してください

« 前の記事: を読む

次の記事: を読む »

コメント

※名前の入力は必須です

コメントを残す

---

以下のHTMLタグが使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください