slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
カメラ座標に関する操作 PowerPoint Presentation
Download Presentation
カメラ座標に関する操作

Loading in 2 Seconds...

play fullscreen
1 / 20

カメラ座標に関する操作 - PowerPoint PPT Presentation


  • 73 Views
  • Uploaded on

カメラ座標に関する操作. 牧之内研究室4年 増尾 源哉 2002年7月19日. 参考文献: ・ DirectX SDK ヘルプ ・「3次元コンピュータグラフィックス」     昭晃堂 中前栄八労・西田友是 共著. Hawk's Eye Web ページ http://www.db.is.kyushu-u.ac.jp/hawks_publications/. カメラ座標. y. z. x. ワールド座標. y ’. x ’. z ’. カメラ座標とは?. カメラ座標とは、ワールド座標に対し、「視点」を置く位置を原点とした座標である。

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'カメラ座標に関する操作' - tristana


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

カメラ座標に関する操作

牧之内研究室4年 増尾 源哉

2002年7月19日

参考文献: ・DirectX SDK ヘルプ

・「3次元コンピュータグラフィックス」

    昭晃堂 中前栄八労・西田友是 共著

Hawk's Eye Web ページ

http://www.db.is.kyushu-u.ac.jp/hawks_publications/

slide2

カメラ座標

y

z

x

ワールド座標

y’

x’

z’

カメラ座標とは?
  • カメラ座標とは、ワールド座標に対し、「視点」を置く位置を原点とした座標である。
  • また、そのとき、視線はz’軸の方向となる。そして、z’の方向を向いたときにカメラ座標での「上側」はy’軸の方向となり、「右側」はx’軸の方向となる。
slide3
注意点
  • DirectXでは、左手系座標を利用しているので、ある軸に関する「回転」や「ベクトルの外積」は次のようになる。

A×B

A

B

directx
DirectXでのカメラ座標の設定
  • DirectXでカメラ座標を設定する際は、ビュー行列という4×4型の行列に値を設定すればよい。
  • このビュー行列は、ワールド座標からカメラ座標に座標変換をする際に用いられる。
  • ビュー行列に単位行列を与えると、カメラ座標はワールド座標と等しくなる。
slide5
カメラの操作
  • カメラで必要な操作は次のようなものである。
slide7

y

z

x

1.視点切り替え
  • ワールド座標から右図のPにビュー座標を移す変換行列がMで与えられているとする。
  • 現在のカメラ位置をC(c1, c2, c3)、移動する先のカメラ位置をC’(c1’, c2’, c3’)(どちらもワールド座標系での座標)とする。

(c1’-c1, c2’-c2, c3’-c3)だけ平行移動すればよい。この平行移動の行列は、

C(c1, c2, c3)

C’(c1’, c2’, c3’)

であり、ビュー行列として、

を設定すればよい。

slide8
2.ズーム(注視点に近づく、遠ざかる)
  • カメラ座標系では、カメラ位置Cは原点(0, 0, 0)、

注視点Pは(0, 0, s)(sは正)と表すことができる。

  • このとき、カメラをPに近づいたり、遠ざかったりするには、z軸方向に平行移動をすればよい。よって、

平行移動

C

C’

P

で与えられる。よって、ビュー行列として、

を設定すればよい。

また、0<k<sのとき注視点に近づき、k<0のとき注視点から遠ざかる。

slide9

y

C(c1, c2, c3)

P(p1, p2, p3)

z

Q(q1, q2, q3)

x

3.特定の注視点にカメラを向ける
  • 下の図のように、カメラの位置がC、注視点がPのとき、カメラを回転させて点Qを注視点とすることを考える。
slide10

y

n

C(c1, c2, c3)

P(p1, p2, p3)

θ

z

Q(q1, q2, q3)

x

  • 三角形CPQの単位法線ベクトルをnとすると、

 と表され、点PからQに注視点を移すには、このベクトルnを軸とし、nの周りにθ回転すればよい。

  • よって、nのまわりの回転を表す行列を求めればよいことになる。
slide11

y

C(c1, c2, c3)

v = (v1, v2, v3)

z

P(p1, p2, p3)

x

ある平面に対する法線ベクトルを求める方法
  • ワールド座標において、カメラの位置C(c1, c2, c3)(ワールド座標における座標)、 点P(p1, p2, p3)(ワールド座標における座標)、Pを始点とするベクトルv=(v1, v2, v3)の2点とベクトルが与えられたとする。これらが作る平面に対する法線を求めることを考える。

ワールド座標

slide12
ある平面に対する法線ベクトルを求める方法

y

C(c1, c2, c3)

n=(n1, n2, n3)

v = (v1, v2, v3)

z

P(p1, p2, p3)

x

  •  2点C, Pとベクトルvが作る平面に対する法線は、C, P, vが作る3角形の法線のことである。
  •  ここで、ベクトルCPを考えると、この三角形の法線は、ベクトルCPとベクトルvの外積であることから、法線ベクトルは、次のように与えらる。

ゆえに、

slide13
単位ベクトルnの周りの回転を表す行列
  • n=(u, v, w)を単位ベクトルとする。座標をnの周りにθ回転させる変換行列は、

で与えられる。よって、ビュー行列に、

を設定すればよい。

slide14
単位ベクトルnの周りの回転を表す行列(補足)単位ベクトルnの周りの回転を表す行列(補足)
  • 前述の単位ベクトルがx軸方向、y軸方向、z軸方向であった場合の行列はそれぞれ以下のとおりである
    • 単位ベクトルがx軸方向
    • 単位ベクトルがy軸方向
    • 単位ベクトルがz軸方向
slide15
4.注視点を固定したカメラ位置の回転
  • 注視点を固定し、現在の視点Cを始点とするベクトルvの方向にθ回転するための変換を考える。

y

P(p1, p2, p3)

C(c1, c2, c3)

θ

v=(v1, v2, v3)

z

C’(c1’, c2’, c3’)

x

slide16

P(p1, p2, p3)

|C P|

|C P|

θ

y

z

C(c1, c2, c3)

x

C’(c1’, c2’, c3’)

x軸、y軸方向へのカメラ位置の回転
  • まず、簡単のため、vをカメラ座標系でのx軸方向、y軸方向として考える。(カメラ座標系でのz軸は視点の方向なので、z軸の方向に回転する、ということは考えなくてよい)
  • x軸方向にθ回転することを考える。
    • まず回転後の座標C’に平行移動
    • 向きをPに向ける(これは3で行った変換)

Cを原点とするカメラ座標から見たC’の座標は、

となり、「1.平行移動」で説明した行列をM’とする。

slide17

P(p1, p2, p3)

y

θ

z

C’(c1’, c2’, c3’)

x

P(p1, p2, p3)

  • 平行移動後、C’を原点とする座標系を考え、y軸の周りに-θ回転すれば注視点はPを向く。
  • この回転は「3.特定の注視点にカメラを向ける」での説明のうち、単位ベクトルnをy軸方向の単位ベクトル(0, 1, 0)とし、-θ回転するような行列を与えればよい。

  この行列をM’’とする。

  • 変換前の座標系Cにカメラを移す行列がMで与えられているとすると、

  ビュー行列に

  を設定すればよい。

|C P|

|C P|

θ

y

z

y

z

C(c1, c2, c3)

x

平行移動

x

C’(c1’, c2’, c3’)

θ

slide18
同様に、y軸方向にθ回転する場合の行列も求めることが出来る。同様に、y軸方向にθ回転する場合の行列も求めることが出来る。
  • Cを原点とするカメラ座標から見たC’の座標は、

  となり、この平行移動の行列をM’とする。

  • 次に、C’を原点とした座標系で回転では、単位ベクトルnをx軸方向の単位ベクトル(1, 0, 0)とし、その周りをθ回転を考えればよい。

  この回転の行列をM’’とする。

  • 変換前の座標系Cにカメラを移す行列がMで与えられているとすると、

  ビュー行列に

  を設定すればよい

slide19

P(p1, p2, p3)

P

C’(c1’, c2’, c3’)

|C P|

C’

P

|C P|

θ

|C P|

C’

θ

y

θ

z

C

v

C

x

v

v

C(c1, c2, c3)

任意の方向へのカメラ位置の回転
  • 任意のベクトルv(vはxy平面上のベクトル)の方向にθ回転することを考える。
    • まず、x座標とベクトルvの向きが等しくなるようにz軸のまわりに座標系を回転させる。その角度は
    • 次に、x軸方向にθ回転させればよい

x軸方向とvの方向を

等しくする

x軸方向に回転

slide20
x軸をベクトルvの方向と等しくするためにz軸の周りに座標系を回転させるための行列は、「単位ベクトルnの周りの回転を表す行列(補足)」の中で説明した「単位ベクトルをz軸方向」とした場合の行列である。x軸をベクトルvの方向と等しくするためにz軸の周りに座標系を回転させるための行列は、「単位ベクトルnの周りの回転を表す行列(補足)」の中で説明した「単位ベクトルをz軸方向」とした場合の行列である。

(回転角は         である。)

  この行列をM’とする。

  • 次にx軸方向に回転させるための行列は、「x軸、y軸方向へのカメラ位置の回転」の中で説明した「x軸方向への回転」とした場合の行列である。

  (回転角はθである。)

この行列をM’’とする。

  • 変換前の座標系Cにカメラを移す行列がMで与えられているとすると、

  ビュー行列に

を設定すればよい。