.NET용 FileFormat.Drako
Google Draco 파일의 읽기 및 쓰기 프로세스를 .NET API로 단순화
FileFormat.Drako로 압축된 DRC 파일을 손쉽게 편집하여 HEIC 파일 변환 및 자동화를 간소화하는 경량 오픈소스 .NET API
FileFormat.Drako for .NET 은 Draco 파일 처리 경험을 혁신합니다. 이 종합 가이드에서는 경량 오픈 소스 .NET API인 FileFormat.Drako를 활용하여 Draco 파일을 쉽게 처리할 수 있는 기능과 이점을 자세히 알아봅니다.
Draco는 3D 기하학적 메시와 포인트 클라우드 압축 및 압축 해제를 전문으로 하는 Google에서 개발한 오픈 소스 압축 라이브러리입니다. Draco는 3D 그래픽 파일의 크기를 크게 줄임으로써 시각적 품질을 유지하면서 더 빠른 전송을 가능하게 하고 저장 요구 사항을 줄입니다. 웹 기반 및 모바일 플랫폼을 포함한 다양한 3D 애플리케이션을 지원하여 복잡한 3D 데이터를 효율적으로 처리할 수 있습니다. Draco는 게임, 가상 현실, 3D 시각화 등의 산업에서 성능을 최적화하고 사용자 경험을 향상시키는 데 널리 사용됩니다.
FileFormat.Drako는 Draco 파일을 원활하게 읽고 쓰기 위한 강력한 솔루션으로 등장합니다. 이 경량 오픈 소스 .NET API는 Draco 이미지 작업을 단순화하여 개발자와 사용자에게 Draco 파일을 쉽게 처리할 수 있는 사용자 친화적인 인터페이스를 제공합니다.
FileFormat.Drako는 Openize 라이선스에 따라 사용할 수 있습니다.< /p>
주요 기능 및 장점- 높은 압축률: Draco는 파일 크기를 크게 줄여 시각적 품질의 눈에 띄는 손실 없이 파일 크기를 최대 90%까지 줄입니다. 따라서 대역폭과 저장 공간이 제한된 애플리케이션에 이상적입니다.
- 다양한 데이터 유형 지원: Draco는 지오메트리 메쉬 및 포인트 클라우드를 포함하여 광범위한 3D 데이터 유형에 대한 압축을 지원합니다. 정점 위치, 색상, 법선 및 기타 속성을 효율적으로 처리할 수 있습니다.
- 빠른 압축 및 압축 풀기: 라이브러리는 고속 압축 및 압축 풀기를 제공하도록 설계되어 웹 기반 3D 뷰어 및 가상 현실 경험과 같은 실시간 애플리케이션에 적합합니다.
- 오픈소스 및 무료: 라이센스 비용이 없고 모든 수준의 개발자와 사용자가 액세스할 수 있는 오픈소스 솔루션의 이점을 누려보세요.
- C# 애플리케이션과의 원활한 통합: C# 애플리케이션에 손쉽게 IntegrateFileFormat.Drako를 통합하여 기존 워크플로 내에서 원활한 Draco 파일 처리를 가능하게 합니다.
- 높은 압축률: Draco는 파일 크기를 크게 줄여 시각적 품질의 눈에 띄는 손실 없이 파일 크기를 최대 90%까지 줄입니다. 따라서 대역폭과 저장 공간이 제한된 애플리케이션에 이상적입니다.
- 다양한 데이터 유형 지원: Draco는 지오메트리 메쉬 및 포인트 클라우드를 포함하여 광범위한 3D 데이터 유형에 대한 압축을 지원합니다. 정점 위치, 색상, 법선 및 기타 속성을 효율적으로 처리할 수 있습니다.
- 빠른 압축 및 압축 풀기: 라이브러리는 고속 압축 및 압축 풀기를 제공하도록 설계되어 웹 기반 3D 뷰어 및 가상 현실 경험과 같은 실시간 애플리케이션에 적합합니다.
- 오픈소스 및 무료: 라이센스 비용이 없고 모든 수준의 개발자와 사용자가 액세스할 수 있는 오픈소스 솔루션의 이점을 누려보세요.
- C# 애플리케이션과의 원활한 통합: C# 애플리케이션에 손쉽게 IntegrateFileFormat.Drako를 통합하여 기존 워크플로 내에서 원활한 Draco 파일 처리를 가능하게 합니다.
.NET용 FileFormat.Drako를 시작하는 방법
FileFormat.Drako를 시작하는 것은 빠르고 쉽습니다. 다음 단계를 따르세요.
- InstallFileFormat.Drako: NuGet 패키지 관리자 또는 .NET CLI를 통해 FileFormat.Drako 패키지를 설치합니다.
- 프로젝트와 통합: C# 프로젝트에서 FileFormat.Drako 라이브러리를 참조하세요.
- 변환 시작: FileFormat.Drako에서 제공하는 간단한 API를 활용하여 Draco 파일을 읽고 씁니다.
.NET용 FileFormat.Drako를 설치하는 데 권장되는 방법은 NuGet을 사용하는 것입니다. 원활한 설치를 위해 다음 명령어를 사용해주세요.
NuGet을 통한 .NET용 InstallFileFormat.Drako
NuGet> Install-PackageFileFormat.Drako
GitHub에서 직접 다운로드할 수도 있습니다.C#의 DracoMesh로 Draco 파일 읽기
이 코드 조각은 Draco 파일을 효율적으로 로드하고 후속 작업을 위해 DracoMesh 인스턴스에 저장합니다.
File.ReadAllBytes
를 사용하여 "cube.drc"라는 DRC 파일을 엽니다.- 바이트에서
DracoMesh
개체로 3D 메시를 로드합니다.
아래 코드 조각을 복사하여 기본 파일에 붙여넣고 프로그램을 실행하세요.
DracoMesh 인스턴스로 .drc 파일 읽기
byte[] cube = File.ReadAllBytes("cube.drc");
DracoMesh dm = (DracoMesh)Draco.Decode(cube);
Draco 파일 읽기 및 C#의 Wavefront OBJ에 쓰기
다음 코드는 기존 3D Draco 파일을 열고 추가 처리를 위해 obj 형식으로 쓰는 방법을 보여줍니다.
File.ReadAllBytes
를 사용하여 "input.drc"라는 Draco 파일을 엽니다.- Draco 메시를 바이트에서
DracoMesh
개체로 로드합니다. DracoMesh.GetNamedAttribute
를 사용하여 위치 속성을 찾고 해당 콘텐츠를Span
로 바꿉니다.- OBJ 형식을 사용하여 출력에 제어점을 씁니다.
DracoMesh.ReadFace
를 사용하여 각 면 모서리를 읽습니다.PointAttribute.MappedIndex
를 사용하여 면 모서리를 제어점의 인덱스에 매핑합니다.- OBJ 형식을 사용하여 출력에 얼굴을 씁니다.
아래 코드 조각을 복사하여 기본 파일에 붙여넣고 프로그램을 실행하세요.
.drc 파일을 DracoMesh로 읽고 웨이브프런트 obj로 내보내기
//load draco file
var bytes = File.ReadAllBytes("input.drc");
var mesh = Draco.Decode(bytes) as DracoMesh;
if (mesh == null)
throw new InvalidDataException("Input file is not a valid draco file.");
var attrPos = mesh.GetNamedAttribute(AttributeType.Position);
var points = MemoryMarshal.Cast(attrPos.Buffer.AsSpan());
var sb = new StringBuilder();
for (int i = 0; i < points.Length; i += 3)
{
sb.AppendLine($"v {points[i]} {points[i + 1]} {points[i + 2]}");
}
Span face = stackalloc int[3];
for (int i = 0; i < mesh.NumFaces; i++)
{
mesh.ReadFace(i, face);
var a = attrPos.MappedIndex(face[0]) + 1;
var b = attrPos.MappedIndex(face[1]) + 1;
var c = attrPos.MappedIndex(face[2]) + 1;
sb.AppendLine($"f {a} {b} {c}");
}
File.WriteAllText("output.obj", sb.ToString());
C#에서 프로그래밍 방식으로 제어점, 삼각형을 Draco 파일로 인코딩
제공된 코드는 프로그래밍 방식으로 제어점과 삼각형에서 Draco 파일을 생성하고 C#을 사용하여 "output.drc"로 저장하는 방법을 보여줍니다. 각 단계는 다음과 같습니다.
DracoMesh
인스턴스를 생성합니다.- 제어점을
PointAttribute
로 래핑합니다. DracoMesh
에PointAttribute
를 추가합니다.- 삼각형 인덱스를 추가합니다.
- 지정된 인코딩 매개변수를 사용하여
DracoEncodeOptions
개체를 생성합니다. Draco.Encode
를 사용하여 메시를 바이트로 인코딩합니다.
아래 코드 조각을 복사하여 기본 파일에 붙여넣고 프로그램을 실행하세요.
벡터와 얼굴을 .drc 파일로 인코딩
Vector3[] controlPoints = new Vector3[]
{
new Vector3( -5, 0, 5.0f),
new Vector3( 5, 0, 5.0f),
new Vector3( 5, 10, 5.0f),
new Vector3( -5, 10, 5.0f),
new Vector3( -5, 0, -5.0f),
new Vector3( 5, 0, -5.0f),
new Vector3( 5, 10, -5.0f),
new Vector3( -5, 10, -5.0f)
};
int[] indices = new int[]
{
0,1,2, 0, 2, 3, // Front face (Z+)
1,5,6, 1, 6, 2, // Right side (X+)
5,4,7, 5, 7, 6, // Back face (Z-)
4,0,3, 4, 3, 7, // Left side (X-)
0,4,5, 0, 5, 1, // Bottom face (Y-)
3,2,6, 3, 6, 7 // Top face (Y+)
};
var mesh = new DracoMesh();
//construct an attribute for position, with type float[3],
var attrPos = PointAttribute.Wrap(AttributeType.Position, controlPoints);
mesh.AddAttribute(attrPos);
//add triangle indices
mesh.Indices.AddRange(indices);
//number of the control points, it's required for the encoder to produce correct result.
mesh.NumPoints = 8;
//You can also use following methods to deduplicate the attributes to reduce the file size
//mesh.DeduplicateAttributeValues();
//mesh.DeduplicatePointIds();
var opt = new DracoEncodeOptions();
var drcBytes = Draco.Encode(mesh, opt);
File.WriteAllBytes("output.drc", drcBytes);
FileFormat.Drako는 직관적인 API, 포괄적인 형식 지원, C# 애플리케이션과의 원활한 통합을 제공하여 개발자와 사용자 모두가 Draco 파일을 손쉽게 관리할 수 있도록 지원합니다. draco 파일을 다른 파일로 변환하든, 렌더링을 위해 draco를 로드하든 FileFormat.Drako는 프로세스를 단순화하여 모든 단계에서 최적의 효율성과 품질을 보장합니다.
저희 GitHub 저장소를 탐색하여 이 오픈 소스 API에 기여하고, 개선 사항을 제안하고, 강화하세요. FileFormat.Drako -.NET용