2009-06-05 6 views
2

OpenGL에서 얼굴 법선을 사용하여 인간의 모델을 조명 할 때 각 얼굴이 모델에있는 것이 매우 분명합니다. 조명은 정점 법선을 사용하여 상당히 매끄럽게되지만 여전히 눈에.니다. 추가 정점 (예 : 구획)을 추가하지 않고 유기 모형을 부드럽게 만들 수있는 기술이 있습니까? 당신이 더 높은 해상도의 모델에 대한 액세스 권한을 가지고있는 경우에OpenGL에서 얼굴 모서리를 매끄럽게 만드는 기술

답변

6

당신이 하나의 정점 법선 당이 부드러운 직면 수 있도록 잊어 버린 수 있습니다으로 얼굴 표시되는 경우 : 그 만들 도움이되지 있다면

glShadeModel(GL_SMOOTH); 

을 확인 같은 위치에 모든 정점이 같은 정상이있다. 그러나 이것은 블렌더에 의해 자동으로 이루어져야합니다. 또한 모델의 폴리곤 수가 너무 적을 수도 있습니다. 그렇다면 더 많은 폴리곤을 사용하거나 basszero가 말한 것을 수행해야합니다. Create a normal map 그리고 GLSL 셰이더와 함께 사용하십시오.

4

/...

GLSLper-pixel-lighting + normal maps

UPDATE 메쉬 또는 하부 조직 또는 다른 멋진 방법을 통해 highres 있습니다 모델을 만들 수 있습니다 아마도 괜찮은 3d modeling tool :

http://www.blender.org/development/release-logs/blender-246/render-baking/

+0

저는 블렌더를 사용하고 있습니다. 성능상의 이유로 저의 모델을 low-poly로 유지합니다. 퐁 쉐이딩 (phong shading)은 유망한 것으로 보이지만 OpenGL에 의해 지원되지 않으며 이점으로 인해 성능이 저하 될 수 있습니다. – Kai

+0

이것이 OpenGL ES 1.1 질문 (예 : iPhone)이 아닌 경우 하드웨어가 아마도 쉐이더를 지원하고 퐁 쉐이딩 + 노멀 맵핑을 구현하는 쉐이더를 작성할 수 있습니다. –

+0

맞습니다. Blender에서 highres 모델을 만들고 이것을 사용하여 노멀 맵을 생성합니다. 저해상도 버전을 만들고 노멀 맵 + 셰이더를 사용하여 최종 렌더링 된 제품에서 누락 된 버텍스 디테일을 만듭니다. – basszero

1

예 여러 가지 방법이 있습니다. 첫 번째는 각면의 법선을 먼저 계산하고 (이 경우 얼굴의 정점에 대해 사용하고있을 가능성이 높음)이 법선을 사용하여 각 정점의 새로운 법선을 계산합니다.

여기에 인접한 5 개의 삼각형의 평균을 계산하는 one이 있습니다.

건배!

관련 문제