Crea una scena 3D usando C#

Una semplice scena 3D è una rappresentazione grafica tridimensionale di dati geometrici. In questo articolo impareremo come creare una scena 3D usando C# da zero senza dover installare alcun software di modellazione 3D o rendering. Salveremo la scena 3D nel formato di file FBX, un popolare formato di file 3D utilizzato per lo scambio di formati 3D. L’FBX può essere salvato su un disco come file di dati binario o ASCII.

In questo articolo verranno trattati i seguenti argomenti:

  1. API C# per creare scene 3D - Download gratuito
  2. Crea una semplice scena 3D in C#
  3. Leggi la scena 3D usando C#

API C# per creare scene 3D - Download gratuito

Per creare e leggere una scena 3D utilizzeremo l’API Aspose.3D for .NET. Consente di creare e salvare una scena 3D nei formati supportati. Consente inoltre di lavorare con la geometria e la gerarchia delle scene, animare oggetti in una scena e convertire formati di file 3D.

L’API fornisce la classe Scene che è un oggetto di primo livello che contiene i nodi, le geometrie, i materiali, le trame, l’animazione, le pose, le scene secondarie, ecc. Il metodo CreateChildNode(Entity) crea un nuovo nodo figlio con una determinata entità collegata. L’API fornisce il modello di ombreggiatura per LambertMaterial, PhongMaterial e ShaderMaterial. La luce illumina la scena, la classe Light dell’API consente l’aggiunta di un po’ di luce alla scena.

Si prega di scaricare la DLL dell’API o installarla utilizzando NuGet.

PM> Install-Package Aspose.3D

Crea una semplice scena 3D in C#

Possiamo creare una semplice scena 3D seguendo i passaggi indicati di seguito:

  1. Crea un’istanza della classe Scene.
  2. Chiama il metodo CreateChildNode() per aggiungere della geometria, una forma da mostrare sullo schermo, ad esempio Cilindro.
  3. Imposta le proprietà del nodo figlio come Materiale.
  4. Inizializza un oggetto di classe Light.
  5. Chiama il metodo CreateChildNode() per aggiungere l’entità Light.
  6. Infine, salva la scena come FBX usando il metodo Save(). Prende il percorso del file di output e FileFormat.FBX7500ASCII come argomenti.

L’esempio di codice seguente mostra come creare una semplice scena 3D usando C#.

// Questo esempio di codice mostra come creare una semplice scena 3D in un file FBX.
// Inizializza la scena 3D
var scene = new Scene();

// Inizializza l'oggetto Cilindro
var cylinder = new Cylinder();
cylinder.Name = "Cylinder";

// Crea un nodo figlio e aggiungi l'oggetto Cilindro
var node = scene.RootNode.CreateChildNode(cylinder);

// Imposta le proprietà del nodo figlio
var material = new LambertMaterial() { DiffuseColor = new Vector3(Color.LightBlue) };
material.Name = "Lambert";
node.Material = material;

// Aggiungi entità Luce
var light = new Light() { LightType = LightType.Point };
light.Name = "Light";
scene.RootNode.CreateChildNode(light).Transform.Translation = new Vector3(10, 0, 10);

// Percorso del file di output
var output = @"C:\Files\3D\document.fbx";

// Salva il documento della scena 3D
scene.Save(output, FileFormat.FBX7500ASCII);

Leggi la scena 3D usando C#

Possiamo leggere una scena 3D dal documento FBX seguendo i passaggi indicati di seguito:

  1. Crea un’istanza della classe Scene.
  2. Carica un documento 3D esistente usando il metodo Open().
  3. Passa attraverso le proprietà di ChildNodes
  4. Infine, visualizza i valori delle proprietà.

L’esempio di codice seguente mostra come caricare e leggere una scena 3D usando C#.

// Questo esempio di codice mostra come leggere una scena 3D da un file FBX
// Inizializza un oggetto classe Scene
Scene scene = new Scene();

// Carica un documento 3D esistente
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;
        //Elenca tutte le proprietà usando foreach
        foreach (var prop in props)
        {
            Console.WriteLine("{0} = {1}", prop.Name, prop.Value);
        }
        //o usando il ciclo for ordinale
        for (int i = 0; i < props.Count; i++)
        {
            var prop = props[i];
            Console.WriteLine("{0} = {1}", prop.Name, prop.Value);
        }
    }
}

Ottieni una licenza temporanea gratuita

Puoi ottenere una licenza temporanea gratuita per provare Aspose.3D per .NET senza limitazioni di valutazione.

Conclusione

In questo articolo abbiamo imparato a:

  • creare una scena 3D a livello di codice;
  • aggiungere oggetti/entità alla scena 3D come Cilindro, materiale, luce, ecc.;
  • leggere le note e le proprietà del figlio della scena 3D in C#.

Inoltre, puoi saperne di più su Aspose.3D per .NET API usando la documentazione. In caso di ambiguità, non esitare a contattarci sul nostro forum.

Guarda anche