2014-01-23 3 views
5

OpenGL에 수학 식 (예 : 자동차)으로 표현할 수없는 복잡한 서페이스를 렌더링하는 데 사용되는 기술에 대해 알고 싶습니다. 우리는 매우 많은 기본 요소 (구, 원뿔, ...)를 결합하여 만듭니다. 아니면 다른 방법이 있습니까? 3D 자동차를 렌더링하고 시작할 위치를 알고 싶은 앱을 만들기 시작합니다.OpenGL의 복잡한 서페이스 그리기

+0

대략적으로 표면에 가까운 다각형 메쉬를 사용합니다. 그러나 생성/모델링에 관해서는 구체, 원뿔, 상자 등과 같은 기본 요소를 사용하여 집합 연산을 수행하면됩니다. [Constructive Solid Geometry] (http : // en. wikipedia.org/wiki/Constructive_solid_geometry), 결과는 일반적으로 효율적인 실시간 렌더링을 위해 삼각형 메쉬로 변환됩니다. –

+0

사용 가능한 모든 접근 방식에 대한 자세한 개요는 [솔리드 모델링] (http://en.wikipedia.org/wiki/Solid_modeling)을 참조하십시오. GPU는 전통적으로 삼각형을 빠르게 그리는 것을 목표로 설계되었으므로 일반적으로 모델이 처음 생성 된 방법에 관계없이 모델이 어떻게 풀 렸는지 알 수 있습니다. –

답변

4

Blender과 같은 타사 도구를 사용하여 내 보낸 다음 OpenGL에서 렌더링 할 수있는 모델을 만들 수 있습니다. 이 모델은 일반적으로 삼각형으로 구성되지만 2D의 펜과 종이와 유사한 3D 도구로 그려집니다. OpenGL Model Tutorial

2

예, OpenGL을 여러 기본 요소를 그림으로써 이미지를 생성 ("원시"로 알려진) : 여기

는 주제에 대한 튜토리얼입니다.

가장 일반적으로 사용되는 기본 요소는 삼각형과 사변형 (또는 "쿼드", 일반적으로 두 개의 삼각형으로 구현 됨)입니다. 선 및 점 기본 요소 그리기에 대한 규정도 있지만 일반적으로 사실적 표면 그리기에는 사용되지 않습니다.

복잡한 표면은 삼각형 또는 사각형의 메쉬로 근사됩니다. 숨겨진 표면 제거는 일반적으로 깊이 맵을 사용하여 수행됩니다. 카메라에 가까이있는 기본 도형은 픽셀 단위로 더 먼 원색도를 금지 및 무시합니다.

좋은 이미지를 생성하는 데 필요한 테셀레이션 수준을 줄이기 위해 OpenGL은 삼각형 (및 쿼드) 모서리 사이의 (가상) 접선 평면 보간을 지원합니다. "쉐이딩 법선 (shading normal)"이라고하는이 값싼 근사값은 실제로는 소수의 프리미티브로 근사 된 연속 표면을 손상시킬 수있는 패싯 모양을 실질적으로 제거합니다.

1

개체를 처음부터 디자인하는 것은 매우 어렵습니다. OpenGL은 다각형 렌더링 기계입니다. 보통의 물체는 3D 위치에 대한 버텍스와 물체의 모양에 대한 인덱스로 표현됩니다. obj file. 예를 들어 차 또는 다른 것을 나타내는 몇 가지 obj 파일을 찾고 렌더링 할 수 있습니다. 또한 패치를 사용하여 복잡한 모델을 설계하는 다른 방법이 있습니다. 패치는 모델 patches에 대한보다 나은 제어를 위해 CAD 프로그램에서 사용됩니다. 더 복잡한 모델을 만들려면 많은 패치를 함께 연결하십시오.

관련 문제