SlideShare una empresa de Scribd logo
1 de 12
透視変換 (Frus)
Frustum Version
視錐台の導入
• 視錐台…ワールド座標系において、描画
対象としての空間

視錐台の空間
視錐台の外は、描画対象外
視錐台の構成
遠面

近面 ( 投影面 )
基準面
遠面、近面 ( 投影 ) は任意に設定可能。
しかし、近面は遠面より近くなくてはならない
基準面より、手前に近面 ( 投影面 ) を置くことも可能

視錐台の角度、位置によって、大きさが確定する(後スライド)
視錐台決定の数式
角度 α により、 e が求まる。
Aspect 比により、 β が決定

-1

y アスペクト比 =y/x=as

基準面

1

-as

e

基準面

x

β/2

α/2

as

e

z

z

y

x
e=1/tan(α/2)

β=2*Inverse(tan(as/e))
近面 ( 投影面 ) の座標
投影面までの距離 (z 方向 ) がでれば、投影面のサイズが割り出せる
-x=n/e
-1

e
n
x
z

この場合は近面 ( 投影面 ) が基準面より近くにある場合、
だが、
基準面より遠くにあってもこの関係は変わらない
x=+n/e
y=+an/e
x=-n/e
y= -an/e
同次空間変換
2 (-1 ~ 1)
遠面

2
2

近面
( 投影面 )

視錐台の空間

同次空間

視錐台から、立方体の空間に写像 ( 変換 ) する
立方体になると、クリッピングしやすい。
その範囲は -1 ~1である。
それには、近面の x,y,z 座標が必要である。 ( 前ページに求め方記載 )
射影の方法
z= -∞
右手系座標

遠面

n,f は、座標値でなくて
視錐台までの距離であることに注意
また、 Pz は , 右手系であれば、
0<Pz<-∞
にある
近面
( 投影面 )

f(far までの距離 )

(Px,Py,Pz,1)

n(near までの距離 )
y
z

x

投影された座標値は
x= - nPx/Pz
y= - nPy/Pz

注意!
座標系が左手系の場合、
x= nPx/Pz
y= nPy/Pz  重要式1
となる
具体的な同次空間手法 (x,y)
l=left-x
r=right-x
b=bottom-x
t=top-x
(l,t,n)

(l,b,n)
n,f は、
座標値でなくて
視錐台まで
の距離である
ことに注意
(l,r,b,t は座標値 )

視錐台 ( カメラ、視野空間 ) の範囲を -1 ~1の空間に写像したい。
そのためには、どうすればいいのか?
Ex) x 軸 ( 視錐台は右手系 )
(x-l)
(r,t,n)

(r,b,n)

同次空間
2 (-1 ~ 1)

(x,y,z)
(r,b,f)
(-1,t,n)
X の縮小率 ( 拡大率 ) は
ratiox ={1-(-1)}/(r-l)
=2/(r-l)
x
= (x-l)*ratiox+(-1)
= 2(x-l)(r-l)-1
同様に y に対しても、
ratioy =2/(t-b)
y
= (y-b)*ratioy+(-1)
= 2(y-b)(t-b)-1

(r,b,n)
(1,t,n)

重要式2
具体的な同次空間手法 (z)
同時座標が右手系の場合、
-f<Pz<-n を満たす必要
( 左手系 :n<Pz<f)
z’=A/z+B 重要式3
を式としてとる。
-1 = -(A / n) +B
1 = - (A / f ) +B

n,f は座標値までの距離
( 左手系 : -1=A/n+b)
( 左手系 : 1=A/f+b)

   
  

A,B を代入操作で解くと、

右手系

2fn
a
A
f n
f n
b
B
f n

左手系

2fn
今回の課題!
 f n
Mathematica を
f n
b
使っても構いません
f n
a
同次空間の座標決定 - 右手系
x’=2(x-l)(r-l)-1
y’=2(y-b)(t-b)-1
z’=A/z+B

 


2fn
f n
f n
b
B
f n

A
a

x= nPx/Pz
y= nPy/Pz
z= Pz

代入すると、
2( x − l ) − ( r − l ) 2 x − (r + l )
=
r −l
r −l
2n
Px r + l
=
(− ) −
r − l Pz r − l
2( y − b) − (t − b) 2 x − (t + b)
y' =
=
t −b
t −b
2n
Py t + b
=
(− ) −
t − b Pz t − b

x,y,z は、視野空間での点の座標値
x’,y’,z’ は同次空間での座標値

x' =

2nf 1
f
( )+
f − n Pz
f
2nf
1
=−
(− ) +
f − n Pz
z' =

両辺を -Pz 倍する
(-Pz 除算を消す )

+n
−n
f +n
f − n 上記に合わせ、 Pz の項にマイナスを置く

2n
r +l
Px +
Pz
r −l
r −l
2n
t +b
− y ' Pz =
Py +
Pz
t −b
t −b
2nf
f +n
− z ' Pz = −
−
Pz
f −n f −n
− x' Pz =

2n
r +l
Px +
Pz
r −l
r −l
2n
t +b
− y ' Pz =
Py +
Pz
t −b
t −b
2nf
f +n
− z ' Pz = −
−
Pz
f −n f −n
− x' Pz =

 2n
 − x' Pz   r − l
− y ' Pz  

= 0
 − z ' Pz  

  0
 1  
 0


0
2n
t −b
0
0

r +l
r −l
t +b
t −b
f +n
−
f −n
0


  Px 
 
0   Py 

2nf   Pz 
 
−
f − n  1 
0 

0

ここを -1 にすれば、 -Pz の w 除算

 2n
 x'   r − l
 y ' 
 = 0
 z ' 
   0
1 
 0


0
2n
t −b
0
0

r +l
r −l
t +b
t −b
f +n
−
f −n
−1


  Px 
 
0   Py 

2nf   Pz 
 
−
f − n  1 
0 

0
同次空間の座標決定 - 左手系

課題です
まとめ
• パースペクティブ変換をした後は、パースペクティブコ
レクションを行う必要がある
 2n
x'   r − l

 y ' 
 = 0
 z ' 
   0
1 
 0


0
2n
t −b
0
0

r +l
r −l
t +b
t −b
f +n
−
f −n
−1


  Px 
 
0   Py 

2nf   Pz 
 
−
f − n  1 
0 

0

• 上記式により、同次空間へ行列変換可能。しかし、 n,f
は視野空間原点からの距離、 r,l,t,p は座標
• 同次座標は、x、y、zに対し、 -1 ~ 1 の範囲をとる
• -1,1 を超えた座標は Clipping する
• 上記行列は視野空間が右手系のみ可能であることに注意

Más contenido relacionado

La actualidad más candente

Magical
MagicalMagical
Magicaloupc
 
Processing資料(1) Processingの基本
Processing資料(1) Processingの基本Processing資料(1) Processingの基本
Processing資料(1) Processingの基本reona396
 
Processing資料(6) 様々な図形
Processing資料(6) 様々な図形Processing資料(6) 様々な図形
Processing資料(6) 様々な図形reona396
 
【やってみた】リーマン多様体へのグラフ描画アルゴリズムの実装【実装してみた】
【やってみた】リーマン多様体へのグラフ描画アルゴリズムの実装【実装してみた】【やってみた】リーマン多様体へのグラフ描画アルゴリズムの実装【実装してみた】
【やってみた】リーマン多様体へのグラフ描画アルゴリズムの実装【実装してみた】Yuuki Takano
 
[(F#における)Modus Ponens と Cut]
[(F#における)Modus Ponens と Cut][(F#における)Modus Ponens と Cut]
[(F#における)Modus Ponens と Cut]Nobuhisa Koizumi
 
Slide computational design2018_10_181130
Slide computational design2018_10_181130Slide computational design2018_10_181130
Slide computational design2018_10_181130hiroshimadesignlab
 

La actualidad más candente (7)

Magical
MagicalMagical
Magical
 
Processing資料(1) Processingの基本
Processing資料(1) Processingの基本Processing資料(1) Processingの基本
Processing資料(1) Processingの基本
 
Processing資料(6) 様々な図形
Processing資料(6) 様々な図形Processing資料(6) 様々な図形
Processing資料(6) 様々な図形
 
FMMの実装と導出
FMMの実装と導出FMMの実装と導出
FMMの実装と導出
 
【やってみた】リーマン多様体へのグラフ描画アルゴリズムの実装【実装してみた】
【やってみた】リーマン多様体へのグラフ描画アルゴリズムの実装【実装してみた】【やってみた】リーマン多様体へのグラフ描画アルゴリズムの実装【実装してみた】
【やってみた】リーマン多様体へのグラフ描画アルゴリズムの実装【実装してみた】
 
[(F#における)Modus Ponens と Cut]
[(F#における)Modus Ponens と Cut][(F#における)Modus Ponens と Cut]
[(F#における)Modus Ponens と Cut]
 
Slide computational design2018_10_181130
Slide computational design2018_10_181130Slide computational design2018_10_181130
Slide computational design2018_10_181130
 

Destacado

視野変換1(基礎編)
視野変換1(基礎編)視野変換1(基礎編)
視野変換1(基礎編)康弘 等々力
 
Visual Studio 2012のDirect3Dアプリ開発者向け新機能を知ろう
Visual Studio 2012のDirect3Dアプリ開発者向け新機能を知ろうVisual Studio 2012のDirect3Dアプリ開発者向け新機能を知ろう
Visual Studio 2012のDirect3Dアプリ開発者向け新機能を知ろうMasafumi Takahashi
 
Sift特徴量について
Sift特徴量についてSift特徴量について
Sift特徴量についてla_flance
 
New Approach to Data Analysis System “Tableau + TreasureData” at Tableau User...
New Approach to Data Analysis System “Tableau + TreasureData” at Tableau User...New Approach to Data Analysis System “Tableau + TreasureData” at Tableau User...
New Approach to Data Analysis System “Tableau + TreasureData” at Tableau User...takaya imai
 
次の世代のインタラクティブレンダリング5つの挑戦と10の滅ぶべき技術
次の世代のインタラクティブレンダリング5つの挑戦と10の滅ぶべき技術 次の世代のインタラクティブレンダリング5つの挑戦と10の滅ぶべき技術
次の世代のインタラクティブレンダリング5つの挑戦と10の滅ぶべき技術 Masafumi Takahashi
 
Learning to rank for IR
Learning to rank for IRLearning to rank for IR
Learning to rank for IRtakaya imai
 
Introduction to fuzzy kmeans on mahout
Introduction to fuzzy kmeans on mahoutIntroduction to fuzzy kmeans on mahout
Introduction to fuzzy kmeans on mahouttakaya imai
 
BRDF レンダリングの方程式
BRDF レンダリングの方程式BRDF レンダリングの方程式
BRDF レンダリングの方程式康弘 等々力
 
物理ベースの絵作りのための基礎
物理ベースの絵作りのための基礎物理ベースの絵作りのための基礎
物理ベースの絵作りのための基礎fumoto kazuhiro
 
Gcm#3 vr project making of サラと毒蛇の王冠
Gcm#3 vr project making of サラと毒蛇の王冠Gcm#3 vr project making of サラと毒蛇の王冠
Gcm#3 vr project making of サラと毒蛇の王冠GREE/Art
 
Gcm#3 アーティストのためのプログラマブルシェーダ講座
Gcm#3 アーティストのためのプログラマブルシェーダ講座Gcm#3 アーティストのためのプログラマブルシェーダ講座
Gcm#3 アーティストのためのプログラマブルシェーダ講座GREE/Art
 
Lo smart index in Emilia Romagna e a Reggio Emilia, Marco Mena
Lo smart index in Emilia Romagna e a Reggio Emilia, Marco MenaLo smart index in Emilia Romagna e a Reggio Emilia, Marco Mena
Lo smart index in Emilia Romagna e a Reggio Emilia, Marco MenaComune di Reggio nell'Emilia
 
レプリカ交換モンテカルロ法で乱数の生成
レプリカ交換モンテカルロ法で乱数の生成レプリカ交換モンテカルロ法で乱数の生成
レプリカ交換モンテカルロ法で乱数の生成Nagi Teramo
 
GDC 2015 でのハイエンドグラフィックス
GDC 2015 でのハイエンドグラフィックスGDC 2015 でのハイエンドグラフィックス
GDC 2015 でのハイエンドグラフィックスTakashi Imagire
 

Destacado (17)

視野変換1(基礎編)
視野変換1(基礎編)視野変換1(基礎編)
視野変換1(基礎編)
 
Visual Studio 2012のDirect3Dアプリ開発者向け新機能を知ろう
Visual Studio 2012のDirect3Dアプリ開発者向け新機能を知ろうVisual Studio 2012のDirect3Dアプリ開発者向け新機能を知ろう
Visual Studio 2012のDirect3Dアプリ開発者向け新機能を知ろう
 
Sift特徴量について
Sift特徴量についてSift特徴量について
Sift特徴量について
 
視野変換2
視野変換2視野変換2
視野変換2
 
New Approach to Data Analysis System “Tableau + TreasureData” at Tableau User...
New Approach to Data Analysis System “Tableau + TreasureData” at Tableau User...New Approach to Data Analysis System “Tableau + TreasureData” at Tableau User...
New Approach to Data Analysis System “Tableau + TreasureData” at Tableau User...
 
次の世代のインタラクティブレンダリング5つの挑戦と10の滅ぶべき技術
次の世代のインタラクティブレンダリング5つの挑戦と10の滅ぶべき技術 次の世代のインタラクティブレンダリング5つの挑戦と10の滅ぶべき技術
次の世代のインタラクティブレンダリング5つの挑戦と10の滅ぶべき技術
 
Learning to rank for IR
Learning to rank for IRLearning to rank for IR
Learning to rank for IR
 
Introduction to fuzzy kmeans on mahout
Introduction to fuzzy kmeans on mahoutIntroduction to fuzzy kmeans on mahout
Introduction to fuzzy kmeans on mahout
 
BRDF レンダリングの方程式
BRDF レンダリングの方程式BRDF レンダリングの方程式
BRDF レンダリングの方程式
 
物理ベースの絵作りのための基礎
物理ベースの絵作りのための基礎物理ベースの絵作りのための基礎
物理ベースの絵作りのための基礎
 
Gcm#3 vr project making of サラと毒蛇の王冠
Gcm#3 vr project making of サラと毒蛇の王冠Gcm#3 vr project making of サラと毒蛇の王冠
Gcm#3 vr project making of サラと毒蛇の王冠
 
環境マッピング
環境マッピング環境マッピング
環境マッピング
 
Gcm#3 アーティストのためのプログラマブルシェーダ講座
Gcm#3 アーティストのためのプログラマブルシェーダ講座Gcm#3 アーティストのためのプログラマブルシェーダ講座
Gcm#3 アーティストのためのプログラマブルシェーダ講座
 
8254 презентация
8254 презентация8254 презентация
8254 презентация
 
Lo smart index in Emilia Romagna e a Reggio Emilia, Marco Mena
Lo smart index in Emilia Romagna e a Reggio Emilia, Marco MenaLo smart index in Emilia Romagna e a Reggio Emilia, Marco Mena
Lo smart index in Emilia Romagna e a Reggio Emilia, Marco Mena
 
レプリカ交換モンテカルロ法で乱数の生成
レプリカ交換モンテカルロ法で乱数の生成レプリカ交換モンテカルロ法で乱数の生成
レプリカ交換モンテカルロ法で乱数の生成
 
GDC 2015 でのハイエンドグラフィックス
GDC 2015 でのハイエンドグラフィックスGDC 2015 でのハイエンドグラフィックス
GDC 2015 でのハイエンドグラフィックス
 

視野変換2

  • 3. 視錐台の構成 遠面 近面 ( 投影面 ) 基準面 遠面、近面 ( 投影 ) は任意に設定可能。 しかし、近面は遠面より近くなくてはならない 基準面より、手前に近面 ( 投影面 ) を置くことも可能 視錐台の角度、位置によって、大きさが確定する(後スライド)
  • 4. 視錐台決定の数式 角度 α により、 e が求まる。 Aspect 比により、 β が決定 -1 y アスペクト比 =y/x=as 基準面 1 -as e 基準面 x β/2 α/2 as e z z y x e=1/tan(α/2) β=2*Inverse(tan(as/e))
  • 5. 近面 ( 投影面 ) の座標 投影面までの距離 (z 方向 ) がでれば、投影面のサイズが割り出せる -x=n/e -1 e n x z この場合は近面 ( 投影面 ) が基準面より近くにある場合、 だが、 基準面より遠くにあってもこの関係は変わらない x=+n/e y=+an/e x=-n/e y= -an/e
  • 6. 同次空間変換 2 (-1 ~ 1) 遠面 2 2 近面 ( 投影面 ) 視錐台の空間 同次空間 視錐台から、立方体の空間に写像 ( 変換 ) する 立方体になると、クリッピングしやすい。 その範囲は -1 ~1である。 それには、近面の x,y,z 座標が必要である。 ( 前ページに求め方記載 )
  • 7. 射影の方法 z= -∞ 右手系座標 遠面 n,f は、座標値でなくて 視錐台までの距離であることに注意 また、 Pz は , 右手系であれば、 0<Pz<-∞ にある 近面 ( 投影面 ) f(far までの距離 ) (Px,Py,Pz,1) n(near までの距離 ) y z x 投影された座標値は x= - nPx/Pz y= - nPy/Pz 注意! 座標系が左手系の場合、 x= nPx/Pz y= nPy/Pz  重要式1 となる
  • 8. 具体的な同次空間手法 (x,y) l=left-x r=right-x b=bottom-x t=top-x (l,t,n) (l,b,n) n,f は、 座標値でなくて 視錐台まで の距離である ことに注意 (l,r,b,t は座標値 ) 視錐台 ( カメラ、視野空間 ) の範囲を -1 ~1の空間に写像したい。 そのためには、どうすればいいのか? Ex) x 軸 ( 視錐台は右手系 ) (x-l) (r,t,n) (r,b,n) 同次空間 2 (-1 ~ 1) (x,y,z) (r,b,f) (-1,t,n) X の縮小率 ( 拡大率 ) は ratiox ={1-(-1)}/(r-l) =2/(r-l) x = (x-l)*ratiox+(-1) = 2(x-l)(r-l)-1 同様に y に対しても、 ratioy =2/(t-b) y = (y-b)*ratioy+(-1) = 2(y-b)(t-b)-1 (r,b,n) (1,t,n) 重要式2
  • 9. 具体的な同次空間手法 (z) 同時座標が右手系の場合、 -f<Pz<-n を満たす必要 ( 左手系 :n<Pz<f) z’=A/z+B 重要式3 を式としてとる。 -1 = -(A / n) +B 1 = - (A / f ) +B n,f は座標値までの距離 ( 左手系 : -1=A/n+b) ( 左手系 : 1=A/f+b)         A,B を代入操作で解くと、 右手系 2fn a A f n f n b B f n 左手系 2fn 今回の課題!  f n Mathematica を f n b 使っても構いません f n a
  • 10. 同次空間の座標決定 - 右手系 x’=2(x-l)(r-l)-1 y’=2(y-b)(t-b)-1 z’=A/z+B     2fn f n f n b B f n A a x= nPx/Pz y= nPy/Pz z= Pz 代入すると、 2( x − l ) − ( r − l ) 2 x − (r + l ) = r −l r −l 2n Px r + l = (− ) − r − l Pz r − l 2( y − b) − (t − b) 2 x − (t + b) y' = = t −b t −b 2n Py t + b = (− ) − t − b Pz t − b x,y,z は、視野空間での点の座標値 x’,y’,z’ は同次空間での座標値 x' = 2nf 1 f ( )+ f − n Pz f 2nf 1 =− (− ) + f − n Pz z' = 両辺を -Pz 倍する (-Pz 除算を消す ) +n −n f +n f − n 上記に合わせ、 Pz の項にマイナスを置く 2n r +l Px + Pz r −l r −l 2n t +b − y ' Pz = Py + Pz t −b t −b 2nf f +n − z ' Pz = − − Pz f −n f −n − x' Pz = 2n r +l Px + Pz r −l r −l 2n t +b − y ' Pz = Py + Pz t −b t −b 2nf f +n − z ' Pz = − − Pz f −n f −n − x' Pz =  2n  − x' Pz   r − l − y ' Pz    = 0  − z ' Pz      0  1    0  0 2n t −b 0 0 r +l r −l t +b t −b f +n − f −n 0    Px    0   Py   2nf   Pz    − f − n  1  0   0 ここを -1 にすれば、 -Pz の w 除算  2n  x'   r − l  y '   = 0  z '     0 1   0  0 2n t −b 0 0 r +l r −l t +b t −b f +n − f −n −1    Px    0   Py   2nf   Pz    − f − n  1  0   0
  • 12. まとめ • パースペクティブ変換をした後は、パースペクティブコ レクションを行う必要がある  2n x'   r − l   y '   = 0  z '     0 1   0  0 2n t −b 0 0 r +l r −l t +b t −b f +n − f −n −1    Px    0   Py   2nf   Pz    − f − n  1  0   0 • 上記式により、同次空間へ行列変換可能。しかし、 n,f は視野空間原点からの距離、 r,l,t,p は座標 • 同次座標は、x、y、zに対し、 -1 ~ 1 の範囲をとる • -1,1 を超えた座標は Clipping する • 上記行列は視野空間が右手系のみ可能であることに注意