2009-05-25 6 views
4

OpenGL ES 1.x에서 스케일링 (균등하게) 객체가 아래로 왜곡되는 이유는 무엇입니까?왜 스케일링 객체가 다운되어 OpenGL ES에서 객체가 가벼워 지나요?

도형이 더 어두워지는 법선이 아니기 때문에 어두워지는 것이 더 당연한가? 그러나 어떤 이유로 개체가 더 가벼워집니다. 크기를 늘리면 물체가 더 어둡게됩니다. 제 의견으로는 이것은 다른 방향으로 진행되어야합니다.

GL_NORMALIZE 등을 사용하지 말아주세요. OpenGL 구현이 왜 그렇게 작동하는지 궁금합니다.

+0

전/후 스크린 샷을 게시 할 예정입니다. –

답변

7

간단한 질문, 복잡한 답변.

변형 법선

법선 벡터는 정점, 또는 위치 벡터로 같은 방식으로 변환하지 않습니다 :이 레드 북에서 해당 추출물이다. 수학적으로 보면 은 벡터가 아닌 벡터 인 법선 벡터가 아니라 해당 벡터에 평행 한 평면 인 으로 생각하는 것이 좋습니다. 그런 다음 벡터에 대한 변환 규칙은 평면에 대한 변환 규칙으로 설명됩니다. 균등 평면은 행 벡터 (a, b, c, d)에 의해 으로 표시되며, a, b, c 또는 d 중 적어도 하나는 0이 아님. q가 0이 아닌 실제 숫자이면 (a, b, c, d) 및 (qa, qb, qc, qd)는 같은 평면을 나타냅니다. A 포인트가 (x, y, z, w) ax + by + cz + dw = 0. 유클리드 평면을 표현하기 위해 (a, b, c, d)가 a, b 또는 c 중 적어도 하나는 0이 아니어야한다. 값이 모두 0이면 (0, 0, 0, d)은 "무한대의 점"을 모두 포함하는 " 무한대의 평면"을 나타냅니다.

P가 균일 한 평면이며, V는 균질 정점 후 문 이 "V는 평면 (P)에 놓여있다가"광이 정규 행렬 곱셈이다 PV = 0으로 수학적으로 기입된다. M이 비 정형 버텍스 변환 (즉, 역 M-1을 갖는 4x4 매트릭스 인 경우) pv = 0은 pM-1Mv = 0과 동일한 이므로 Mv는 평면 pM에서 입니다. -1. 따라서, PM-1 정점 변환 아래면의 화상은 M.

는, 법선 벡터 벡터뿐만 아니라 평면 그들에 수직 같은 생각 V하자 및 N 될 좋아한다면 v가 v에 수직 인 벡터는 ~ n입니다. 그런 다음, nTv = 0.따라서 에 대해 임의의 비정규 변환 M, nTM-1Mv = 0, 이는 nTM-1 이 변환 된 벡터의 전치임을 의미합니다. 따라서, 변환 된 법선 벡터는 (M-1) T n이다. 다른 단어에서, 법선 벡터는 점을 변환하는 변형의 역 전치에 의해 으로 변환됩니다. 휴!

요약하면 위치와 법선은 같은 방식으로 변형되지 않습니다. 이전 텍스트에서 설명한 것처럼 정규 변환 행렬은 (M-1) T입니다. M을 sM으로 스케일링하면 (M-1) T/s이됩니다. 스케일 팩터가 작을수록 변형 된 법선이 커집니다 ... 여기 있습니다!

0

법선이 객체와 함께 비례하지 않는 것처럼 보일 것입니다. 이는 전체 크기의 객체에 대한 법선이 더 작은 크기의 객체를 훨씬 더 많이 포함한다는 것을 의미합니다. 이것은 광원과 법선 사이의 각도가 정확히 같지만 표면이 훨씬 작아집니다.

+0

Hmm 흠 .. 어떻게 든 이해할 수는 있지만 뒤에서 수학을 이해하지 못합니다. 표면 법선이 스케일링의 영향을받은 역 모델 뷰 행렬과 곱 해지지 않았습니까? –

+0

모르겠다. 법선에 대한 나의 이해는 OpenGL만큼이나 3D 애니메이션에서 나온다. 나는 법선이 종종 사전 계산되고 각자의 폴리 얼굴/verts/등을 따라야한다고했던 빠른 읽기에 대한 나의 대답을 기반으로했다. 법선이 기하학을 따르지 않거나 (또는 ​​귀하의 경우에 따라) 기하학을 따라 가지 않으면 어둡고 밝은 점이 생깁니다. – Soviut

관련 문제