Java için FileFormat.Drako
Google Draco dosyalarını okuma ve yazma sürecini Java API kullanarak basitleştirin
FileFormat.Drako ile sıkıştırılmış DRC dosyalarını zahmetsizce düzenleyin, Java için hafif ve açık kaynak bir API olan FileFormat.Drako, Draco dosyalarının dönüştürülmesini ve otomasyonunu kolaylaştırır
FileFormat.Drako for Java , 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 kaynak Java API'si olan FileFormat.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ı Java API, Draco görüntü işlemlerini basitleştirerek geliştiricilere ve kullanıcılara Draco dosyalarını zahmetsizce yönetebilmeleri için 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.
- Java Uygulamalarıyla Sorunsuz Entegrasyon: FileFormat.Drako'yu Java 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.
- Java Uygulamalarıyla Sorunsuz Entegrasyon: FileFormat.Drako'yu Java uygulamalarınıza zahmetsizce entegre ederek mevcut iş akışlarınızda Draco dosyalarının sorunsuz şekilde işlenmesine olanak tanır.
Java 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 Maven veya Gradle aracılığıyla yükleyin.
- 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 Java'yı kurmanın önerilen yolu maven kullanmaktır. Sorunsuz bir kurulum için lütfen aşağıdaki pom bağımlılık snippet'ini kullanın.
POM Parçacığı
<dependency>
<groupId>dev.fileformat</groupId>
<artifactId>drako</artifactId>
<version>1.4.1</version>
</dependency>
Ayrıca doğrudan GitHub'dan da indirebilirsiniz.Java'da Draco Dosyasını 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.
Files.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 = Files.readAllBytes(Paths.get("cube.drc"));
DracoMesh dm = (DracoMesh)Draco.decode(cube);
Draco dosyasını okuyun ve Java'da 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:
Files.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ğiniFloatSpan
'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
byte[] bytes = Files.readAllBytes(Paths.get("input.drc"));
DracoMesh mesh = (DracoMesh)Draco.decode(bytes);
if (mesh == null)
throw new IllegalStateException("Input file is not a valid draco file.");
PointAttribute attrPos = mesh.getNamedAttribute(AttributeType.POSITION);
FloatSpan points = attrPos.getBuffer().asSpan().asFloatSpan();
try(FileOutputStream fos = new FileOutputStream("output.obj", false)) {
try (OutputStreamWriter writer = new OutputStreamWriter(fos)) {
for (int i = 0; i < points.size(); i += 3) {
writer.write(String.format("v %f %f %f\n", points.get(i), points.get(i + 1), points.get(i + 2)));
}
int[] face = new int[3];
for (int i = 0; i < mesh.getNumFaces(); i++) {
mesh.readFace(i, face);
int a = attrPos.mappedIndex(face[0]) + 1;
int b = attrPos.mappedIndex(face[1]) + 1;
int c = attrPos.mappedIndex(face[2]) + 1;
writer.write(String.format("f %d %d %d\n", a, b, c));
}
}
}
Kontrol noktalarını, üçgenleri Java'da Programlı olarak Draco dosyasına kodlayın
Sağlanan kod, kontrol noktalarından ve üçgenlerden programlı olarak bir Draco dosyasının nasıl oluşturulacağını ve Java kullanılarak bu dosyanın "output.drc" olarak nasıl kaydedileceğini 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 göre 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+)
};
DracoMesh mesh = new DracoMesh();
PointAttribute attrPos = PointAttribute.wrap(AttributeType.POSITION, controlPoints);
mesh.addAttribute(attrPos);
//add triangle indices
mesh.getIndices().addRange(indices);
//number of the control points, it's required for the encoder to produce correct result.
mesh.setNumPoints(8);
//You can also use following methods to deduplicate the attributes to reduce the file size
//mesh.deduplicateAttributeValues();
//mesh.deduplicatePointIds();
DracoEncodeOptions opt = new DracoEncodeOptions();
byte[] drcBytes = Draco.encode(mesh, opt);
Files.write(Paths.get("output.drc"), drcBytes);
FileFormat.Drako, sezgisel bir API, kapsamlı format desteği ve Java 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- Java için