2009-05-29 5 views
3

3D 서페이스를 그리고 보이지 않는 선을 숨기는 방법을 아는 사람이 있습니까?3D 서페이스를 그리고 보이지 않는 선을 숨기는 방법은 무엇입니까?

Apple II 책에서 일부 코드를 읽었으며 기본 코드는 약 25 행이었으며 산이나 물결처럼 보이는 모양과 같은 3D 표면을 그릴 수있었습니다. 보이지 않는 선은 처음에 표시되었지만 몇 줄의 코드를 추가 한 후에 보이지 않는 선도 사라졌습니다.

누군가이 작업을 수행하거나 웹에서 리소스를 아는 방법을 알고 있습니까?

+0

, 그것은 내가 어떤 경우에는 생각 ... 점 또는 선이 될 수 :-) 모든 기본 수학 잊어, OpenGL을 사용, 점을 연결했다 라인을 형성 –

답변

5

이것은 다각형을 그리는 방법에 따라 약간 다릅니다. OpenGL이나 DirectX에 관해서는이 문제들 중 많은 부분을 해결하도록 설계되었으므로 조금 읽는 것이 좋습니다. 직접 사용하지 않으려는 경우 이미 이러한 API를 기반으로 구축 된 많은 훌륭한 엔진이 있습니다.

당신이 채워진 다각형을 그리는 것을 가정하면 (질감, 고체 등) 여기에 일반적인 알고리즘의 몇 사용할 수 있습니다 : 카메라에서 거리로

  • 정렬 다각형이 먼저 떨어져 그 furtherest 페인트, 그렇지 않으면 Painters Algorithm으로 알려져 있습니다. 이 방법은 효율적인 Doom을 위해 BSP Tree을 사용했던 고전적인 Doom과 같은 많은 오래된 3D 게임에서 사용되었습니다.

  • 카메라에서 가장 가까운 거리를 화면의 각 픽셀에 저장하고 더 멀리 그려야합니다 (그렇지 않으면 Z-Buffering). 이 방법은 최신 3D 비디오 카드, OpenGL 및 DirectX에서 잘 지원됩니다.

  • 자연히 표면 제거가 숨겨진 알고리즘 ray tracing을 사용하십시오. 당신이 삼각형 메쉬를 그릴 경우

+0

그래. 우리가 가지고있는 하드웨어를 사용하는 것이 합리적입니다. 질문자가 말하고있는 코드는 그리기 선 이었지만, 폴리 폴리은 아닙니다. – Nosredna

+0

"3D 서페이스를 그리는 방법을 아는 사람이 있습니까?"라는 질문이 시작됩니다.라인을 가짜로 채우는 검은 색 채움 다각형을 사용하면 각 라인의 가시성을 결정하는 것보다 훨씬 쉬울 것입니다. –

+0

오, 예, 100 % 동의합니다. 하지만 애플 II가 무엇을했는지 (그리고 현대의 그래픽 계산기가하는 것) 할 생각이라면, 수십 줄에 그것을 채우는 것은 꽤 쉽습니다. – Nosredna

3

그 책을 기억합니다. 만약 내가 정확히 기억한다면, 이것들은 표면 플롯이었고, 사용 된 트릭은 앞뒤로 선을 그려서 각 x에 대한 최소값과 최대 값을 추적하는 것이 었습니다. 아마 라인 서랍은 Bresenham이었고, max보다 크거나 min보다 작지 않은 한 그려지는 점을 건너 뛸 수 있도록 수정되었습니다.

알고리즘에 대한 좋은 점은 곡선도 할 수 있다는 것입니다. 선분 만이 아닙니다. 아마도 잔물결 사진은 trig 함수와 x 및 y를 매개 변수로 조합 한 것입니다.

나는 내 머리 속에 그 그림을 볼 수 있습니다. 그 책이 무엇인지 알기를 원할 것입니다.

2

는 다음 각 삼각형의 백 페이스 컬링을해야하고,이 삼각형의 가장자리를 그리지 않는 백 직면 정상. 삼각형의 두 연속 가장자리의 교차 곱으로 법선을 계산합니다.

윤곽선 만 플롯하려면 앞면 세로 방향이있는 삼각형과 세로 방향이 뒤쪽 인 삼각형 사이의 가장자리 만 그립니다.

아니면 깊이 버퍼를 켜, 실제로

관련 문제