Sample14-Aの解説

 

Sample14-AはOctreeを使用した当たり判定です

クアッドツリーとほぼ一緒ですが、クアッドツリーとは違い高さも考慮する事ができます

メモリの消費を考えながら分割すると、コスト削減になります

使い方は、ほぼクアッドツリーと一緒です

なお、今回から当たり判定をCollisionModel内でやるのではなく

CollisionHelperクラスでやる事にします

機能はCollisionModel内にある物とまったく一緒です

 

OctTree = new OctTree(int,CollisionModel)
コリジョンモデルを分割します
intに分割数。CollisionModelに対象となるモデルを与えてください
bool CollisionHelper.CheckCollision(OctTree,Vec3,Vect3,Vect3,ref Vect3,out Vect3,out MaterialColors, out int);
線分と点の存在するオクトリーに含まれる三角形との当たり判定をとります
1つ目のVector3型にはオクトリー空間判定用の位置を、2つ目には線分の開始位置、3つ目は終了位置を設定してください
4つ目には当たっている座標、5つ目には法線
MaterialColorsには当たっている面のマテリアル、intには1つ目のVector3が存在するオクトリーの空間番号が入ります
1つ目のVector3型は省略可能ですが、オクトリーの判定上、省略しない事をお勧めします

空間番号を得るには

int OctTree.CheckCellParents(int)
任意空間の親の番号を知ることが出来ます

接しているバウンディングボックスを習得するには

BoundingBox CollisionHelper.GetCellsBox(Octree,BoundingBox)
任意バウンディングボックスの8コーナーが接しているバウンディングボックスを習得できます

« 前の記事: を読む

次の記事: を読む »

コメント

※名前の入力は必須です

コメントを残す

---

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

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

※管理人にのみコメントを残す場合は、こちらのフォームよりお願いします