2012-04-26 3 views
1

그래서 나는 더 나은 것을 이해할 수 있습니다. 대신 gl 변환 함수 (glTranslatef/glRotatef 등)를 호출하지 않으려 고합니다. 대신 자신의 행렬을 만들고 glMultMatrixf).glMultMatrixf가있는 번역 및 정규화시기

x/y/z 회전을 위해 만든 행렬이 완벽하게 작동하는 것처럼 보이지만 번역 행렬이 내 메쉬의 모든 꼭지점을 단일 축으로 축소하는 것으로 보입니다. glMultMatrixf에

{ 1.0f,0.0f,0.0f,x 
     0.0f,1.0f,0.0f,y, 
     0.0f,0.0f,1.0f,z, 
     0.0f,0.0f,0.0f,1.0f }; 

glTranslatef하고 동일하다 (X, Y를, z) :

는 I 매트릭스를 통과하는 생각에 기초 오프 있습니까? (필자는 전공입니다. 모든 역방향이 아닌지 확인하기 위해 나는 위의 행렬을 바꾸었지만 여전히 작동하지 않았습니다. 다른 축으로 모든 것을 평평하게하는 것처럼 보였습니다.)

나는 정규화가 누락 되었습니까? 어딘가에 계십니까? 언제 당신의 매트릭스를 표준화하는 것이 좋은 생각입니까?

나에 대한 지식을 떨어 뜨리는 데 미리 감사드립니다. x 축

{ 1.0f, 0.0f, 0.0f, 0.0f, 
    0.0f, (float) Math.cos(x), (float) -Math.sin(x), 0.0f, 
    0.0f, (float) Math.sin(x), (float) Math.cos(x), 0.0f, 
    0.0f, 0.0f, 0.0f, 1.0f }; 

y 축

나에게 전치 보인다
{ (float) Math.cos(y),0.0f,(float) Math.sin(y),0.0f, 
    0.0f,1.0f,0.0f,0.0f, 
    (float) -Math.sin(y),0.0f,(float) Math.cos(y),0.0f, 
    0.0f,0.0f,0.0f,1.0f }; 

Z 축

{ (float) Math.cos(z),(float) -Math.sin(z),0,0, 
    (float) Math.sin(z),(float) Math.cos(z),0,0, 
    0.0f,0.0f,1.0f,0.0f, 
    0.0f,0.0f,0.0f,1.0f }; 

답변

2

:

이러한 내 회전 행렬이다. 요소의 순서는 다음과 같아야합니다

0 4 8 12 
    1 5 9 13 
    2 6 10 14 
    3 7 11 15 

하지만, 그것은 (y 및 z에 대한 동일) 소자 (12)해야 소자 (3)에있는 X를 가지고있다.

=== 편집 ===

죄송 다만 이미 눈치 당신이 그것을 전치 말했다. 그러나 x는 분명히 요소 12에 있어야합니다. 단지 그것을 확인하기 위해서입니다. 나는 그것을 작동시키기 위해 당신이 행렬에 여분의 것을해야한다고 생각하지 않는다.

+0

당신의 총에 잘 붙어있어, 내가 그것을 바꾸 었다고 말했을 때 나는 분명히 그것을 완전히 미친 방법으로 바꾸었다. (x, y, z를 인덱스 1,2와 3에 넣었습니다 : X) – MrLeap

+0

회전 매트릭스가 너무 빠져 있는지 알려주시겠습니까? 내 말은 .. 그들은 "눈에 보이게"일하는 것 같지만 나보다 똑똑한 사람 (당신)과 확인하고 싶습니다. 원래 게시물을 수정하겠습니다. – MrLeap

+0

@MrLeap : glRotate 맨 페이지에서 수식을 직접 복사 할 수 있습니다. http://www.opengl.org/sdk/docs/man/xhtml/glRotate.xml – Tim