SlideShare ist ein Scribd-Unternehmen logo
1 von 10
Downloaden Sie, um offline zu lesen
独自のタッチ部位判別処理
概要	
モデル	
  
•  全身で 140	
  万ポリゴン	
  
•  	
  1000以上のオブジェクト	
  
タッチ処理	
  
•  	
  MeshCollider	
  が重い	
  
•  〃を使わずに交差判定	
  
•  iPad	
  2	
  で約 30	
  ミリ秒
概要 ・ 二段階の交差判定	
バウンディングボックス(BB)	

タッチ(Ray)と各オブジェクトの	
  
バウンディングボックスの交差判定	
候補の絞りこみ	

三角形メッシュ	

Rayとメッシュの各三角形の	
  
交差判定 [Tomas	
  Möller	
  1997]	
三角形より奥のBBはスキップ
交差判定・Rayとバウンディングボックス	
Bounds	
  の IntersectRay(Ray)	
  で交差判定	
  
残ったオブジェクトを次のステップへ	

Rayと三角形の交差判定
交差判定・Rayと三角形	
Ray	
P	
交差判定はメッシュのローカル座標系で行う	
  
プログラミング上の注意点	
  
•  Transform.InverseTransformDirecHon()	
  
•  Ray.direcHon	
  
これらは、Ray	
  の方向ベクトルを正規化してしまうため使えない	
  
以下のようにローカル座標の非正規化	
  Ray	
  を求める:	
  
	
  Vector3	
  rayOrigin	
  =	
  transform.InverseTransformPoint(ray.origin);	
  
	
  Vector3	
  rayDirecHon	
  =	
  transform.worldToLocalMatrix	
  *	
  (Vector4)	
  ray.direcHon;	
  
交差判定・Rayと三角形(cont’d)	
計算には	
  “Fast	
  ,	
  Minimum	
  Storage	
  Ray/Triangle	
  IntersecHon”	
  	
  
[Tomas	
  Möller	
  1997]	
  のアルゴリズムを使用。以下その説明	

始点	
  O、方向	
  D	
  の	
  Ray	
  が	
  
距離	
  t	
  で位置 P	
  に当たると	
  
P = O + tD

三角形上の位置	
  P	
  は	
  
バリセントリック座標(u,v)で	
  
P = (1− u − v)V0 + uV1 + vV2
V1	

O	
D	

u	
t	

P	
V0	

v	

V2
交差判定・Rayと三角形(cont’d)	
三角形上の位置	
  P	
  は	
  
バリセントリック座標(u,v)で	
  
P = (1− u − v)V0 + uV1 + vV2

始点	
  O、方向	
  D	
  の	
  Ray	
  が	
  
長さ t	
  で位置 P	
  に当たると	
  
P = O + tD

(1− u − v)V0 + uV1 + vV2 = O + tD
行列で表せば	

! t $
#
&
[−D,V1 − V0 ,V2 − V0 ]# u & = O − V0
# v &
"
%
交差判定・Rayと三角形(cont’d)	
! t $
#
&
[−D,V1 − V0 ,V2 − V0 ]# u & = O − V0
# v &
"
%
クラメールの公式を使って	

! t $
#
&
1
# u & = −D, E , E
1
2
# v &
"
%

! T, E , E
1
2
#
# −D,T, E2
#
# −D, E1,T
"

$
&
&
&
&
%

•  t	
  :	
  Rayの長さ	
  
•  (u,	
  v)	
  :	
  バリセントリック座標
交差判定・Rayと三角形(cont’d)	
! t $
#
&
1
# u & = −D, E , E
1
2
# v &
"
%

! T, E , E
1
2
#
# −D,T, E2
#
# −D, E1,T
"

$
&
&
&
&
%

A, B, C = −(A × C)⋅ B = −(C × B)⋅ A
! Q⋅E $
! t $
2
#
&
#
&
1
# u & = P ⋅ E # P ⋅T &
1 # Q⋅D &
# v &
"
%
"
%
    {P = (D × E2 ),Q = T × E1 }
•  t	
  :	
  Rayの長さ	
  
•  (u,	
  v)	
  :	
  バリセントリック座標
交差判定・Rayと三角形(cont’d)	
! Q⋅E $
! t $
2
#
&
#
&
1
# u & = P ⋅ E # P ⋅ T & 
1 # Q⋅D &
# v &
"
%
"
%

ここが 0	
  だと、Ray	
  と三角形が平行	
  
(交差しないので処理をスキップ)	

交差するのは以下の時だけ(それ以外はスキップ)	

0 ≤ u ≤ 1,  0 ≤ v ≤ 1,  0 ≤ u + v ≤ 1,
候補を絞りこんで	

距離 t	
  を求めて、最近メッシュを保持	
•  データベースからその部位の情報を取得	
  
•  その部位のマテリアル変更	
• 
• 
• 
• 

t	
  :	
  Rayの長さ	
  
(u,	
  v)	
  :	
  バリセントリック座標	
  
P	
  =	
  D	
  x	
  E2	
  
Q	
  =	
  T	
  x	
  E1

Weitere ähnliche Inhalte

Ähnlich wie 20131023 intersection

低ランク行列補完のためのマトロイド理論
低ランク行列補完のためのマトロイド理論低ランク行列補完のためのマトロイド理論
低ランク行列補完のためのマトロイド理論
ryotat
 
20030203 doctor thesis_presentation_makotoshuto
20030203 doctor thesis_presentation_makotoshuto20030203 doctor thesis_presentation_makotoshuto
20030203 doctor thesis_presentation_makotoshuto
Makoto Shuto
 

Ähnlich wie 20131023 intersection (9)

動的輪郭モデル
動的輪郭モデル動的輪郭モデル
動的輪郭モデル
 
Hough forestを用いた物体検出
Hough forestを用いた物体検出Hough forestを用いた物体検出
Hough forestを用いた物体検出
 
低ランク行列補完のためのマトロイド理論
低ランク行列補完のためのマトロイド理論低ランク行列補完のためのマトロイド理論
低ランク行列補完のためのマトロイド理論
 
球面フィッティングの導出と実装
球面フィッティングの導出と実装球面フィッティングの導出と実装
球面フィッティングの導出と実装
 
200730material fujita
200730material fujita200730material fujita
200730material fujita
 
20030203 doctor thesis_presentation_makotoshuto
20030203 doctor thesis_presentation_makotoshuto20030203 doctor thesis_presentation_makotoshuto
20030203 doctor thesis_presentation_makotoshuto
 
機械系のためのメカトロニクス センサ
機械系のためのメカトロニクス センサ機械系のためのメカトロニクス センサ
機械系のためのメカトロニクス センサ
 
Structured Light 技術俯瞰
Structured Light 技術俯瞰Structured Light 技術俯瞰
Structured Light 技術俯瞰
 
衝突判定
衝突判定衝突判定
衝突判定
 

20131023 intersection