.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.
- 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.
.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
DracoMesh
nesnesine 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
DracoMesh
nesnesine yükleyin. DracoMesh.GetNamedAttribute
'u kullanarak konum özelliğini bulun ve içeriğiniSpan<float>
'a çevirin.- OBJ formatını kullanarak kontrol noktalarını çıktıya yazın.
DracoMesh.ReadFace
'i kullanarak her yüzün köşesini okuyunPointAttribute.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
'uDracoMesh
'e ekleyin.- Üçgen indekslerini ekleyin.
- Belirtilen kodlama parametreleriyle bir
DracoEncodeOptions
nesnesi 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