- 전체
- Native Apps
- WinJS App
- C# Apps
- XAML
- VB.net
- VisualC.net
- C++
- MFC
- visual studio mobile app dev
- Azure ms cloud service
- Asp.net
- 인공지능 (AI)
- wpf
- UWP
- MAUI
- asp.net
MFC ** OpenGL 좌표계에서 D3D좌표계로... **
2017.06.10 18:07
** OpenGL 좌표계에서 D3D좌표계로... **
copyrightⓒ 김성수 [2002년 04월 30일]
D3D는 왼손좌표계, OpenGL은 오른손좌표계를 사용합니다.

D3D좌표계(좌)와 OpenGL좌표계(우)
두 좌표계의 변환은 보통 y축과 z축을 맞바꾸는방법이 사용됩니다.
y축과 z축을 교환하는것은 일반적인 모델링툴에서 윗쪽벡터를..
왼손좌표계 -> y 축 , 오른손좌표계 -> z 축
으로 잡기 때문입니다. 때문에 멀쩡히 서있던 캐릭터를 눕혀놓지 않으려면 y축과 z축을 바꿔줘야 하죠.
1. 행렬변환
사용하는 좌표계와 다른 (회전/이동/확대축소)행렬을 사용해야 할경우, 사용할 행렬의 앞뒤에 다음행렬을 곱해서 자신이 사용하는 좌표계로 변환할수 있습니다.
[ 1 0 0 0 ]
[ 0 0 1 0 ]
[ 0 1 0 0 ]
[ 0 0 0 1 ]
좌표계 변환행렬
(y축과 z축을 맞바꾼다)
예> D3D행렬 = 좌표계변환 행렬 * OpenGL 행렬 * 좌표계변환행렬
이론적으로 이렇다는 말이고 실제는 그냥 행렬의 2행 3행을 맞바꾼다음, 2열 3열을 맞바꿔버리는 방법을 쓰죠.
2. 데이터 변환
데이터와 어플리케이션의 좌표계가 다를 경우 원본데이터를 읽어올때 데이터에 좌표계 변환행렬을 곱해버립니다.
( 이것두 말로하자면 그렇다는 얘기고, 행렬을 곱하구 자시구 할것두 없이 y와 z를 맞바꾸기만 하면됩니다. )
잠깐[1]
여기서 주의할것은 오른손좌표계의 데이터를 왼손좌표계에서 그대로 출력하면 폴리곤이 뒤집힌다는 것입니다. 이때 좌표계 변환 행렬이 이것을원상복귀 시켜주게되죠.
그런데...보통 오른손 좌표계에서는 폴리곤의 앞면을 반시계방향으로 정의하고, 왼손좌표계에선 시계방향을 앞면으로 정의하기때문에...
결국은....일반적으로는 폴리곤을 읽어올때 뒤집어서 읽어와야 합니다.
출처: http://3dmpengines.tistory.com/710 [3DMP]
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 8 |
[Windows Apps][MFC] HTTP SPY : HTTP 스파이
| 졸리운_곰 | 2023.11.29 | 185 |
| 7 |
[Windows Apps][MFC] 2D LUA Based Robot Simulator : 2D LUA 기반 로봇 시뮬레이터
| 졸리운_곰 | 2023.11.29 | 183 |
| 6 |
Runtime Object Editor
| 졸리운_곰 | 2017.07.01 | 539 |
| » |
** OpenGL 좌표계에서 D3D좌표계로... **
| 가을의곰 | 2017.06.10 | 267 |
| 4 |
SQLite on Visual Studio with NuGet and Easy Instructions
| 졸리운_곰 | 2016.08.11 | 329 |
| 3 | Using SQLite in a Native Visual C++ Application | 졸리운_곰 | 2016.08.11 | 276 |
| 2 |
[학습정리] 민대규님의 학습정리 프로그램 "대굴이의 학습정리"
| 졸리운_곰 | 2015.05.11 | 445 |
| 1 |
[일정관리] 민대규님 제작 "대굴이의 일정관리"
| 졸리운_곰 | 2015.05.11 | 1841 |

