FileFormat.Drako untuk .NET
Permudah Proses Membaca dan Menulis file Google Draco Menggunakan API .NET
Dengan mudah mengedit file DRC terkompresi menggunakan FileFormat.Drako, API .NET ringan dan sumber terbuka, yang menyederhanakan konversi dan otomatisasi file Draco
FileFormat.Drako untuk .NET merevolusi pengalaman pemrosesan file Draco Anda. Dalam panduan komprehensif ini, kami mendalami fungsi dan manfaat memanfaatkanFileFormat.Drako, .NET API sumber terbuka yang ringan, untuk menangani file Draco dengan mudah.
Draco adalah pustaka kompresi sumber terbuka yang dikembangkan oleh Google yang berspesialisasi dalam mengompresi dan mendekompresi jerat geometris 3D dan awan titik. Dengan mengurangi ukuran file grafik 3D secara signifikan, Draco memungkinkan transmisi lebih cepat dan mengurangi kebutuhan penyimpanan dengan tetap menjaga kualitas visual. Ini mendukung berbagai aplikasi 3D, termasuk platform berbasis web dan seluler, memastikan penanganan data 3D yang kompleks secara efisien. Draco banyak digunakan dalam industri seperti game, realitas virtual, dan visualisasi 3D untuk mengoptimalkan kinerja dan meningkatkan pengalaman pengguna.
FileFormat.Drako muncul sebagai solusi ampuh untuk membaca dan menulis file Draco dengan lancar. .NET API sumber terbuka yang ringan ini menyederhanakan pengoperasian gambar Draco, menawarkan antarmuka yang ramah pengguna kepada pengembang dan pengguna untuk menangani file Draco dengan mudah.
FileFormat.Drako tersedia di bawah Lisensi Openize.< /p>
Fitur dan Manfaat Utama- Rasio Kompresi Tinggi: Draco mencapai pengurangan ukuran file secara signifikan, sering kali menguranginya hingga 90% tanpa kehilangan kualitas visual yang nyata. Hal ini menjadikannya ideal untuk aplikasi yang bandwidth dan penyimpanannya terbatas.
- Dukungan untuk Berbagai Tipe Data: Draco mendukung kompresi untuk berbagai tipe data 3D, termasuk mesh geometri dan point cloud. Ia dapat menangani posisi titik, warna, normal, dan atribut lainnya secara efisien.
- Kompresi dan Dekompresi Cepat: Pustaka dirancang untuk menawarkan kompresi dan dekompresi berkecepatan tinggi, sehingga cocok untuk aplikasi waktu nyata seperti pemirsa 3D berbasis web dan pengalaman realitas virtual.
- Sumber Terbuka dan Gratis: Nikmati manfaat solusi sumber terbuka tanpa biaya lisensi, sehingga dapat diakses oleh pengembang dan pengguna di semua tingkatan.
- Integrasi Sempurna dengan Aplikasi C#: IntegrasikanFileFormat.Drako dengan mudah ke dalam aplikasi C# Anda, memungkinkan penanganan file Draco yang lancar dalam alur kerja Anda yang ada.
- Rasio Kompresi Tinggi: Draco mencapai pengurangan ukuran file secara signifikan, sering kali menguranginya hingga 90% tanpa kehilangan kualitas visual yang nyata. Hal ini menjadikannya ideal untuk aplikasi yang bandwidth dan penyimpanannya terbatas.
- Dukungan untuk Berbagai Tipe Data: Draco mendukung kompresi untuk berbagai tipe data 3D, termasuk mesh geometri dan point cloud. Ia dapat menangani posisi titik, warna, normal, dan atribut lainnya secara efisien.
- Kompresi dan Dekompresi Cepat: Pustaka dirancang untuk menawarkan kompresi dan dekompresi berkecepatan tinggi, sehingga cocok untuk aplikasi waktu nyata seperti pemirsa 3D berbasis web dan pengalaman realitas virtual.
- Sumber Terbuka dan Gratis: Nikmati manfaat solusi sumber terbuka tanpa biaya lisensi, sehingga dapat diakses oleh pengembang dan pengguna di semua tingkatan.
- Integrasi Sempurna dengan Aplikasi C#: IntegrasikanFileFormat.Drako dengan mudah ke dalam aplikasi C# Anda, memungkinkan penanganan file Draco yang lancar dalam alur kerja Anda yang ada.
Cara Memulai FileFormat.Drako untuk .NET
Memulai FileFormat.Drako cepat dan mudah. Cukup ikuti langkah-langkah berikut:
- InstallFileFormat.Drako: Instal paket FileFormat.Drako melalui NuGet Package Manager atau .NET CLI.
- Integrasikan dengan Proyek Anda: Referensikan pustaka FileFormat.Drako di proyek C# Anda.
- Mulai Konversi: Manfaatkan API sederhana yang disediakan olehFileFormat.Drako untuk membaca dan menulis file Draco.
Cara yang disarankan untuk menginstalFileFormat.Drako untuk .NET adalah menggunakan NuGet. Silakan gunakan perintah berikut untuk kelancaran instalasi.
InstalFileFormat.Drako untuk .NET melalui NuGet
NuGet> Install-PackageFileFormat.Drako
Anda juga dapat mendownloadnya langsung dari GitHub.Baca File Draco ke DracoMesh di C#
Cuplikan kode ini secara efisien memuat file Draco, dan menyimpannya dalam instance DracoMesh untuk operasi selanjutnya.
- Buka file DRC bernama "cube.drc" menggunakan
File.ReadAllBytes
. - Muat mesh 3D dari byte ke dalam objek
DracoMesh
.
Salin dan tempel cuplikan kode di bawah ini ke file utama Anda dan jalankan programnya.
Baca file .drc ke instance DracoMesh
byte[] cube = File.ReadAllBytes("cube.drc");
DracoMesh dm = (DracoMesh)Draco.Decode(cube);
Baca file Draco dan tulis ke Wavefront OBJ di C#
Kode berikut mengilustrasikan cara membuka file Draco 3D yang ada, dan menulis ke format obj untuk diproses lebih lanjut:
- Buka file Draco dengan nama "input.drc" menggunakan
File.ReadAllBytes
. - Muat mesh Draco dari byte ke dalam objek
DracoMesh
. - Temukan atribut posisi menggunakan
DracoMesh.GetNamedAttribute
dan ubah kontennya menjadiSpan<float>
. - Tulis titik kontrol ke output menggunakan format OBJ.
- Baca setiap sudut muka menggunakan
DracoMesh.ReadFace
- Petakan sudut muka ke indeks titik kontrol menggunakan
PointAttribute.MappedIndex
. - Tulis wajah ke keluaran menggunakan format OBJ.
Salin dan tempel cuplikan kode di bawah ini ke file utama Anda dan jalankan programnya.
Baca file .drc ke DracoMesh dan ekspor ke objek wavefront
//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());
Encode titik kontrol, segitiga ke file Draco Secara terprogram dalam C#
Kode yang disediakan menunjukkan cara membuat file Draco secara terprogram dari titik kontrol dan segitiga, dan menyimpannya sebagai "output.drc" menggunakan C#. Berikut rincian langkah-langkahnya:
- Buat instance
DracoMesh
. - Gabungkan titik kontrol ke
PointAttribute
. - Tambahkan
PointAttribute
keDracoMesh
. - Tambahkan indeks segitiga.
- Buat objek
DracoEncodeOptions
dengan parameter pengkodean yang ditentukan. - Enkode mesh ke byte menggunakan
Draco.Encode
.
Salin dan tempel cuplikan kode di bawah ini ke file utama Anda dan jalankan programnya.
Encode vektor dan wajah ke file .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 menawarkan API intuitif, dukungan format komprehensif, dan integrasi tanpa batas dengan aplikasi C#, memberdayakan pengembang dan pengguna untuk mengelola file Draco dengan mudah. Baik Anda mengonversi file draco ke file lain, atau memuat draco untuk rendering,FileFormat.Drako menyederhanakan prosesnya, memastikan efisiensi dan kualitas optimal di setiap langkah.
Jelajahi repositori GitHub kami untuk berkontribusi, menyarankan perbaikan, dan menyempurnakan API Sumber Terbuka ini: FileFormat.Drako -untuk-.NET