Skapa 3D-scen i C#

En enkel 3D-scen är en tredimensionell grafisk representation av geometriska data. I den här artikeln kommer vi att lära oss hur du skapar en 3D-scen med C# från början utan att behöva installera någon 3D-modellering eller renderingsprogramvara. Vi kommer att spara 3D-scenen i filformatet FBX, ett populärt 3D-filformat som används för att utbyta 3D-format. FBX kan sparas på en disk antingen som en binär eller ASCII-datafil.

Följande ämnen ska behandlas i den här artikeln:

  1. C# 3D API för att skapa 3D-scen – gratis nedladdning
  2. Skapa en enkel 3D-scen i C#
  3. Läs 3D-scen med C#

C# 3D API för att skapa 3D-scen - gratis nedladdning

För att skapa och läsa en 3D-scen kommer vi att använda Aspose.3D for .NET API. Det gör det möjligt att skapa och spara en 3D-scen i de format som stöds. Det gör det också möjligt att arbeta med geometri och scenhierarki, animera objekt i en scen och konvertering av 3D-filformat.

API tillhandahåller klassen Scene som är ett objekt på toppnivå som innehåller noder, geometrier, material, texturer, animering, poser, underscener, etc. Metoden CreateChildNode(Entity) skapar en ny underordnad nod med en given enhet kopplad. API:n tillhandahåller skuggningsmodellen för LambertMaterial, PhongMaterial och ShaderMaterial. Ljuset lyser upp scenen, klassen Light i API:et gör det möjligt att lägga till lite ljus till scenen.

Vänligen antingen ladda ned DLL för API:t eller installera den med NuGet.

PM> Install-Package Aspose.3D

Skapa en enkel 3D-scen med C#

Vi kan skapa en enkel 3D-scen genom att följa stegen nedan:

  1. Skapa en instans av klassen Scene.
  2. Anropa metoden CreateChildNode() för att lägga till lite geometri, en form som ska visas på skärmen, t.ex. Cylinder.
  3. Ställ in underordnade nodegenskaper som Material.
  4. Initiera ett Light-klassobjekt.
  5. Anropa metoden CreateChildNode() för att lägga till Light-entitet.
  6. Slutligen, spara scenen som FBX med hjälp av metoden Save(). Den tar utdatafilens sökväg och FileFormat.FBX7500ASCII som argument.

Följande kodexempel visar hur man skapar en enkel 3D-scen med C#.

// Detta kodexempel visar hur man skapar en enkel 3D-scen i FBX-fil.
// Initiera 3D-scen
var scene = new Scene();

// Initiera cylinderobjekt
var cylinder = new Cylinder();
cylinder.Name = "Cylinder";

// Skapa en underordnad nod och lägg till Cylinder-objekt
var node = scene.RootNode.CreateChildNode(cylinder);

// Ställ in underordnade nodegenskaper
var material = new LambertMaterial() { DiffuseColor = new Vector3(Color.LightBlue) };
material.Name = "Lambert";
node.Material = material;

// Lägg till Light-enhet
var light = new Light() { LightType = LightType.Point };
light.Name = "Light";
scene.RootNode.CreateChildNode(light).Transform.Translation = new Vector3(10, 0, 10);

// Utdatafilens sökväg
var output = @"C:\Files\3D\document.fbx";

// Spara 3D-scendokument
scene.Save(output, FileFormat.FBX7500ASCII);

Läs 3D-scen med C#

Vi kan läsa en 3D-scen från FBX-dokumentet genom att följa stegen nedan:

  1. Skapa en instans av klassen Scene.
  2. Ladda ett befintligt 3D-dokument med Open()-metoden.
  3. Gå igenom ChildNodes egenskaper
  4. Till sist, visa egenskapsvärden.

Följande kodexempel visar hur man laddar och läser en 3D-scen med C#.

// Detta kodexempel visar hur man läser en 3D-scen från FBX-fil
// Initiera ett Scene-klassobjekt
Scene scene = new Scene();

// Ladda ett befintligt 3D-dokument
scene.Open(@"C:\Files\3D\document.fbx");

foreach(var node in scene.RootNode.ChildNodes)
{
    var entity = node.Entity;
    Console.WriteLine("{0}", entity.Name); 

    if (node.Material != null)
    {
        Material material = node.Material;
        Console.WriteLine("{0}", material.Name);

        PropertyCollection props = material.Properties;
        //Lista alla egenskaper med hjälp av foreach
        foreach (var prop in props)
        {
            Console.WriteLine("{0} = {1}", prop.Name, prop.Value);
        }
        //eller använda ordningsföljd för slinga
       for (int i = 0; i < props.Count; i++)
        {
            var prop = props[i];
            Console.WriteLine("{0} = {1}", prop.Name, prop.Value);
        }
    }
}

Få gratis tillfällig licens

Du kan få en gratis tillfällig licens för att prova Aspose.3D för .NET utan utvärderingsbegränsningar.

Slutsats

I den här artikeln har vi lärt oss hur man:

  • skapa en 3D-scen programmatiskt;
  • lägga till objekt/enheter till 3D-scenen såsom cylinder, material, ljus, etc.;
  • läs 3D-scenens anteckningar och egenskaper i C#.

Förutom att skapa och läsa 3D-scen i C# kan du lära dig mer om Aspose.3D för .NET API med hjälp av dokumentationen. I händelse av oklarheter är du välkommen att kontakta oss på vårt gratis supportforum.

Se även