1. Home
  2.   Drako
  3.   .NET için FileFormat.Drako
FileFormat.Drako için .NET

.NET için FileFormat.Drako

 
 

Google Draco dosyalarını okuma ve yazma sürecini .NET API kullanarak basitleştirin

FileFormat.Drako ile sıkıştırılmış DRC dosyalarını zahmetsizce düzenleyin, HEIC dosyalarının dönüştürülmesini ve otomasyonunu kolaylaştıran hafif, açık kaynaklı bir .NET API

FileFormat.Drako for .NET , Draco dosya işleme deneyiminizde devrim yaratır. Bu kapsamlı kılavuzda, Draco dosyalarını zahmetsizce ve kolaylıkla yönetmek için hafif bir açık kaynaklı .NET API olanFileFormat.Drako'dan yararlanmanın işlevselliklerini ve avantajlarını ayrıntılı olarak ele alıyoruz.

Draco, Google tarafından geliştirilen ve 3B geometrik ağların ve nokta bulutlarının sıkıştırılması ve açılması konusunda uzmanlaşmış açık kaynaklı bir sıkıştırma kitaplığıdır. Draco, 3D grafik dosyalarının boyutunu önemli ölçüde azaltarak daha hızlı iletim sağlar ve görsel kaliteyi korurken depolama gereksinimlerini azaltır. Web tabanlı ve mobil platformlar da dahil olmak üzere çeşitli 3D uygulamaları destekleyerek karmaşık 3D verilerin verimli bir şekilde işlenmesini sağlar. Draco, performansı optimize etmek ve kullanıcı deneyimini geliştirmek için oyun, sanal gerçeklik ve 3D görselleştirme gibi sektörlerde yaygın olarak kullanılmaktadır.

FileFormat.Drako, Draco dosyalarını sorunsuz bir şekilde okumak ve yazmak için güçlü bir çözüm olarak ortaya çıkıyor. Bu hafif açık kaynaklı .NET API, Draco görüntü işlemlerini basitleştirerek geliştiricilere ve kullanıcılara Draco dosyalarını zahmetsizce yönetebilecek kullanıcı dostu bir arayüz sunar.

FileFormat.Drako, Açma Lisansı altında mevcuttur.< /p>

Temel Özellikler ve Avantajlar

  • Yüksek Sıkıştırma Oranları: Draco, görsel kalitede gözle görülür bir kayıp olmadan dosya boyutlarını genellikle %90'a kadar azaltarak dosya boyutlarında önemli bir azalma elde eder. Bu, onu bant genişliği ve depolamanın sınırlı olduğu uygulamalar için ideal kılar.
  • Çeşitli Veri Türleri Desteği: Draco, geometri ağları ve nokta bulutları da dahil olmak üzere çok çeşitli 3B veri türleri için sıkıştırmayı destekler. Köşe konumlarını, renkleri, normalleri ve diğer nitelikleri verimli bir şekilde işleyebilir.
  • Hızlı Sıkıştırma ve Sıkıştırmayı Açma: Kitaplık, yüksek hızda sıkıştırma ve sıkıştırmayı açma sunmak üzere tasarlanmıştır; bu da onu web tabanlı 3D görüntüleyiciler ve sanal gerçeklik deneyimleri gibi gerçek zamanlı uygulamalar için uygun hale getirir. li>
  • Açık Kaynak ve Ücretsiz: Lisans ücreti olmadan, her seviyeden geliştirici ve kullanıcı için erişilebilir hale gelen açık kaynaklı bir çözümün avantajlarından yararlanın.
  • C# Uygulamalarıyla Sorunsuz Entegrasyon:FileFormat.Drako'yu C# uygulamalarınıza zahmetsizce entegre ederek mevcut iş akışlarınızda Draco dosyalarının sorunsuz şekilde işlenmesine olanak tanır.

Previous Next

.NET içinFileFormat.Drako'ya Nasıl Başlanır

FileFormat.Drako'yu kullanmaya başlamak hızlı ve kolaydır. Şu adımları uygulamanız yeterlidir:

  • InstallFileFormat.Drako: FileFormat.Drako paketini NuGet Paket Yöneticisi veya .NET CLI aracılığıyla yükleyin.
  • Projenizle Bütünleştirin: C# projenizdeFileFormat.Drako kitaplığına başvurun.
  • Dönüştürmeye Başlayın: Draco dosyalarını okumak ve yazmak içinFileFormat.Drako tarafından sağlanan basit API'yi kullanın.

FileFormat.Drako for .NET'i kurmanın önerilen yolu NuGet kullanmaktır. Sorunsuz bir kurulum için lütfen aşağıdaki komutu kullanın.

NuGet aracılığıyla .NET için InstallFileFormat.Drako

NuGet> Install-PackageFileFormat.Drako 
Ayrıca doğrudan GitHub'dan da indirebilirsiniz.

Draco Dosyasını C# ile DracoMesh'e Okuma

Bu kod pasajı, bir Draco dosyasını verimli bir şekilde yükler ve sonraki işlemler için onu bir DracoMesh örneğinde saklar.

  • File.ReadAllBytes'i kullanarak "cube.drc" adlı DRC dosyasını açın.
  • 3B ağı baytlardan bir DracoMeshnesnesine yükleyin.

Aşağıdaki kod parçasını kopyalayıp ana dosyanıza yapıştırın ve programı çalıştırın.

.drc dosyasını DracoMesh örneğine okuyun

 
    byte[] cube = File.ReadAllBytes("cube.drc");
    DracoMesh dm = (DracoMesh)Draco.Decode(cube);

Draco dosyasını okuyun ve C# dilinde Wavefront OBJ'ye yazın

Aşağıdaki kod, mevcut bir 3D Draco dosyasının nasıl açılacağını ve daha ileri işlemler için obj formatına nasıl yazılacağını gösterir:

  • File.ReadAllBytes'i kullanarak "input.drc" adlı Draco dosya dosyasını açın.
  • Draco ağını baytlardan bir DracoMeshnesnesine yükleyin.
  • DracoMesh.GetNamedAttribute'u kullanarak konum özelliğini bulun ve içeriğini Span<float>'a çevirin.
  • OBJ formatını kullanarak kontrol noktalarını çıktıya yazın.
  • DracoMesh.ReadFace'i kullanarak her yüzün köşesini okuyun
  • PointAttribute.MappedIndex'i kullanarak yüz köşelerini kontrol noktaları dizini ile eşleyin.
  • OBJ formatını kullanarak çıktıya yüzler yazın.

Aşağıdaki kod parçasını kopyalayıp ana dosyanıza yapıştırın ve programı çalıştırın.

.drc dosyasını DracoMesh'e okuyun ve wavefront nesnesine aktarın

 
    //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());

Kontrol noktalarını, üçgenleri Draco dosyasına C# dilinde Programlı olarak kodlayın

Sağlanan kod, kontrol noktalarından ve üçgenlerden programlı olarak bir Draco dosyasının nasıl oluşturulacağını ve C# kullanarak bu dosyayı "output.drc" olarak kaydetmeyi gösterir. Adımların bir dökümünü burada bulabilirsiniz:

  • Bir DracoMeshörneği oluşturun.
  • Kontrol noktalarını PointAttribute'a sarın.
  • PointAttribute'u DracoMesh'e ekleyin.
  • Üçgen indekslerini ekleyin.
  • Belirtilen kodlama parametreleriyle bir DracoEncodeOptionsnesnesi oluşturun.
  • Draco.Encode'u kullanarak ağı baytlara kodlayın.

Aşağıdaki kod parçasını kopyalayıp ana dosyanıza yapıştırın ve programı çalıştırın.

Vektörleri ve yüzleri .drc dosyasına kodlayın

 
  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, sezgisel bir API, kapsamlı format desteği ve C# uygulamalarıyla kusursuz entegrasyon sunarak hem geliştiricilerin hem de kullanıcıların Draco dosyalarını zahmetsizce yönetmesine olanak tanır. İster draco dosyalarını diğer dosyalara dönüştürüyor olun ister oluşturma için draco'yu yüklüyor olun, FileFormat.Drako her adımda optimum verimlilik ve kalite sağlayarak süreci basitleştirir.

Bu Açık Kaynak API'sine katkıda bulunmak, iyileştirmeler önermek ve geliştirmek için GitHub depomuzu keşfedin: FileFormat.Drako -for-.NET

 Türkçe