Real-Time Rendering(3) chapter 4 Transforms

transform(変換)は、ワールド座標からカメラ座標に変換したり、物体を移動したりする操作のこと。4×4の行列で実現できる、数学っぽい分野。クオータニオン?わからない。そんなところから、はじめていく。

entity : point, vector, color 
important to master transform
linear transform
translation : not linear
affine transformによって変換(transform & translate)が可能(4*4 matrix)
affine transform : linear transform , then translate
4-element vector : homogeneous notation
homogeneous : 同次
direction vector (Vx, Vy, Vz, 0)
point            (Vx, Vy, Vz, 1)
translation, rotation, scaling, reflection, shearing
quaternion (powerful transform tool)
vertex blending?
morphing?
projection matrix
transform : manipulate geometry
orthogonal matrix
transpose
inversion
know these matrix -> accelerated code
shear : 剪断
yaw, pitch, roll
orthographic projection : 平行透視
perspective  projection : **透視
slerp?

4.1 Basic Transforms

4.1.1 Translation matrix
direction vectorは影響を受けない

4.1.2 Rotation matrix
rigid-body transform
handedness : 掌性
orientation matrix
rotation matrix R
tr(R) = 1 + 2 cosφ
arbitrary axis rotation
orthogonal matrix : 直交行列(転置行列=逆行列となる場合)
determinant of R is 1 ∵orthogonal

4.1.3 Scaling matrix
uniform scaling
nonuniform scaling
isotropic
anisotropic
w-component (*, *, *, here!)
homogenization
negative -> reflection matrix (ネガティブな考えは自分に跳ね返ってくる)
mirror matrix
counterclockwise
backface culling
mirror matrixを使うとlightingがうまくいかなくなることも
determinant of 3*3 matrix is negative -> reflective
compound transform
right-oriented vector?
任意軸回転も可能(4.11)...ここだけ理解できず

4.1.4 Shearing
distort
psychedelic effect 
fuzzy reflection by jittering
shearing matrix H
|H| is 1 (volume preserving)

4.1.5 Concatenation of Transforms
上の行列を事前に掛け合わせてOKという話だと思う

4.1.6
位置、向きは変わるけれども、形は変わらないrigid-body transform
preserve length, angle, handedness
rigid body transformの逆行列は、ナイーブに計算する必要がない(4.14など)

4.1.7 Normal Transform (正規変換)
tangent vector
surface normal
vertex lighting normal
normal : 法線
adjoint : 随伴行列(転置して複素共役をとったもの)
adjoint is exist
singular matrix : 非正則行列、特異行列
regular  matrix : 正則行列(逆行列を持つ正方行列)
determinant = 0 -> singular matrix (inverse does not exist)
スケーリングなどすると、法線の向きが正しく付いてこない問題があり、
それはtranspose of inverse (p64)で解決できる
ただ、逆行列の計算はexpensive
-> adjoint of upper-left 3*3 matrixを求めればよい
translation -> do not affect -> normal
transpose is inverse (R : rotation matrix)
ナイーブに逆行列を求める必要がない場合が多々ある

4.1.8 Computation of Inverses
逆行列が必要な場合は多々あるが、translation, scaling matrixのinverseは簡単に求まる
orthogonal(直交行列)かどうか先に調べておくのもよい
rotation matrix -> orthogonal
adjoint method
Cramer's rule
LU decomposition
Gaussian elimination
"if" test?
inverseの求め方で工夫できれば、optimizationで役に立つ(速くなる)

4.2 Special Matrix Transforms and Operations
Eular transform?

4.2.1 The Eular Transform
intuitive
Eular transform : 3 matrix
Eular transform E = R * R * R (orthogonal)
E(h, p, r) : head, pitch, roll (ロールピッチヨーではない!? ->同じです)
head = yaw
E = R(roll) * R(pitch) * R(yaw)
gimbal lock : ジンバルロック?
problem : lost freedom
hairy ball theorem?
Eular angle?
Eular angle conversion
input device (mouse, VR glove, space-ball)
Eular angle : (h,p,r)

4.2.3 Matrix Decomposition
VRML?

...sleeping...

今日の作業用BGMは
アイドルマスター 雪歩 Kosmos, Cosmos (HYPER EDIT) PV風 R1.1
だった。雪歩は弱気のキャラだと思っていたが、
歌に気持ちを乗せる力強さを今日は感じて、
魅力的に見えてきた。

Real-Time Rendering
Real-Time RenderingTomas Akenine-Moller

A K Peters Ltd 2008-07-31
売り上げランキング : 1190

おすすめ平均 star
star最近までの動向が把握できる
star調べたいことがあったら当たってみる本
star三次元リアルタイムCGの百科全書

Amazonで詳しく見る
by G-Tools