FileFormat.Drako สำหรับ .NET
ทำให้กระบวนการอ่านและเขียนไฟล์ Google Draco ง่ายขึ้นด้วย API .NET
แก้ไขไฟล์ DRC ที่บีบอัดได้อย่างง่ายดายด้วย FileFormat.Drako ซึ่งเป็น API .NET แบบเปิดที่มีน้ำหนักเบา ช่วยให้การแปลงและการทำงานอัตโนมัติของไฟล์ Draco ง่ายขึ้น
FileFormat.Drako สำหรับ .NET ปฏิวัติประสบการณ์การประมวลผลไฟล์ Draco ของคุณ ในคู่มือที่ครอบคลุมนี้ เราจะเจาะลึกถึงฟังก์ชันและคุณประโยชน์ของการใช้ประโยชน์จาก FileFormat.Drako ซึ่งเป็น .NET API แบบโอเพ่นซอร์สน้ำหนักเบา เพื่อจัดการไฟล์ Draco ได้อย่างง่ายดาย
Draco เป็นไลบรารีการบีบอัดโอเพ่นซอร์สที่พัฒนาโดย Google ซึ่งเชี่ยวชาญด้านการบีบอัดและขยายขนาดตาข่ายเรขาคณิต 3 มิติและพอยต์คลาวด์ ด้วยการลดขนาดไฟล์กราฟิก 3D ลงอย่างมาก Draco จึงทำให้การรับส่งข้อมูลเร็วขึ้นและลดความต้องการในการจัดเก็บข้อมูลในขณะที่ยังคงคุณภาพของภาพไว้ รองรับแอปพลิเคชัน 3D ที่หลากหลาย รวมถึงแพลตฟอร์มบนเว็บและมือถือ ช่วยให้มั่นใจในการจัดการข้อมูล 3D ที่ซับซ้อนได้อย่างมีประสิทธิภาพ Draco ถูกนำมาใช้กันอย่างแพร่หลายในอุตสาหกรรมต่างๆ เช่น เกม ความเป็นจริงเสมือน และการแสดงภาพ 3 มิติ เพื่อเพิ่มประสิทธิภาพและปรับปรุงประสบการณ์ผู้ใช้
FileFormat.Drako กลายเป็นโซลูชั่นอันทรงพลังสำหรับการอ่านและเขียนไฟล์ Draco ได้อย่างราบรื่น โอเพ่นซอร์ส .NET API น้ำหนักเบานี้ทำให้การดำเนินการอิมเมจของ Draco ง่ายขึ้น โดยให้นักพัฒนาและผู้ใช้มีส่วนต่อประสานที่ใช้งานง่ายเพื่อจัดการไฟล์ Draco ได้อย่างง่ายดาย
FileFormat.Drako มีให้บริการภายใต้ Openize License< /พี>
คุณสมบัติหลักและคุณประโยชน์- อัตราส่วนการบีบอัดสูง: Draco สามารถลดขนาดไฟล์ลงได้อย่างมาก โดยมักจะลดขนาดลงได้ถึง 90% โดยไม่สูญเสียคุณภาพของภาพอย่างเห็นได้ชัด ทำให้เหมาะสำหรับแอปพลิเคชันที่มีแบนด์วิธและพื้นที่เก็บข้อมูลจำกัด
- รองรับประเภทข้อมูลต่างๆ: Draco รองรับการบีบอัดข้อมูล 3D หลากหลายประเภท รวมถึงรูปทรงเรขาคณิตและพอยต์คลาวด์ สามารถจัดการตำแหน่งจุดยอด สี บรรทัดฐาน และคุณลักษณะอื่นๆ ได้อย่างมีประสิทธิภาพ
- การบีบอัดและคลายการบีบอัดอย่างรวดเร็ว: ไลบรารีนี้ได้รับการออกแบบเพื่อให้มีการบีบอัดและคลายการบีบอัดด้วยความเร็วสูง ทำให้เหมาะสำหรับแอปพลิเคชันแบบเรียลไทม์ เช่น โปรแกรมดู 3D บนเว็บและประสบการณ์ความเป็นจริงเสมือน
ลี้>- โอเพ่นซอร์สและฟรี: เพลิดเพลินกับประโยชน์ของโซลูชันโอเพ่นซอร์สโดยไม่มีค่าธรรมเนียมใบอนุญาต ทำให้นักพัฒนาและผู้ใช้ทุกระดับสามารถเข้าถึงได้
- การบูรณาการอย่างราบรื่นกับแอปพลิเคชัน C#: รวม FileFormat.Drako เข้ากับแอปพลิเคชัน C# ของคุณได้อย่างง่ายดาย ทำให้สามารถจัดการไฟล์ Draco ได้อย่างราบรื่นภายในเวิร์กโฟลว์ที่มีอยู่ของคุณ
- อัตราส่วนการบีบอัดสูง: Draco สามารถลดขนาดไฟล์ลงได้อย่างมาก โดยมักจะลดขนาดลงได้ถึง 90% โดยไม่สูญเสียคุณภาพของภาพอย่างเห็นได้ชัด ทำให้เหมาะสำหรับแอปพลิเคชันที่มีแบนด์วิธและพื้นที่เก็บข้อมูลจำกัด
- รองรับประเภทข้อมูลต่างๆ: Draco รองรับการบีบอัดข้อมูล 3D หลากหลายประเภท รวมถึงรูปทรงเรขาคณิตและพอยต์คลาวด์ สามารถจัดการตำแหน่งจุดยอด สี บรรทัดฐาน และคุณลักษณะอื่นๆ ได้อย่างมีประสิทธิภาพ
- การบีบอัดและคลายการบีบอัดอย่างรวดเร็ว: ไลบรารีนี้ได้รับการออกแบบเพื่อให้มีการบีบอัดและคลายการบีบอัดด้วยความเร็วสูง ทำให้เหมาะสำหรับแอปพลิเคชันแบบเรียลไทม์ เช่น โปรแกรมดู 3D บนเว็บและประสบการณ์ความเป็นจริงเสมือน ลี้>
- โอเพ่นซอร์สและฟรี: เพลิดเพลินกับประโยชน์ของโซลูชันโอเพ่นซอร์สโดยไม่มีค่าธรรมเนียมใบอนุญาต ทำให้นักพัฒนาและผู้ใช้ทุกระดับสามารถเข้าถึงได้
- การบูรณาการอย่างราบรื่นกับแอปพลิเคชัน C#: รวม FileFormat.Drako เข้ากับแอปพลิเคชัน C# ของคุณได้อย่างง่ายดาย ทำให้สามารถจัดการไฟล์ Draco ได้อย่างราบรื่นภายในเวิร์กโฟลว์ที่มีอยู่ของคุณ
วิธีเริ่มต้นใช้งาน FileFormat.Drako สำหรับ .NET
การเริ่มต้นใช้งาน FileFormat.Drako นั้นง่ายและรวดเร็ว เพียงทำตามขั้นตอนเหล่านี้:
- InstallFileFormat.Drako: ติดตั้งแพ็คเกจ FileFormat.Drako ผ่าน NuGet Package Manager หรือ .NET CLI
- ผสานรวมกับโครงการของคุณ: อ้างอิงไลบรารี FileFormat.Drako ในโปรเจ็กต์ C# ของคุณ
- เริ่มการแปลง: ใช้ API แบบง่ายที่จัดทำโดยFileFormat.Drako เพื่ออ่านและเขียนไฟล์ Draco
วิธีที่แนะนำในการติดตั้งFileFormat.Drako สำหรับ .NET คือการใช้ NuGet โปรดใช้คำสั่งต่อไปนี้เพื่อการติดตั้งที่ราบรื่น
ติดตั้งFileFormat.Drako สำหรับ .NET ผ่าน NuGet
NuGet> Install-PackageFileFormat.Drako
คุณยังสามารถดาวน์โหลดได้โดยตรงจาก GitHubอ่านไฟล์ Draco ลงใน DracoMesh ใน C#
ข้อมูลโค้ดนี้จะโหลดไฟล์ Draco ได้อย่างมีประสิทธิภาพ และจัดเก็บไว้ในอินสแตนซ์ DracoMesh สำหรับการดำเนินการในภายหลัง
- เปิดไฟล์ DRC ชื่อ "cube.drc" โดยใช้
File.ReadAllBytes
- โหลด 3D mesh จากไบต์ลงในวัตถุ
DracoMesh
คัดลอกและวางข้อมูลโค้ดด้านล่างลงในไฟล์หลักของคุณแล้วรันโปรแกรม
อ่านไฟล์ .drc ไปยังอินสแตนซ์ DracoMesh
byte[] cube = File.ReadAllBytes("cube.drc");
DracoMesh dm = (DracoMesh)Draco.Decode(cube);
อ่านไฟล์ Draco และเขียนไปยัง Wavefront OBJ ใน C#
โค้ดต่อไปนี้แสดงวิธีการเปิดไฟล์ 3D Draco ที่มีอยู่ และเขียนเป็นรูปแบบ obj เพื่อการประมวลผลเพิ่มเติม:
- เปิดไฟล์ไฟล์ Draco ชื่อ "input.drc" โดยใช้
File.ReadAllBytes
- โหลด Draco mesh จากไบต์ลงในอ็อบเจ็กต์
DracoMesh
- ค้นหาแอตทริบิวต์ตำแหน่งโดยใช้
DracoMesh.GetNamedAttribute
และเปลี่ยนเนื้อหาเป็นSpan<float>
. - เขียนจุดควบคุมไปยังเอาต์พุตโดยใช้รูปแบบของ OBJ
- อ่านแต่ละมุมของใบหน้าโดยใช้
DracoMesh.ReadFace
- แมปมุมใบหน้ากับดัชนีของจุดควบคุมโดยใช้
PointAttribute.MappedIndex
- เขียนใบหน้าลงในเอาต์พุตโดยใช้รูปแบบของ OBJ
คัดลอกและวางข้อมูลโค้ดด้านล่างลงในไฟล์หลักของคุณแล้วรันโปรแกรม
อ่านไฟล์ .drc ไปยัง DracoMesh และส่งออกไปยัง wavefront 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());
เข้ารหัสจุดควบคุม สามเหลี่ยมเป็นไฟล์ Draco โดยทางโปรแกรมใน C#
โค้ดที่ให้มาสาธิตวิธีการสร้างไฟล์ Draco โดยทางโปรแกรมจากจุดควบคุมและสามเหลี่ยม และบันทึกเป็น "output.drc" โดยใช้ C# ต่อไปนี้เป็นรายละเอียดขั้นตอนต่างๆ:
- สร้างอินสแตนซ์
DracoMesh
- ตัดจุดควบคุมไปที่
PointAttribute
- เพิ่ม
PointAttribute
ให้กับDracoMesh
. - เพิ่มดัชนีสามเหลี่ยม
- สร้างออบเจ็กต์
DracoEncodeOptions
ด้วยพารามิเตอร์การเข้ารหัสที่ระบุ - เข้ารหัส mesh เป็นไบต์โดยใช้
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 ของเราเพื่อสนับสนุน แนะนำการปรับปรุง และปรับปรุง Open Source API นี้: FileFormat.Drako -สำหรับ-.NET