1. Home
  2.   Drako
  3.   FileFormat.Drako untuk .NET
FileFormat.Drako untuk .NET

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.

Previous Next

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.GetNamedAttributedan ubah kontennya menjadi Span<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 PointAttributeke DracoMesh.
  • Tambahkan indeks segitiga.
  • Buat objek DracoEncodeOptionsdengan 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

 Indonesian