Spara 3D-nät i anpassat binärt format

Introduktion

Välkommen till världen av Aspose.3D för .NET, ett kraftfullt bibliotek som ger utvecklare möjlighet att arbeta med 3D-filer utan ansträngning. I den här handledningen kommer vi att fördjupa oss i processen att spara 3D-nät i ett anpassat binärt format med Aspose.3D för .NET. Den här guiden förutsätter att du har en grundläggande förståelse för C# och är bekant med Aspose.3D-biblioteket.

Förutsättningar

Innan vi går in i handledningen, se till att du har följande på plats:

  • Aspose.3D för .NET: Se till att du har Aspose.3D-biblioteket installerat. Du kan ladda ner den från här .

  • Utvecklingsmiljö: Konfigurera din föredragna C#-utvecklingsmiljö, som Visual Studio.

  • Inmatning av 3D-fil: Ha en 3D-fil (t.ex. test.fbx) som du vill konvertera till ett anpassat binärt format.

Importera namnområden

I din C#-kod, inkludera de nödvändiga namnområdena för att komma åt Aspose.3D-funktionerna:

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;

Steg 1: Ladda en 3D-fil

Ladda din 3D-fil med Aspose.3D. I det här exemplet laddar vi en fil med namnet “test.fbx”:

Scene scene = Scene.FromFile("test.fbx");

Steg 2: Definiera anpassat binärt format

Definiera strukturen för det anpassade binära formatet du vill spara dina 3D-nät i. Exemplet använder en struktur med MeshBlock, Vertex och Triangle som komponenter.

// Minneslayouten för en vertex är
// flyta[3] position;
// flyta[3] normal;
// flyta[3] uv;
var vertexDeclaration = new VertexDeclaration();
vertexDeclaration.AddField(VertexFieldDataType.FVector3, VertexFieldSemantic.Position);
vertexDeclaration.AddField(VertexFieldDataType.FVector3, VertexFieldSemantic.Normal);
vertexDeclaration.AddField(VertexFieldDataType.FVector3, VertexFieldSemantic.UV);

Steg 3: Öppna fil för skrivning

Öppna en binär fil för skrivning, där de konverterade 3D-maskorna kommer att sparas:

using (var writer = new BinaryWriter(new FileStream("Your Output Directory" + "Save3DMeshesInCustomBinaryFormat_out", FileMode.Create, FileAccess.Write)))

Steg 4: Iterera genom noder och enheter

Besök varje nod i 3D-scenen och konvertera mesh-enheter till det anpassade binära formatet. Ignorera lampor, kameror och andra icke-mesh-enheter:

scene.RootNode.Accept(delegate(Node node)
{
    foreach (Entity entity in node.Entities)
    {
        if (!(entity is IMeshConvertible))
            continue;
        // ... (fortsätt bearbeta)
    }
    return true;
});

Steg 5: Konvertera och skriv kontrollpunkter och trianglar

För varje mesh-enhet, konvertera kontrollpunkter till världsrymden och skriv dem till den binära filen tillsammans med triangelindex:

Mesh m = ((IMeshConvertible)entity).ToMesh();

var triMesh = TriMesh.FromMesh(vertexDeclaration, m);


//Nätets minneslayout är:
// float[16] transform_matrix;
// int vertices_count;
// int index_count;
// vertex[vertices_count] vertex;
// ushort[index_count] index;


//skriva omvandla
var transform = node.GlobalTransform.TransformMatrix.ToArray();
for(int i = 0; i < transform.Length; i++)
    writer.Write((float)transform[i]);
//skriv antal hörn/index
writer.Write(triMesh.VerticesCount);
writer.Write(triMesh.IndicesCount);
//skriva hörn och index
writer.Flush();
triMesh.WriteVerticesTo(writer.BaseStream);
triMesh.Write16bIndicesTo(writer.BaseStream);

Slutsats

I den här handledningen täckte vi processen att spara 3D-nät i ett anpassat binärt format med Aspose.3D för .NET. Detta kraftfulla bibliotek ger utvecklare de verktyg som behövs för att manipulera 3D-filer sömlöst. Experimentera med olika format och inställningar för att låsa upp Aspose.3Ds fulla potential i dina projekt.

Vanliga frågor

F1: Kan jag använda Aspose.3D för .NET med andra programmeringsspråk?

S1: Aspose.3D stöder främst .NET-språk, men du kan utforska kompatibilitetsalternativ för andra språk.

F2: Var kan jag hitta ytterligare exempel och resurser?

A2: Den Aspose.3D-forum är ett bra ställe att hitta stöd, exempel och engagera sig i samhället.

F3: Finns det en testversion tillgänglig för Aspose.3D?

A3: Ja, du kan få en gratis provperiod från här .

F4: Hur får jag en tillfällig licens för Aspose.3D?

A4: Besök den här länken för att få en tillfällig licens för teständamål.

F5: Kan jag köpa Aspose.3D för .NET?

A5: Ja, du kan köpa Aspose.3D från köpsidan .