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 | |
Tomas Akenine-Moller A K Peters Ltd 2008-07-31 売り上げランキング : 1190 おすすめ平均 最近までの動向が把握できる 調べたいことがあったら当たってみる本 三次元リアルタイムCGの百科全書 Amazonで詳しく見る by G-Tools |