2010-07-10 4 views
4

저는 현재 OpenGL ES 1.1 및 DrawElements 규칙을 Vertex, Normal, Texture Coordinate 및 Index 배열과 함께 사용하고 있습니다.일반지도 대 일반 좌표

내가 최근 일반/범프 매핑을 사용하는 아이디어를 연구하는 동안이 우연히 어떤 I 이전의 OpenGL ES와 불가능하지만 : 내 3D 모델러에서 이미 객체 빨리 노멀 맵을 생성 할 수 있습니다 http://iphone-3d-programming.labs.oreilly.com/ch08.html

하지만, 필자가 완전히 명확하지 않은 점은 일반 매핑을 위해 두 번째 텍스처 유닛을 구현하는 경우 일반 좌표 배열이 더 이상 필요할지 여부 또는 조명 + 색상 텍스처 DOT3_RGB 옵션을 통해 일반지도와 결합 된 것입니다. 필수?

EDIT - DOT3 조명을 조금 더 조사한 후, ognian이 제공 한 답변이 정확한지 확실하지 않습니다. 이 페이지의 http://www.3dkingdoms.com/tutorial.htm은 그 사용 예를 보여 주며 "렌더링 & 최종 결과"섹션의 코드 부분을 보면 일반 배열은 없습니다. 일반 배열의 ClientState는 절대로 사용할 수 없습니다.

나는 또한 여기에이 게시물을 발견했습니다. What is DOT3 lighting? 잘 설명해 주지만 다른 질문으로 안내합니다. 의견에서, 그것은 법선의 번역 대신, 당신은 가벼운 방향으로 번역한다고 말했습니다. 저는 고정 된 벽으로 게임을하는 것처럼 이것에 대해 혼란 스럽습니다 ... 왜 한 모델에서만 빛을 움직일 수 있습니까? 누군가 희망을 가지고 있으면이 모든 것에 대한 좋은 설명을 줄 수 있습니다.

답변

1

접선 공간 법선 맵은 정점마다 법선으로부터 보간 된 법선을 교란하지만 오브젝트 공간 법선 맵에는 이미 표면 방향에 대한 모든 필요한 정보가 포함되어 있습니다. 지도에서. 따라서 OpenGL ES 1.1에서 DOT3 조명 만하고 있다면 법선을 다시 전달할 필요가 없습니다.

도트 제품에 대한 두 인수 (픽셀 별 법선 및 광 벡터)가 내적 제품에 대해 동일한 좌표 공간에 있어야하므로 법선보다 가벼운 방향을 변환하는 이유는 어떤 의미. 오브젝트 공간 노멀 맵이 있기 때문에, 픽셀 당 노멀은 항상 오브젝트의 로컬 좌표 공간에 있고, 텍스처 환경은 더 이상 변환을 적용 할 수단을 제공하지 않습니다. 광 벡터가 다른 공간에있을 가능성이 높습니다. 따라서 언급 된 변환은 다른 공간에서 개체의 로컬 공간으로 다시 변환됩니다.

+0

빛 벡터에 의해 glLightfv (GL_LIGHT0, GL_POSITION, light0position)의 배열 light0position에 대해 이야기하고 있습니까? 만약 내가 한 물체의 조명을 수정하기 위해 그것을 수동으로 변형한다면 ... 나는 빛이 다른 모든 것을 때리는 방법을 완전히 더럽 히지 않을 것인가? 그것을 변형시킨 다음 문제의 물체에 대한 색상의 변화에만 어떻게 적용합니까? 그런데 탄탄한 대답, Pivot을 주셔서 감사합니다. – Maximus

+0

게시 한 첫 번째 링크의 "Normal Map with OpenGL ES 1.1"섹션에서와 같이 객체 공간 일반 매핑을 수행하는 경우 일반 OpenGL ES 1.1 조명을 전혀 사용하지 않습니다. 이 시점에서, (오브젝트 공간에서) 라이트 벡터를 정점의 색으로 전달하여 DOT3에 사용할 수 있습니다. 모든 꼭지점 (객체의 중심에 대한 객체 공간의 빛 벡터)에 대해 동일한 색상을 사용하여 적절한 근사를 얻을 수 있습니다. – Pivot

+0

좋아요, 상황이 좀 더 이해되기 시작하니 ... 겨우 간신히. 이 모든 것을 촉발시킨 것은 정규 조명을 사용하고 있고 OpenGL ES로는 할 수없는 일반적인 매핑을 믿는 것이 었습니다. 그것이 가능하다는 것을 알았을 때, 어떻게 작동하는지 알아 내려고 노력했습니다. 그래서 .. 내가 더 가기 전에 .. 좋은 생각인데? 보통 OpenGL ES 1.1 조명보다 빨라질 수 있습니까? – Maximus