3D Graphics Transform

56 %
44 %
Information about 3D Graphics Transform
Technology

Published on April 4, 2014

Author: mooneegee

Source: slideshare.net

Description

translation(이동)
scaling(크기)
ratation(회전)
Euler angle
임의의 축에 대한 회전
Quaternion

Transform NHN NEXT 장문익

Geometric Transform(기하 변환)  Scaling transform(크기 변환)  Rotation transform(회전 변환)  Translation Transform(이동 변환)

D3D와 왼손 좌표계  D3D는 왼손 좌표계를 사용하기 때문에 (행 벡터) * (행렬)로 transfor을 수행한다.  OpenGL은 오른손 좌표계를 사용하기 때문에 (행렬) * (열 벡터)로 transform을 수행한다.

Geometic Transfrom의 예

Geometric Transform을 한 번에  Geometry Transform을 Scalling, Rotation, Translation 과정을 각각 거치지 않고 단 하나의 행렬 로 처리할 수 있다.  하나의 행렬로 처리하기 위해서는 3차원 벡터를 4차원 동차 좌표(Homo generous Coordinate)로 바꾸어야 한다.  4차원 동차 좌표의 예시: (1, 2, 3, 4), (2, 4, 6, 8), (0.5, 1, 1.5 ,2)

4차원 동차 좌표  4차원에서 두 개의 좌표가 동차 좌표가 되려면 ‘벡터 a = k * 벡터 b’ 관계가 성립되면 된다.  이 관계를 이용해서 3차원 좌표 (x, y, z)는 4차원 동차 좌표에서 무수히 많은 좌표를 가질 수 있다.  이들 중에서 특별히 마지막 w 값이 1인 동차 좌표를 사용한다.  3차원 좌표 (x, y, z) -> 4차원 동차 좌표 (x, y, z, 1)  4차원 좌표 변환에 행렬을 이용할 경우 4x4 행렬이 필요하고, 변환한 후에 w값으로 x, y, z, w를 나누 어서 항상 w = 1이 되도록 만든다.

4차원 동차좌표 활용한 geometric transform

4차원 동차좌표 활용한 geometric transform  이것을 3차원 좌표 (x’, y’, z’)로 하면 scaling, rotation, translation에 대해서 하나의 행렬로 대치가 가능하다.

Translation Transform  translation transform은 vertex의 평행 이동 을 의미한다.  vertex의 평행 이동은 vertex의 위치를 상대적 으로 이동하는 것이다.

Translation Transform 수식 표현

벡터 T에 대한 Translation Transform matrix

Translation Transform matrix의 역행렬  벡터 T의 반대 방향으로 변환하는 행렬

D3D Translation Transform 함수

Scaling Transform  Scaling Transform은 vertex의 위치에 scalar 배를 적용한 것이다.  Translation Transform과 마찬가지로 4x4 변 환 행렬로 구성할 수 있다.

Scaling Transform 수식 표현

벡터 S에 대한 Scaling Translation matrix

Scaling Translation matrix의 역행렬

D3D Scaling Transform 함수

Rotation Transform  Euler Angle을 이용한 방법  임의의 축에 대한 회전(임의의 축에 대한 최전은 Quaternion(사원수)로 풀 수 있다.

2차원에서 정점의 회전

2차원에서의 정점 이동 수식 표현

2차원에서 정점의 회전 이동 행렬

D3D에서 사용할 수 있는 회전 행렬로 바꾸기  (벡터) * (행렬) 형태로 바꿔야 한다.  바꾸는 방법은 전치 행렬

3차원에서 Rotation Transform matrix(x축)

3차원에서 Rotation Transform matrix(y축)

3차원에서 Rotation Transform matrix(z축)

Rotation Transform matrix의 역행렬  각도를 –각도로 적용해주면 된다.  모든 회전 행렬은 직교 행렬이므로 역행렬과 전치행렬이 동일하다.  연산 속도는 – 각도를 적용하는 것보다는 전치시키는 것이 더 빠르다.

D3D Rotation Transform 함수  D3DXMatrixRotationX()  D3DXMatrixRotationY()  D3DXMatrixRotationZ()

Euler Angle  각 축에 대한 행렬을 연속으로 곱해서 최종 회전 행렬을 만들 때 그 각도를 말한다.

D3D Rotation Transform  D3D는 x, z축을 평면으로, y축을 하늘 방향으 로 지시하는 형태이다.  D3D Rotation Transform은 y축, x축, z축 순 서로 회전한다.  y축 회전은 Yaw  x축 회전은 Pitch  z축 회전은 Roll

Euler Angle로 구한 Rotation Transform matrix

D3D Euler Angle에 대한 Rotation Transform 함수

Gimbal Lock  Euler Angle는 적용하기는 쉽지만 모든 오브젝트가 이 방법대로 움직이지 않는다는 문제가 발생한 다.  Gimbal Lock은 회전에서 그 곱의 순서를 알고 있지 않다면 전혀 다른 행렬을 만들어 다른 위치로 이동할 수 있다는 것이다.  Gimbal Lock을 해결하기 위해서는 회전 각도를 누적시키는 것이 아니라 임의의 축에 대해서 회전 행렬을 만들고 이 회전 행렬을 계속 곱해야만 해결이 된다.

임의의 축에 대한 회전  임의의 점 벡터 P가 단위 벡터 n에 대해서 회전한 점 벡터

임의의 축에 대한 회전

DXD 임의의 축에 대한 회전 행렬 함수  D3DXMATRIX* WINAPI D3DXMatrixRotationAxis ( D3DMATRIX * pOut, CONST D3DXVECTOR3 *pV, FLOAT Angle );

QUATERNION  사원수  복소수 표현을 확장하기 위해서 만들어졌다.  벡터 해석보다 사용이 난해하여 잘 사용되지 않다가 3D 프로그램에서 회전에 자주 사용된다.  벡터를 활용하여 임의의 축에 대한 회전을 구할 수가 있지만, QUATERNION을 사용하면 벡터로 구 한 결과보다 간결하고, C++의 Overloading을 적용하면 프로그램을 구현하기가 쉬워진다.

복소수와 QUATERNION  Real Number + Imaginary Number  2 + 3i  a + bi  Real Number + 3개의 Imaginary Number  단위벡터 v는 회전 축  단위벡터 I, j, k는 좌표 축의 단위 벡터

Quarternian의 좌표 축 단위벡터 성질 정의

QUATERNION Conjuagate  복소수처럼 켤레복소수가 있다.

QUATERNION의 크기

Quaternion 곱셈

Quaternion 연산 법칙

QUATERNION과 Translation 

임의의 축에 대한 회전과 QUATERNION의 곱 셈

QUATERNION을 이용한 회전1  임의의 축(Axis)과 각도를 QUATERNION으로 바꾼다. 이 때 각도는 ‘1/2’로 한다.

QUATERNION을 이용한 회전2  회전을 적용할 정점을 QUATERNION으로 바꾼다.

QUATERNION을 이용한 회전3  QUATERNION 곱 q*P*q-1 연산을 수행한다.(D3D는 왼손 좌표계이기 때문에 q-1*P*q 순으로 곱한 다.)

QUATERNION을 이용한 회전4  최종 연산의 결과도 QUATERNION이므로 이중에서 허수 부를 선택한다.

참고자료  http://3dapi.com/

Add a comment

Related presentations

Presentación que realice en el Evento Nacional de Gobierno Abierto, realizado los ...

In this presentation we will describe our experience developing with a highly dyna...

Presentation to the LITA Forum 7th November 2014 Albuquerque, NM

Un recorrido por los cambios que nos generará el wearabletech en el futuro

Um paralelo entre as novidades & mercado em Wearable Computing e Tecnologias Assis...

Microsoft finally joins the smartwatch and fitness tracker game by introducing the...

Related pages

CSS3 3D Transforms - W3Schools

CSS3 3D Transforms. CSS3 allows you to format your elements using 3D transformations. Mouse over the elements below to see the difference between a 2D and ...
Read more

Transforming Shapes, Text, and Images (The Java™ Tutorials ...

Transforming Shapes, Text, and Images. You can modify the transform attribute in the Graphics2D context to ... and shear graphics primitives when they are ...
Read more

Transformation matrix - Wikipedia

for some m×n matrix A, called the transformation matrix of T. ... For this reason, 4×4 transformation matrices are widely used in 3D computer graphics.
Read more

CSS Transforms Module Level 1 - World Wide Web Consortium

CSS transforms allows elements ... The lime element also has a 3D transform, ... The pseudo code below is based upon the "unmatrix" method in "Graphics ...
Read more

20 stunning examples of CSS 3D transforms | Creative Bloq

20 stunning examples of CSS 3D transforms. ... In Dirk Weber’s 3D transform series he delves deep into the complicated world of matrix transformations ...
Read more

3D Graphics with OpenGL - The Basic Theory

3D Graphics with OpenGL ... The 3D Graphics Rendering Pipeline accepts description of 3D objects in terms ... Model-View Transform. In Computer Graphics, ...
Read more

3D Transformation - Tutorialspoint

3D Transformation - Learn about Computer Graphics in simple and easy terms starting from trends in Computer Graphics, Basics, Line Generation Algorithm ...
Read more

2D and 3D Transformations - Virginia Tech

CS 4204 Computer Graphics 2D and 3D Transformations Doug Bowman Adapted from notes by Yong Cao Virginia Tech. 2 ... • Transform matrices must be pre ...
Read more

The Mathematics of the 3D Rotation Matrix

Mastering the rotation matrix is the key to success at 3D graphics programming. Here we discuss the properties in detail.
Read more