2012-11-22 6 views
0

쿼드 메쉬를 그릴 수 있도록 4 개의 VECTOR3D (3 개의 float 포함)에 4 개의 포인터를 저장하는 구조체 QUAD가 있습니다. 메쉬를 그릴 때마다 메쉬를 그릴 때마다 메쉬를 적절히 밝게/낮게하려면 보통의 것이 필요하며면 당 일반면을 사용하여 평지에 놓이는 메쉬 일 때는 비교적 쉽습니다.쿼드 메쉬의 법선 계산

2x2 쿼드 메쉬가 XZ 좌표에 놓여 있고 중심점 (0,0,0)을 특정 지점 (예 : (0, 4, 0))으로 올리려고하면 실제 3D 모양이 형성됩니다. , 다시 법선을 계산해야합니다. 나는 법선을 계산하는 방법과 그 방법을 이해하는 데 어려움을 겪고 있습니다. 예상대로 3D 모양은 여전히 ​​평평한 메쉬 모양이므로 실제 모양을 나타내지 않습니다. 설명 중 하나는 얼굴 당 대신 정점 당 법선을 계산해야한다는 것입니다. 메쉬의 모든 구석에 대한 법선을 계산해야한다는 의미입니까? 일단 내가 정상적으로하면 어떻게 할까? 난 아직도 오래 된 glBegin glEnd 메서드를 사용했지만 지금은 DrawArray 메서드를 사용해야 할 것 같은 느낌. 나는 아주 혼란스럽고 나는 소리를별로 내지 않겠지 만 당신의 도움에 감사드립니다.

답변

1

평평한 표면이 필요하면 법선이 사면 평면의 법선이됩니다. "부드러운 찾고"표면이 필요한 경우 (read this 및 시계 this 멋진 단순한 비디오) 법선을 혼합해야합니다. 그러면 그라데이션이 추가됩니다.

+0

그래야 정점 법선을 계산할 경우 9 개의 좌표 (2x2 메시)를 모두 반복하고 일반 정점을 계산하여 별도의 공간에 저장하고 glNormalPointer/glvertexPointer 및 glDrawArrays를 사용해야합니까? – user1830954

+0

오래된 학교 API를 사용하려면 오래된 방법으로 법선을 설정할 수 있습니다. 차이점은 정상 값이이 점의 다른 일반 값과 ​​혼합된다는 것입니다 (하나의 쿼드에 더 많은 점이있는 경우). 각 쿼드에는 자체의 법선이 있고 서페이스 간의 천이를 부드럽게하기를 원하기 때문입니다. – JAre