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ı .