우리는 제공을 발표하게 되어 기쁩니다 Aspose.3D FOSS for .NET – .NET 애플리케이션에서 3D 파일 포맷을 다루기 위한 무료 오픈소스 라이브러리입니다. 순수 C# 솔루션으로 네이티브 종속성이 없으며, 이 라이브러리는 .NET 10.0 이상을 대상으로 하여 다양한 프로젝트와 환경에서 사용할 수 있습니다.
이 게시물에서는 라이브러리가 제공하는 내용, 시작 방법, 그리고 이후 진행 방향에 대해 안내합니다.
Aspose.3D FOSS for .NET이란 무엇인가요?
Aspose.3D FOSS for .NET는 경량 3D 파일 처리 라이브러리로, 다음 라이선스 하에 배포됩니다. MIT license. 이 라이브러리는 씬 그래프 API를 제공하여 여러 널리 사용되는 포맷의 3D 모델을 로드, 검사, 변환 및 저장할 수 있습니다. 라이브러리는 완전히 C#으로 작성되었으며 외부 네이티브 바이너리나 플랫폼별 설정이 필요 없습니다.
소스 코드는 GitHub에서 확인할 수 있습니다: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET
주요 하이라이트
- 순수 C# – P/Invoke 없음, 네이티브 라이브러리 없음, 플랫폼 제한 없음.
- .NET 10.0+ 호환됩니다.
- MIT licensed – 개인, 상업, 또는 독점 프로젝트에서도 제한 없이 사용할 수 있습니다.
- 씬 그래프 아키텍처 – 노드, 메쉬, 카메라 및 재질로 구성된 친숙한 트리 구조입니다.
- 다중 포맷 지원 – OBJ, STL, glTF 2.0, GLB, FBX, Collada, 및 3MF 파일을 읽고 쓸 수 있습니다.
빠른 시작
NuGet 설치
프로젝트에 NuGet 패키지를 추가합니다:
dotnet add package Aspose.3D --version 26.1.0
첫 번째 변환
가장 간단한 사용 사례는 한 형식의 3D 파일을 로드하고 다른 형식으로 저장하는 것입니다. 다음은 OBJ를 STL로 변환하는 두 줄 코드 예시입니다:
using Aspose.ThreeD;
var scene = new Scene();
scene.Open("cube.obj");
scene.Save("output.stl");
그 Scene class는 중앙 진입점입니다. 호출 scene.Open() 파일 경로를 사용해 모델을 로드한 뒤, 호출 Save() 대상 경로와 함께. 라이브러리는 파일 확장자를 기반으로 형식을 추론합니다.
스크래치에서 Scene 구축
프로그래밍 방식으로 씬을 구성할 수도 있습니다:
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
var scene = new Scene();
var box = new Box(2, 2, 2);
var node = scene.RootNode.CreateChildNode("Box", box);
node.Transform.Translation = new FVector3(1, 2, 3);
scene.Save("scene.gltf");
이 코드는 새 씬을 생성하고, 루트 아래에 박스 프리미티브를 자식 노드로 추가한 뒤, 좌표 (1, 2, 3) 에 위치시키고, 결과를 glTF 파일로 내보냅니다.
형식별 옵션을 사용한 로드
로드 과정에 대해 더 세밀한 제어가 필요할 때, 각 형식은 전용 옵션 클래스를 제공합니다. 예를 들어, 명시적 옵션을 사용해 STL 파일을 로드하는 경우:
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;
var scene = new Scene();
var opts = new StlLoadOptions();
scene.Open("part.stl", opts);
// Inspect the loaded scene
Console.WriteLine("Root children: " + scene.RootNode.ChildNodes.Count);
// Re-export as OBJ
scene.Save("part.obj");
그 scene.Open() 메서드는 로드 옵션 유형 중 어느 것이든 허용합니다: ObjLoadOptions, StlLoadOptions, GltfLoadOptions, FbxLoadOptions, 또는 TmfLoadOptions.
씬 그래프 탐색
씬이 로드되면, 노드 트리를 순회하여 내용물을 검사하거나 수정할 수 있습니다:
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
var scene = new Scene();
scene.Open("model.gltf");
foreach (var child in scene.RootNode.ChildNodes)
{
Console.WriteLine("Node: " + child.Name);
Console.WriteLine(" Translation: " + child.Transform.Translation);
if (child.Entity is Mesh mesh)
{
Console.WriteLine(" Vertices: " + mesh.ControlPoints.Count);
}
}
이 패턴은 디버깅, 모델 내용에 대한 보고서 생성, 또는 재내보내기 전에 씬의 일부를 선택적으로 수정하는 데 유용합니다.
변환 적용
3D 공간에서 노드를 배치하는 것은 다음을 통해 수행됩니다: Transform 각각의 속성 Node:
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
var scene = new Scene();
var parent = scene.RootNode.CreateChildNode("Parent");
parent.Transform.Translation = new FVector3(10, 0, 0);
var child = parent.CreateChildNode("Child");
child.Transform.Translation = new FVector3(5, 0, 0);
child.Transform.Scale = new FVector3(2, 2, 2);
// Child's world position is (15, 0, 0) due to
// parent-child transform inheritance
scene.Save("transformed.gltf");
변환은 표준 부모-자식 상속 모델을 따릅니다: 자식의 월드 좌표 위치는 로컬 변환과 루트까지의 모든 조상 변환을 결합한 결과입니다.
포함된 내용
이 라이브러리는 3D 씬 그래프 모델을 중심으로 설계된 핵심 기능 집합을 제공합니다.
씬 그래프
씬 그래프는 API의 핵심입니다. 모든 3D 파일은 트리 구조로 표현됩니다:
| 클래스 | 역할 |
|---|---|
Scene | 최상위 컨테이너; 씬 그래프의 루트 |
Node | 트리 내의 명명된 위치; 변환 및 자식 노드를 보유합니다 |
Entity | 노드에 부착된 시각 객체를 위한 추상 기반 |
Mesh | 다각형 기하학 – 정점, 면, 법선 |
Camera | 가상 카메라 정의 |
Transform | 노드에 대한 로컬 이동, 회전 및 스케일 |
GlobalTransform | 계산된 월드 스페이스 변환 |
내장 프리미티브
.NET 에디션에는 노드에 직접 부착하거나 변환할 수 있는 파라메트릭 형태 클래스가 포함됩니다 Mesh:
- 상자 – 축에 정렬된 상자이며, 너비, 높이 및 깊이를 설정할 수 있습니다.
- 구 – 매개변수 구이며, 반경을 설정할 수 있습니다.
- 실린더 – 반지름과 높이를 설정할 수 있는 파라메트릭 실린더.
var sphere = new Sphere(1);
var mesh = sphere.ToMesh();
Console.WriteLine("Vertices: " + mesh.ControlPoints.Count);
재료
라이브러리는 다양한 재질 유형을 제공합니다:
- LambertMaterial – ambient, diffuse, emissive, and reflective 색상 구성 요소를 가진 고전적인 디퓨즈 전용 재질.
- PhongMaterial – Lambert 모델에 스페큘러 하이라이트와 광택을 추가합니다.
- PbrMaterial – 기본 색상, 메탈릭, 거칠기, 오클루전 및 텍스처 슬롯을 갖춘 물리 기반 렌더링 재질.
수학 유틸리티
그 Aspose.ThreeD 네임스페이스에는 필수 수학 원시형이 포함됩니다:
- FVector3 – 위치, 방향 및 스케일을 위한 단정밀도 3컴포넌트 벡터. 다음에서 사용됨:
Transform.Translation및Transform.Scale. - Vector4 – 제어점 및 노멀을 위한 단정밀도 4컴포넌트 벡터.
- Matrix4 – 4x4 변환 행렬.
- Quaternion – 회전 표현. 다음에서 사용됨:
Transform.Rotation. - BoundingBox – 공간 쿼리를 위한 축 정렬 경계 상자.
var a = new FVector3(1, 0, 0);
var b = new FVector3(0, 1, 0);
// Vector operations for spatial computations
로드 및 저장 옵션
각 형식에는 가져오기 및 내보내기 동작을 제어할 수 있는 전용 옵션 클래스가 있습니다:
| 형식 | 로드 옵션 | 저장 옵션 |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| glTF / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | FbxSaveOptions |
| 3MF | TmfLoadOptions | TmfSaveOptions |
예를 들어, 좌표 뒤집기와 노멀 정규화를 적용하여 OBJ 파일을 로드하려면:
var opts = new ObjLoadOptions();
opts.FlipCoordinateSystem = true;
opts.NormalizeNormal = true;
scene.Open("model.obj", opts);
지원되는 형식
다음 표는 Aspose.3D FOSS for .NET가 읽고 쓸 수 있는 형식을 요약한 것입니다.
| 포맷 | 확장자 | 가져오기 | 내보내기 | 참고 사항 |
|---|---|---|---|---|
| OBJ | .obj | 예 | 예 | MTL 재질 포함 |
| STL | .stl | 예 | 예 | 바이너리 + ASCII |
| glTF 2.0 | .gltf | 예 | 예 | JSON 포맷 |
| GLB | .glb | 예 | 예 | 바이너리 glTF |
| FBX | .fbx | 예 | 예 | ASCII 및 바이너리 모드 |
| Collada | .dae | 예 | 예 | |
| 3MF | .3mf | 예 | 예 | ZIP-based 3D 제조 형식 |
형식 선택 가이드
올바른 형식을 선택하는 것은 사용 사례에 따라 달라집니다:
- OBJ 3D 도구 간에 최대 호환성이 필요할 때 이상적입니다. 거의 모든 모델링 애플리케이션이 OBJ를 읽고 쓸 수 있습니다. 메쉬 데이터 교환에 잘 작동하지만 동반되는 MTL 파일을 통해 기본적인 재질 정보만 전달합니다.
- STL 3D 프린팅 워크플로우에서 선택되는 형식입니다. 재질이나 씬 계층 구조 없이 원시 삼각형 기하학을 저장하는데, 이는 슬라이서 소프트웨어가 정확히 기대하는 바입니다.
- glTF 웹 및 실시간 3D를 위한 최신 표준입니다. PBR 재질, 전체 씬 계층 구조를 지원하며 효율적인 전송을 위해 설계되었습니다. 웹 기반 뷰어를 구축하거나 실시간 렌더링 파이프라인을 목표로 할 때 glTF를 사용하십시오.
- FBX 게임 개발 및 디지털 콘텐츠 제작 워크플로우에 깊이 통합되어 있습니다. 계층 구조와 재질을 포함한 풍부한 씬 데이터를 지원합니다. Aspose.3D FOSS for .NET는 FBX를 지원합니다 가져오기 및 내보내기 ASCII 및 바이너리 모드 모두에서.
- 3MF 단일 ZIP-based 패키지에서 풍부한 메타데이터, 재질 및 다중 객체 씬을 지원하는 현대적인 3D 프린팅 형식입니다.
알려진 제한 사항
Scene.Render() 은 지원되지 않음 는 FOSS 에디션에 포함되어 있습니다. 이 메서드를 호출하면 예외를 발생시킵니다 NotImplementedException. 이 라이브러리는 파일 기반 3D 처리 – 로드, 조작, 변환 및 모델 저장 – 에 맞게 설계되었으며, 실시간 디스플레이에 대한 렌더링이 아니라 파일 기반 처리에 중점을 둡니다.
오픈 소스 및 라이선스
Aspose.3D FOSS for .NET은(는) 다음 라이선스에 따라 배포됩니다 MIT 라이선스. 이는 여러분이 자유롭게 할 수 있음을 의미합니다:
- 상업용 및 독점 애플리케이션에서 라이브러리를 사용할 수 있습니다.
- 소스 코드를 필요에 맞게 수정하십시오.
- 라이브러리를 자체 소프트웨어의 일부로 배포하십시오.
MIT 라이선스가 명시한 것 외에 로열티 비용, 사용 제한, 및 저작자 표시 요구사항이 없습니다.
전체 소스 코드는 GitHub에 호스팅되어 있으며, 기여를 환영합니다: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET
시스템 요구 사항
| 요구 사항 | 세부 정보 |
|---|---|
| .NET 버전 | 10.0 or later |
| 종속성 | 없음 (순수 C#) |
| 플랫폼 | .NET를 실행하는 모든 플랫폼 |
| 패키지 관리자 | NuGet |
시작하기
시작하는 데 도움이 되는 리소스는 다음과 같습니다:
- 문서 – 포괄적인 가이드와 API walkthrough가 제공됩니다 Aspose.3D 문서 사이트.
- 지식 베이스 – 실용적인 사용 방법 기사와 문제 해결 팁을 Aspose.3D KB.
- API 레퍼런스 – 자세한 클래스 및 메서드 참조는 Aspose.3D API 레퍼런스.
- 소스 코드 – 찾아보고 기여하세요 GitHub.
- NuGet – 패키지는 다음과 같이 배포됩니다
Aspose.3DNuGet에.
일반적인 사용 사례
다음은 Aspose.3D FOSS for .NET가 잘 맞는 실용적인 시나리오입니다:
포맷 변환 파이프라인
많은 팀이 한 형식의 3D 자산을 받지만 다른 형식이 필요합니다. 디자인 팀은 FBX를 사용하고 웹 팀은 glTF가 필요할 수 있습니다. 이 라이브러리를 사용하면 자동 변환 파이프라인을 구축할 수 있습니다:
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;
// Convert all incoming FBX assets to GLB for the web team
var scene = new Scene();
scene.Open("asset.fbx");
scene.Save("asset.glb");
3D Model Inspection and Validation
3D 에셋을 애플리케이션에 통합하기 전에, 내용물을 검증하고 싶을 수 있습니다 – 노드 수 확인, 기하학 검증, 또는 예상 요소가 존재하는지 확인하기:
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
var scene = new Scene();
scene.Open("model.obj");
int nodeCount = scene.RootNode.ChildNodes.Count;
Console.WriteLine("Top-level nodes: " + nodeCount);
foreach (var child in scene.RootNode.ChildNodes)
{
if (child.Entity is Mesh mesh)
{
Console.WriteLine(child.Name + ": "
+ mesh.ControlPoints.Count + " vertices");
}
}
장면 조립
여러 모델을 로드하고 하나의 장면으로 결합할 수 있습니다:
using Aspose.ThreeD;
var scene = new Scene();
var part1 = new Scene();
part1.Open("chassis.obj");
var part2 = new Scene();
part2.Open("wheels.obj");
// Add nodes from each part into the combined scene
foreach (var child in part1.RootNode.ChildNodes)
{
scene.RootNode.ChildNodes.Add(child);
}
foreach (var child in part2.RootNode.ChildNodes)
{
scene.RootNode.ChildNodes.Add(child);
}
scene.Save("assembled.gltf");
다음은
다음 게시물에서 다룰 내용:
- scene-graph API, 머티리얼, 수학 유틸리티의 핵심 기능을 심층적으로 탐구합니다.
- 지원되는 각 3D 포맷 – OBJ, STL, glTF, FBX, 3MF – 을 활용하는 실용 가이드로, 로드/저장 옵션 및 배치 변환 패턴을 포함합니다.
계속 지켜봐 주세요, 라이브러리를 자유롭게 탐색하고 GitHub에 피드백을 공유해 주세요.