3B Meshleri Özel İkili Formatta Kaydetme
giriiş
Geliştiricilerin 3D dosyalarla zahmetsizce çalışmasını sağlayan güçlü bir kütüphane olan Aspose.3D for .NET dünyasına hoş geldiniz. Bu eğitimde, Aspose.3D for .NET kullanarak 3D mesh’leri özel bir ikili formatta kaydetme sürecini inceleyeceğiz. Bu kılavuz, temel C# bilgisine sahip olduğunuzu ve Aspose.3D kütüphanesine aşina olduğunuzu varsaymaktadır.
Önkoşullar
Eğiticiye geçmeden önce aşağıdakilerin mevcut olduğundan emin olun:
Aspose.3D for .NET: Aspose.3D kütüphanesinin kurulu olduğundan emin olun. Şuradan indirebilirsiniz Burada .
Geliştirme Ortamı: Visual Studio gibi tercih ettiğiniz C# geliştirme ortamını kurun.
3D Dosya Girin: Özel bir ikili formata dönüştürmek istediğiniz bir 3D dosyanız (örn. test.fbx) olsun.
Ad Alanlarını İçe Aktar
Aspose.3D işlevlerine erişmek için C# kodunuza gerekli ad alanlarını ekleyin:
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
using Aspose.ThreeD.Utilities;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
1. Adım: 3D Dosya Yükleyin
Aspose.3D’yi kullanarak 3D dosyanızı yükleyin. Bu örnekte “test.fbx” adlı bir dosya yüklüyoruz:
Scene scene = Scene.FromFile("test.fbx");
Adım 2: Özel İkili Formatı Tanımlayın
3B kafeslerinizi kaydetmek istediğiniz özel ikili formatın yapısını tanımlayın. Örnekte, bileşenler olarak MeshBlock, Vertex ve Triangle içeren bir yapı kullanılıyor.
// Bir köşenin hafıza düzeni
// kayan nokta[3] konumu;
// kayan nokta[3] normal;
// kayan nokta[3] uv;
var vertexDeclaration = new VertexDeclaration();
vertexDeclaration.AddField(VertexFieldDataType.FVector3, VertexFieldSemantic.Position);
vertexDeclaration.AddField(VertexFieldDataType.FVector3, VertexFieldSemantic.Normal);
vertexDeclaration.AddField(VertexFieldDataType.FVector3, VertexFieldSemantic.UV);
Adım 3: Dosyayı Yazmak İçin Açın
Dönüştürülen 3B ağların kaydedileceği yazma için bir ikili dosya açın:
using (var writer = new BinaryWriter(new FileStream("Your Output Directory" + "Save3DMeshesInCustomBinaryFormat_out", FileMode.Create, FileAccess.Write)))
Adım 4: Düğümler ve Varlıklar Üzerinden Yineleme Yapın
3B sahnedeki her düğümü ziyaret edin ve ağ varlıklarını özel ikili formata dönüştürün. Işıkları, kameraları ve diğer ağ dışı varlıkları göz ardı edin:
scene.RootNode.Accept(delegate(Node node)
{
foreach (Entity entity in node.Entities)
{
if (!(entity is IMeshConvertible))
continue;
// ... (işlemeye devam et)
}
return true;
});
Adım 5: Kontrol Noktalarını ve Üçgenleri Dönüştürün ve Yazın
Her mesh varlığı için, kontrol noktalarını dünya uzayına dönüştürün ve bunları üçgen indeksleriyle birlikte ikili dosyaya yazın:
Mesh m = ((IMeshConvertible)entity).ToMesh();
var triMesh = TriMesh.FromMesh(vertexDeclaration, m);
//Ağın bellek düzeni şöyledir:
// float[16] transform_matrix;
// int vertices_count;
// int indeks_sayısı;
// vertex[vertices_count] köşe noktaları;
// ushort[indices_count] endeksleri;
//dönüşümü yaz
var transform = node.GlobalTransform.TransformMatrix.ToArray();
for(int i = 0; i < transform.Length; i++)
writer.Write((float)transform[i]);
//köşe/indeks sayısını yaz
writer.Write(triMesh.VerticesCount);
writer.Write(triMesh.IndicesCount);
//köşeleri ve indeksleri yaz
writer.Flush();
triMesh.WriteVerticesTo(writer.BaseStream);
triMesh.Write16bIndicesTo(writer.BaseStream);
Çözüm
Bu eğitimde Aspose.3D for .NET kullanarak 3D mesh’leri özel bir ikili formatta kaydetme sürecini ele aldık. Bu güçlü kitaplık, geliştiricilere 3D dosyaları sorunsuz bir şekilde işlemek için gereken araçları sağlar. Projelerinizde Aspose.3D’nin tüm potansiyelini açığa çıkarmak için farklı format ve ayarlarla denemeler yapın.
SSS
S1: Aspose.3D for .NET’i diğer programlama dilleriyle kullanabilir miyim?
Cevap1: Aspose.3D öncelikli olarak .NET dillerini destekler ancak diğer diller için uyumluluk seçeneklerini de inceleyebilirsiniz.
S2: Ek örnekleri ve kaynakları nerede bulabilirim?
A2: Aspose.3D forumu destek, örnekler bulmak ve toplulukla etkileşim kurmak için harika bir yerdir.
S3: Aspose.3D’nin deneme sürümü mevcut mu?
C3: Evet, şu adresten ücretsiz deneme alabilirsiniz: Burada .
S4: Aspose.3D için geçici lisansı nasıl edinebilirim?
A4: Ziyaret edin bu bağlantı Test amaçlı geçici lisans almak için.
S5: Aspose.3D for .NET’i satın alabilir miyim?
Cevap5: Evet, Aspose.3D’yi şu adresten satın alabilirsiniz: satın alma sayfası .