다음을 통해 공유


D3DX의 메시 지원(Direct3D 9)

D3DX는 도우미 서비스를 제공하는 유틸리티 라이브러리입니다. Direct3D 구성 요소 위의 계층입니다.

메시

D3DX는 .x 파일 콘텐츠를 로드, 조작 및 렌더링하는 메시 구문을 구현합니다. 메시는 기본적으로 일부 기하 도형을 정의하는 꼭짓점의 컬렉션이며 얼굴을 정의하는 인덱스 집합입니다. 여러 메시 유형이 있습니다.

ID3DXBaseMesh 는 기본 사항을 제공합니다. ID3DXMesh 는 ID3DXBaseMesh에서 상속되며 칩당 꼭짓점 캐시를 사용하여 메시 최적화를 추가합니다. ID3DXSkinInfo 는 스킨 메시 지원을 제공합니다.

ID3DXBaseMesh는 기본 메시에서 상속되는 ID3DXMesh 메시 개체를 조작하고 쿼리하는 메서드를 제공합니다. 여기에는 인접 작업, 기하 도형 버퍼 검색, 잠금/잠금 해제 작업(꼭짓점 및 인덱스), 복사, 렌더링, 얼굴 및 꼭짓점 정보가 포함됩니다.

참고 항목

Direct3D 9의 이전 릴리스에서 사용할 수 있는 ID3DXPMesh 및 ID3DXSPMesh 인터페이스(각각 프로그레시브 및 간소화된 메시 지원)가 삭제되었습니다.

 

메시 아키텍처

메시에는 복잡한 모델에 대한 데이터가 포함됩니다. 텍스처 및 재질과 같은 리소스와 위치 데이터 및 인접 데이터와 같은 특성을 포함하는 추상 데이터 컨테이너입니다. 그리기 성능과 표면의 모양을 향상시키는 여러 메시 작업이 있습니다. 또한 메시 작업의 기능에 영향을 주는 여러 가지 다른 메시 개념이 있습니다. 이러한 메시 개념을 적용할 수 있도록 이해하면 메시 성능이 향상됩니다.

Mesh 개체 데이터

메시에는 꼭짓점 버퍼, 인덱스 버퍼 및 특성 버퍼가 포함됩니다.

  • 꼭짓점 버퍼에는 메시 꼭짓점인 꼭짓점 데이터가 포함됩니다.
  • 인덱스 버퍼에는 꼭짓점 버퍼에 액세스하기 위한 꼭짓점 인덱스가 포함되어 있습니다. 이렇게 하면 중복 꼭짓점을 줄여 꼭짓점 버퍼 크기를 줄일 수 있습니다. 인덱싱된 메시만 인덱스 버퍼를 사용합니다. 예를 들어 메시가 삼각형 목록으로 구성된 경우 인덱스 버퍼를 사용하지 않습니다.
  • 특성 버퍼에는 특성 데이터가 포함됩니다. 특성은 특정 순서 없이 메시 꼭짓점의 속성입니다. D3DX 메시는 각 면에 대한 DWORDS 그룹에 특성을 저장합니다.

특성 테이블

특성 테이블은 특성 버퍼의 내용을 간결하게 표현한 것입니다. 특성 테이블은 D3DXMESHOPT_ATTRSORT 사용하여 Optimize 메서드 중 하나를 호출하거나, 특성 버퍼를 잠그고 데이터로 채우거나, SetAttributeTable을 호출하여 만들 수 있습니다. 메시가 그룹으로 다시 정렬될 때 메시에는 특성 테이블이 포함됩니다. 이는 특성 정렬 옵션(D3DXMESHOPT_ATTRSORT 이상)이 제공된 것으로 가정하여 Optimize가 호출될 때 발생합니다. D3DX 메시는 인덱싱된 삼각형 목록을 사용하므로 IDirect3DDevice9::D rawIndexedPrimitive그려집니다.

특성 테이블은 Optimize 호출의 결과로 만들어집니다. 최적화는 인접하도록 순서를 다시 지정하기 때문에 얼굴을 인접할 필요가 없습니다. 예를 들어 인간 메시의 손은 동일한 특성을 사용할 수 있습니다. ID는 얼굴을 그룹으로 정렬하는 데 도움이 됩니다. .x 파일의 메시는 재질 및 질감 속성에 대한 특성을 자동으로 생성합니다. 좋은 성능을 얻으려면 Optimize(ATTRSORT) 또는 더 효과적인 Optimize(VERTEXCACHE)를 호출해야 합니다. 로드 함수는 데이터를 저장한 정확한 형식으로 표시하려고 합니다. 꼭짓점 버퍼/인덱스 버퍼 기반 메시를 사용하는 경우 메시 API는 오버헤드가 거의 없는 최적화 함수 및 스키닝 변환을 제공합니다.

최적화 형식은 최적(D3DXMESHOPT_COMPACT)에서 가장 최적(D3DXMESHOPT_IGNOREVERTS)으로 시작하여 누적됩니다. D3DXMESHOPT_STRIPREORDER 압축 및 특성 정렬을 수행합니다. 실제 꼭짓점 캐시가 없는 디바이스에서도 항상 D3DXMESHOPT_VERTEXCACHE 것이 좋습니다.

애플리케이션 데이터

애플리케이션 데이터는 애플리케이션에서 관리하는 메시 데이터입니다. 메시 꼭짓점 데이터와 이러한 버퍼에서 관리하는 데이터 간에 긴밀한 결합이 있습니다.

재질 버퍼에는 n개의 재질이 포함됩니다. .x 파일이 로드되면 Load 함수에서 재질을 반환합니다. 각 하위 집합에는 자체 재료와 질감이 있을 수 있습니다. 재질 버퍼가 정적입니다.

인접 버퍼에는 가장자리, 얼굴 및 인접한 얼굴에 대한 정보가 포함됩니다. 일부 메시 작업은 서로 인접한 얼굴을 파악하는 데 따라 달라집니다. 인접 데이터라고 하는 이 정보는 인접 버퍼에 보관됩니다. 메시의 일부가 아니지만 애플리케이션에서 기본 있으며 필요한 경우 메시 메서드에 제공해야 합니다.

효과 인스턴스 버퍼에는 효과 인스턴스 목록이 포함되어 있습니다. 효과 인스턴스는 상태를 저장합니다. 이 상태 정보는 파이프라인을 초기화하는 데 사용됩니다. 효과 인스턴스에는 효과의 이름-값 쌍이 포함됩니다.

고급 메시 항목

최적화된 메시는 기본 메시 기능을 기반으로 하며, 새 메시를 만드는 Optimize와 원래 메시를 수정하는 OptimizeInPlace라는 두 가지 방법으로 꼭짓점 캐시 최적화 기능을 추가합니다.

D3DXGeneratePMesh는 D3DX 단순화 알고리즘을 사용하여 입력 메시에서 점진적 메시를 생성합니다. D3DXSimplifyMesh는 동일한 단순화 알고리즘을 사용하여 입력 메시에서 지정된 세부 수준의 표준 메시를 생성합니다. 사용자는 꼭짓점 구성 요소당 지정된 가중치 및 꼭짓점당 지정된 가중치를 통해 사용되는 오류 메트릭을 제어할 수 있습니다. 구성 요소별 가중치는 에지 축소당 계산된 오류의 해당 구성 요소 부분에 곱합니다. 꼭짓점당 가중치는 해당 꼭짓점 제거에 대해 결정된 오류 메트릭 값에 곱합니다. 예를 들어 꼭짓점을 제거하지 않으려면 특정 꼭짓점의 가중치를 큰 값으로 설정합니다. 반대로 이전에 제거하려면 작은 값(1보다 작음)으로 설정합니다.

ID3DXSkinInfo 는 스킨 문자를 지원합니다. 스킨 문자는 메시 집합과 메시의 꼭짓점에 영향을 주는 뼈 집합으로 정의됩니다. 뼈는 변환 계층 구조로 표시됩니다. 각 메시에는 영향을 주는 모든 뼈에 대한 행렬이 있으며, 메시를 뼈의 로컬 좌표 공간으로 변환합니다. 이 매트릭스는 메시에 대한 뼈의 뼈 공간 변환입니다. 이는 제작 프로세스에서 스켈레톤이 메시와 연결된 시점에 정의됩니다.

스킨 지정

스키닝은 뼈를 사용하여 메시 꼭짓점을 변환하는 기술입니다. 뼈는 일반적으로 인체의 뼈와 마찬가지로 계층적 골격으로 배열됩니다. 개체 꼭짓점은 뼈에 피부를 부착하는 것과 같이 뼈와 연결됩니다. 뼈가 변형되면 피부도 변형됩니다.

스킨 메시는 뼈를 사용하여 여러 꼭짓점의 영향을 미칩니다. 뼈 변환 데이터는 뼈를 SRT하는 방법에 영향을 미치기 위해 사용자가 제공합니다. 메시는 변형된 뼈를 사용하여 뼈와 연결된 꼭짓점에 영향을 미칩니다. 색상표는 SRT 변환의 배열입니다. 색상표는 종종 행렬로 구현되지만 SRT 값을 포함할 수 있습니다.

프로그레시브 메시 트리밍

낮은 세부 영역은 표면의 렌더링된 모양을 변경하지 않는 꼭짓점을 잃을 수 있습니다. 특히 카메라에서 더 멀리 이동하는 개체의 경우입니다. 이를 세부 수준이라고 합니다. 사용자에게는 렌더링 효율성을 최대화하기 위해 세부 수준 설정을 위한 API 수준 렌더링 컨트롤이 있습니다.

프로그레시브 메시 개체는 많은 수의 얼굴로 시작하고 단순화를 사용하여 얼굴 수를 줄입니다. 뷰 독립적인 프로그레시브 메시를 VIPM(뷰 독립적 프로그레시브 메시)이라고 합니다.

얼굴 수를 줄이는 또 다른 방법은 트리밍입니다. 실제로 메시에서 꼭짓점과 얼굴을 제거합니다. 트리밍은 하이 엔드(최대 얼굴 수 제한) 또는 로우 엔드(최소 얼굴 수를 제한)에서 수행할 수 있습니다. 트리밍은 그리기 성능을 향상시킵니다. 그러나 시각적 품질을 유지하기 위해 주의해야 합니다. 트리밍은 프로그레시브 메시 SDK 샘플에 설명되어 있습니다.

가시성이 높은 영역의 경우 PLOD(점진적 세부 수준)를 사용하여 해상도를 높일 수 있습니다. 한 얼굴을 두 개의 얼굴로 나누는 기술입니다.

패치 메시

두 가지 특수한 유형의 패치 메시도 지원됩니다. 직사각형 및 삼각형 패치. 사각형 패치 메시는 제어점이 구불구불한 사각형 시퀀스로 배치되는 패치 메시입니다. 사각형 및 삼각형 패치는 높은 순서의 표면을 만드는 데 사용됩니다. 일반적으로 삼각형 메시만큼 사용되지 않습니다.

D3DX