'OpenGL'에 해당되는 글 3건
- 2008/08/08 [C#] OpenGL 코드 연동하기
- 2007/10/18 쿼터니언에 대해서... 이동성분에 대해서..
- 2007/10/15 OpenGL 코드 GL_COLOR_MATERIAL 관련된 내용
수학적인 부분에서 접근하는 쿼터니언은 솔직히 아무리 봐도 잘 모르겠다.
모 대충 보면 오일러로 회전을 표현하다 보면 짐벌락 현상이 생기게 되고,
쿼터니언은 생기지 않는다. 이런말도 있다.
쿼터니언은 x, y, z 의 임의의 축과 angle로 이루어져 있다고 한다.
더 가다 보면..
항등 쿼터니언.. 모 행렬로 변환하는 방법 등등..
참 많다. -.-
근데 오픈지엘에서 특정 쿼터니언을 사용해서 어떤 값을 넣으면
어떻게 변한다.
모 이런건 잘 없는거 같다.
왜 프로그래밍 하다 보면.. 솔직히 모 수학적인 개뿔 이런거 보다 ^^
한줄의 코딩이 더 좋은법 아닌가..
쿼터니언 몇줄로 테스트를 해보았다.
CQuat quat = CQuat(90, 1, 0, 0);
이것을 하게 되면 x 축을 90도 돌린 것이다.
이 클래스에는 아래와 같은 GetDirectionVector() 함수가 존재 한다.
quat3.GetDirectionVector(x, y, z);
이걸 가지고.. 이동값에 특정값을 더해주면..
x축으로 90도 돌린 위치로 이동하게 된다.
대충 말해서.. x축으로 90도 돌렸으니 y 축이 되는 것이다. (이해가 가는가?)
static float pos[3] = {0, 0, 0};
pos[0] += x * 0.1;
pos[1] += y * 0.1;
pos[2] += z * 0.1;
glTranslatef(pos[0], pos[1], pos[2]);
이것을 하게 되면 x 축을 90도 돌린 것이다.
이 클래스에는 아래와 같은 GetDirectionVector() 함수가 존재 한다.
quat3.GetDirectionVector(x, y, z);
이걸 가지고.. 이동값에 특정값을 더해주면..
x축으로 90도 돌린 위치로 이동하게 된다.
대충 말해서.. x축으로 90도 돌렸으니 y 축이 되는 것이다. (이해가 가는가?)
static float pos[3] = {0, 0, 0};
pos[0] += x * 0.1;
pos[1] += y * 0.1;
pos[2] += z * 0.1;
glTranslatef(pos[0], pos[1], pos[2]);
다르게 해보자.
CQuat quat = CQuat(45, 1, 0, 0);
CQuat quat2 = CQuat(45, 1, 0, 0);
CQuat quat3;
quat3.MultAndSet(quat, quat2);
이렇게 두개의 쿼터니언을 곱하게 되면 어떻게 될까?.
CQuat quat3 = CQuat(90, 1, 0, 0);
과 같은 현상이 발생된다.
CQuat quat2 = CQuat(45, 1, 0, 0);
CQuat quat3;
quat3.MultAndSet(quat, quat2);
이렇게 두개의 쿼터니언을 곱하게 되면 어떻게 될까?.
CQuat quat3 = CQuat(90, 1, 0, 0);
과 같은 현상이 발생된다.
다른 함수를 더 사용하면..
CQuat quat = CQuat(45, 1, 0, 0);
CQuat quat2 = CQuat(45, 1, 0, 0);
quat2.PostMult(quat);
이렇게 하면 quat2는 90, 1, 0, 0 의 값을 입력한 것과 같게 된다.
CQuat quat2 = CQuat(45, 1, 0, 0);
quat2.PostMult(quat);
이렇게 하면 quat2는 90, 1, 0, 0 의 값을 입력한 것과 같게 된다.
이동성분에 대해서만 해봤다.
회전도 담에는 해보자.
간단한 오픈지엘을 사용한 화면 구현을 할려고 하다 보니 몇가지 경우가 생기게 되네요.
[조건]
1. OBJ 파일을 로딩해서 화면에 드로잉 한다.
2. OBJ 파일의 MTL 파일을 같이 적용한다.
3. 텍스처가 등록되어 있는 경우와 등록되어 있지 않는 경우가 있다.
.....
이렇다고 했을때 화면에 드로잉 하는 객체를 표현해 줄때,
1. 메트리얼 값을 사용해서 색상 정보로만 표현하고 싶을때가 있다.
2. 텍스처만 사용해서 표현하고 싶어진다.
3, 텍스처와 메트리얼 값을 같이 적용해서 사용하고 싶어질때가 있다.
위와 같이 3가지의 경우가 생기게 된다.
1, 3번의 경우는 glEnable(GL_COLOR_MATERIAL) 를 적용하지 않아야 한다.
2 번의 경우만 표현하고 싶다면 glEnable(GL_COLOR_MATERIAL) 이 옵션을 켜야 한다.
이게 맞는지는 잘 모르겠다 ^^.. dip2K 주인님인 김형준님에게 질문 하세요 ^^
아뭍턴.. 간단한 뷰어용 엔진을 제작함에 있어서 이 부분을 적용해서 해봐야 할거 같다.
[조건]
1. OBJ 파일을 로딩해서 화면에 드로잉 한다.
2. OBJ 파일의 MTL 파일을 같이 적용한다.
3. 텍스처가 등록되어 있는 경우와 등록되어 있지 않는 경우가 있다.
.....
이렇다고 했을때 화면에 드로잉 하는 객체를 표현해 줄때,
1. 메트리얼 값을 사용해서 색상 정보로만 표현하고 싶을때가 있다.
2. 텍스처만 사용해서 표현하고 싶어진다.
3, 텍스처와 메트리얼 값을 같이 적용해서 사용하고 싶어질때가 있다.
위와 같이 3가지의 경우가 생기게 된다.
1, 3번의 경우는 glEnable(GL_COLOR_MATERIAL) 를 적용하지 않아야 한다.
2 번의 경우만 표현하고 싶다면 glEnable(GL_COLOR_MATERIAL) 이 옵션을 켜야 한다.
이게 맞는지는 잘 모르겠다 ^^.. dip2K 주인님인 김형준님에게 질문 하세요 ^^
아뭍턴.. 간단한 뷰어용 엔진을 제작함에 있어서 이 부분을 적용해서 해봐야 할거 같다.

TestGRV_2008_08_08.zip
Prev
Rss Feed