** 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]
여기서 주의할것은 오른손좌표계의 데이터를 왼손좌표계에서 그대로 출력하면 폴리곤이 뒤집힌다는 것입니다. 이때 좌표계 변환 행렬이 이것을원상복귀 시켜주게되죠.
그런데...보통 오른손 좌표계에서는 폴리곤의 앞면을 반시계방향으로 정의하고, 왼손좌표계에선 시계방향을 앞면으로 정의하기때문에...
결국은....일반적으로는 폴리곤을 읽어올때 뒤집어서 읽어와야 합니다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 



출처: http://3dmpengines.tistory.com/710 [3DMP]

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
24 윈도우즈 마켓 앱 스토어 개발 안내서  가을의곰 2017.06.18 154
23 Assembly.GetType 메서드 file 가을의곰 2017.06.18 140
22 Executing Code in Another Application Domain (C# Programming Guide) 가을의곰 2017.06.18 142
21 1. 리플렉션(Reflection) 가을의곰 2017.06.18 159
20 .NET Reflection  가을의곰 2017.06.18 176
19 C# - Interfaces 가을의곰 2017.06.18 151
18 C# 인터페이스  가을의곰 2017.06.18 262
17 Public Key Tokens with sn 졸리운_곰 2017.05.27 188
16 [C#] 개체 참조가 개체의 인스턴스로 설정되지 않았습니다. [출처] C# : 오류 System.NullReferenceException: 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.(오류 System.NullReferenceException) 졸리운_곰 2017.05.27 2354
15 private, public, protected 그리고 internal?? 접근 한정자에 대해 알아보자. 졸리운_곰 2017.05.27 163
14 [.NET Framework] .NET : 368. 닷넷의 어셈블리 서명 데이터 확인 방법 [링크 복사], [링크+제목 복사] file 졸리운_곰 2017.05.27 331
13 [Tips] Visual Studio 에서 특정 어셈블리의 PublicKeyToken 찾는 법 졸리운_곰 2017.05.27 409
12 .net의 publickeytoken 찾는 sn 프로그램 경로 졸리운_곰 2017.05.27 213
11 예외 문제 해결: System.BadImageFormatException 졸리운_곰 2017.05.27 932
10 A replacement for MemoryStream file 졸리운_곰 2017.05.20 197
9 [.net] jni4net 을 이용하여 c# .net 에서 .jar 파일 사용하기 file 졸리운_곰 2017.04.26 384
8 A Simple Crawler Using C# Sockets file 졸리운_곰 2017.04.24 273
7 ILSpy 닷넷 어셈블리 디컴파일러 오픈 소스 file 졸리운_곰 2017.04.22 428
6 C# WinForm "인증서 저장소에서 매니페스트 서명 인증서를 찾을 수 없습니다." file 졸리운_곰 2017.03.18 741
5 Getting started with SQLite in C# file 졸리운_곰 2017.03.18 286
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED