3D 장면의 모든 메시를 여러 하위 메시로 분할할 수 있습니다. 마찬가지로 C#을 사용하여 프로그래밍 방식으로 여러 메시를 단일 메시로 병합할 수 있습니다. 이 문서에서는 다양한 시나리오에서 3D 메시의 분할 및 병합에 대해 설명합니다.
- 3D 씬 메시 스플리터 또는 병합 – C# API 설치
- C#을 사용하여 프로그래밍 방식으로 재질별로 장면의 메시 분할
- C#을 사용하여 프로그래밍 방식으로 특정 재질로 메쉬 분할
- C#에서 프로그래밍 방식으로 3D 파일의 메쉬를 단일 메쉬로 병합
3D 씬 메시 스플리터 또는 병합 – C# API 설치
Aspose.3D for .NET API는 C#을 사용하여 프로그래밍 방식으로 3D 메쉬를 분할하거나 병합하는 데 사용할 수 있습니다. 다운로드 섹션에서 설치하거나 아래의 NuGet 설치 명령을 사용하여 API를 구성할 수 있습니다.
PM> Install-Package Aspose.3D
C#을 사용하여 프로그래밍 방식으로 재질별로 장면의 메시 분할
FBX 형식과 같은 3D 파일에는 장면의 여러 메시가 포함될 수 있습니다. 메시에 단일 재료가 할당되지 않은 경우 모든 메시를 재료당 여러 하위 메시로 분할할 수 있습니다. 재료별로 장면의 메쉬를 분할하려면 아래 단계를 따르십시오.
- 입력 3D 파일을 로드합니다.
- SplitMesh 방법으로 모든 메시를 분할합니다.
- 분할된 메쉬와 함께 출력 파일을 저장합니다.
다음 코드는 C#을 사용하여 프로그래밍 방식으로 재질별로 장면의 메시를 분할하는 방법을 보여줍니다.
// 입력 FBX 3D 파일 로드
Scene scene = new Scene("test.fbx");
// 모든 메쉬 분할
PolygonModifier.SplitMesh(scene, SplitMeshPolicy.CloneData);
// 분할된 메쉬로 출력 파일 저장
scene.Save("test-splitted.fbx", FileFormat.FBX7500ASCII);
C#을 사용하여 프로그래밍 방식으로 특정 재질로 메쉬 분할
재질을 수동으로 지정하여 메쉬를 분할할 수 있습니다. 이러한 방식으로 하나의 재료만 포함하는 여러 개체를 만들 수 있습니다. 데모를 위해 아래 코드는 6개의 평면이 있는 상자의 메쉬를 만듭니다. 그런 다음 다음 단계를 사용하여 수동으로 재질을 지정하여 기본 메시를 분할합니다.
- 6개의 평면이 있는 상자의 메쉬를 만듭니다.
- 둘째, 재료 요소를 생성하고 각 평면에 대한 인덱스를 지정합니다.
- SplitMeshPolicy 열거를 사용하여 메시를 분할합니다.
아래 코드는 C#을 사용하여 프로그래밍 방식으로 특정 재질로 메쉬를 분할하는 방법을 설명합니다.
// 상자의 메쉬 생성(상자는 6개의 평면으로 구성됨)
Mesh box = (new Box()).ToMesh();
// 이 메쉬에 재료 요소 생성
VertexElementMaterial mat = (VertexElementMaterial)box.CreateElement(VertexElementType.Material, MappingMode.Polygon, ReferenceMode.Index);
// 그리고 각 평면에 대해 다른 재료 인덱스를 지정합니다.
mat.Indices.AddRange(new int[] { 0, 1, 2, 3, 4, 5 });
// 이제 6개의 하위 메쉬로 분할하고 각 평면에 6개의 다른 재료를 지정했습니다. 각 평면은 하위 메쉬가 됩니다.
// CloneData 정책을 사용했으며 각 평면은 동일한 제어점 정보 또는 제어점 기반 정점 요소 정보를 갖습니다.
Mesh[] planes = PolygonModifier.SplitMesh(box, SplitMeshPolicy.CloneData);
mat.Indices.Clear();
mat.Indices.AddRange(new int[] { 0, 0, 0, 1, 1, 1 });
// 이제 2개의 하위 메쉬로 분할합니다. 첫 번째 메쉬에는 0/1/2 평면이 포함되고 두 번째 메쉬에는 3/4/5 평면이 포함됩니다.
// 우리는 CompactData 정책을 사용했으며, 각 평면에는 자체 제어점 정보 또는 제어점 기반 정점 요소 정보가 있습니다.
planes = PolygonModifier.SplitMesh(box, SplitMeshPolicy.CompactData);
C#에서 프로그래밍 방식으로 3D 파일의 메쉬를 단일 메쉬로 병합
아래 단계에 따라 서로 다른 메시를 하나의 유효한 메시로 병합할 수 있습니다.
- 입력 3D 장면 파일을 로드합니다.
- 모든 메쉬를 병합합니다.
- 마지막으로 병합된 메쉬를 인코딩합니다.
다음 코드는 C#을 사용하여 프로그래밍 방식으로 메쉬를 단일 메쉬로 병합하는 방법을 자세히 설명합니다.
// 입력 3D 장면 로드
Scene scene = new Scene("LAD-TOP.rvm");
// 모든 메쉬 병합
Mesh mesh = PolygonModifier.MergeMesh(scene);
// 이 메시를 PLY 형식으로 인코딩
FileFormat.PLY.Encode(mesh, "LAD-TOP.ply");
무료 임시 라이센스 받기
API를 제한 없이 테스트할 수 있는 무료 평가판 라이선스를 얻을 수 있습니다.
결론
결론적으로 3D 장면의 메쉬를 병합하거나 분할하는 방법을 배웠습니다. API는 요구 사항에 따라 활용할 수 있는 하나 이상의 메시를 분할하거나 병합하는 다양한 방법을 제공합니다. 또한, 다른 여러 기능도 설명되어 있는 문서를 자유롭게 방문하십시오. 문의 사항이 있으시면 무료 지원 포럼으로 연락해 주십시오.