소개

Aspose.3D FOSS은(는) 3D 파일 형식을 다루기 위한 무료 오픈소스 .NET 라이브러리입니다. 이는 단순 파일 변환을 넘어서는 포괄적인 utility classes 집합을 제공하여 개발자가 mesh를 조작하고 transform을 구축하며 primitive geometry를 프로그래밍 방식으로 생성할 수 있게 합니다. 이 라이브러리는 MIT license 하에 배포되어 개인 및 상업 프로젝트 모두 제한 없이 사용할 수 있습니다.

이 게시물은 라이브러리 내의 utility 기능에 초점을 맞춥니다: mesh를 삼각형화하거나, 단계별로 transform 매트릭스를 구성하거나, 파라메트릭 geometry를 생성해야 할 때 사용하는 classes와 methods입니다. 이러한 building blocks은 소개 게시물에서 다룬 핵심 scene-loading 및 scene-saving 워크플로를 보완합니다.

빌드 파이프라인에서 3D assets를 처리하든, 게임 엔진을 위한 geometry를 준비하든, 또는 포맷 간 변환을 하든, 이러한 utilities는 실제 3D 워크플로에서 발생하는 일반적인 작업을 처리합니다.


포함 내용

메시 작업

Mesh 클래스는 polygon 기반 geometry를 나타냅니다. 정점 인덱스로부터 polygons를 생성하고, polygon 크기를 조회하며, faces를 triangulate하고, 정점 데이터를 최적화할 수 있습니다. ControlPoints 속성은 vertex 위치에 직접 접근을 제공하고, Polygons는 face 인덱스 배열을 노출합니다.

using Aspose.ThreeD;
using Aspose.ThreeD.Entities;

var scene = new Scene();
var mesh = new Mesh("CustomMesh");

// Add control points (vertices)
mesh.ControlPoints.Add(new Vector4(0, 0, 0));
mesh.ControlPoints.Add(new Vector4(10, 0, 0));
mesh.ControlPoints.Add(new Vector4(10, 10, 0));
mesh.ControlPoints.Add(new Vector4(0, 10, 0));

// Create a quad polygon from four vertices
mesh.CreatePolygon(0, 1, 2, 3);

// Triangulate all polygons in the mesh
mesh.Triangulate();

변환 빌더

TransformBuilder 클래스는 변환 행렬을 구성하기 위한 유창한 인터페이스를 제공하며, translate, rotate, scale operations의 순서를 통해 수행됩니다. 구성 순서(append 또는 prepend)를 제어할 수 있으며, builder를 재설정하여 새로운 체인을 시작할 수 있습니다.

using Aspose.ThreeD;
using Aspose.ThreeD.Utilities;

var builder = new TransformBuilder(ComposeOrder.Append);

// Build a combined transform: translate, then rotate, then scale
builder.Translate(5, 0, 3);
builder.RotateDegree(45, new Vector3(0, 1, 0));
builder.Scale(2, 2, 2);

// Retrieve the composed 4x4 matrix
Matrix4 result = builder.Matrix;

다각형 수정자

PolygonModifier 클래스는 mesh 처리를 위한 static utility 메서드를 제공하며, including a Triangulate 메서드가 n면 polygon mesh를 triangle-only geometry로 변환하도록 설계되었습니다. 이 FOSS 에디션에서는 Triangulate가 구현되어 있지 않으며 – 모든 오버로드가 런타임에 NotImplementedException를 발생시킵니다. 작동하는 삼각분할을 위해서는 위의 메시 작업 섹션에 표시된 Mesh.Triangulate()를 대신 사용하십시오.

using Aspose.ThreeD;
using Aspose.ThreeD.Entities;

var scene = new Scene();
var box = new Box(2, 2, 2);
Mesh boxMesh = box.ToMesh();

Primitive Geometry 생성

이 라이브러리는 Box, Sphere, Cylinder와 같은 파라메트릭 geometry classes를 포함합니다. 각 primitive는 차원 및 세그먼트 수로 구성할 수 있으며, 이후 ToMesh() 메서드를 통해 Mesh로 변환되어 추가 처리 또는 내보내기에 사용됩니다.

using Aspose.ThreeD.Entities;

// Create a parameterized sphere
var sphere = new Sphere(5.0, 32, 16);
Mesh sphereMesh = sphere.ToMesh();

// Create a cylinder (cone when one radius is zero)
var cone = new Cylinder(0, 3.0, 6.0);
Mesh coneMesh = cone.ToMesh();

경계 상자 계산

모든 Entity 서브클래스는 GetBoundingBox() 메서드를 노출하며, 이 메서드는 geometry의 축 정렬된 경계 상자를 반환합니다. BoundingBox 구조체는 MinimumMaximum 코너 벡터를 제공하여 공간 쿼리 및 카메라 프레이밍에 유용합니다.

using Aspose.ThreeD.Entities;
using Aspose.ThreeD.Utilities;

var box = new Box(4, 2, 6);
BoundingBox bounds = box.GetBoundingBox();

Vector3 min = bounds.Minimum;
Vector3 max = bounds.Maximum;

빠른 시작

NuGet에서 패키지를 설치하십시오:

dotnet add package Aspose.3D.FOSS

파일을 로드하고, 모든 메쉬를 삼각형화한 뒤, 결과를 저장합니다:

using Aspose.ThreeD;
using Aspose.ThreeD.Entities;

// Load a scene from an OBJ file
var scene = new Scene();
scene.Open("input.obj");

// Walk child nodes and triangulate each mesh entity
foreach (var node in scene.RootNode.ChildNodes)
{
    foreach (var entity in node.Entities)
    {
        if (entity is Mesh mesh)
        {
            mesh.Triangulate();
        }
    }
}

// Save the triangulated scene as glTF
scene.Save("output.glb");

지원되는 형식

포맷확장읽기쓰기
Collada.dae
FBX.fbx
glTF / GLB.gltf / .glb
3MF.3mf
Wavefront OBJ.obj
PLY.ply아니오
STL.stl

오픈 소스 및 라이선스

Aspose.3D FOSS은 MIT 라이선스 하에 배포됩니다. 이 라이브러리를 오픈 소스 및 상용 프로젝트 모두에서 사용, 수정 및 재배포할 수 있습니다. 전체 소스 코드는 GitHub에서 aspose-3d-foss/Aspose.3D-FOSS-for-.NET에서 확인할 수 있습니다.


시작하기

  • 개발자 가이드 – 전체 문서로 장면 관리, 형식 옵션 및 고급 기능을 다룹니다.
  • 지식 베이스 – 사용 방법 기사와 자주 묻는 질문.
  • API Reference – 클래스별 메서드 서명 및 속성 세부 정보를 포함한 레퍼런스.

관련 리소스