Erstellen Sie 3D-Szenen mit C#

Eine einfache 3D-Szene ist eine dreidimensionale grafische Darstellung geometrischer Daten. In diesem Artikel erfahren Sie, wie Sie eine 3D-Szene mit C# von Grund auf neu erstellen, ohne eine 3D-Modellierungs- oder Rendering-Software installieren zu müssen. Wir speichern die 3D-Szene im Dateiformat FBX, einem beliebten 3D-Dateiformat, das zum Austausch von 3D-Formaten verwendet wird. Die FBX kann entweder als Binär- oder als ASCII-Datendatei auf einer Festplatte gespeichert werden.

Folgende Themen sollen in diesem Artikel behandelt werden:

  1. C#-API zum Erstellen von 3D-Szenen – kostenloser Download
  2. Eine einfache 3D-Szene in C# erstellen
  3. 3D-Szene mit C# lesen

C#-API zum Erstellen von 3D-Szenen – kostenloser Download

Um eine 3D-Szene zu erstellen und zu lesen, verwenden wir die API Aspose.3D for .NET. Es ermöglicht das Erstellen und Speichern einer 3D-Szene in den unterstützten Formaten. Es ermöglicht auch das Arbeiten mit Geometrie und Szenenhierarchie, das Animieren von Objekten in einer Szene und das Konvertieren von 3D-Dateiformaten.

Die API stellt die Scene-Klasse bereit, die ein Objekt der obersten Ebene ist, das die Knoten, Geometrien, Materialien, Texturen, Animationen, Posen, Unterszenen usw. enthält. Die CreateChildNode(Entity)-Methode erstellt einen neuen untergeordneten Knoten mit einer bestimmten angehängten Entität. Die API stellt das Schattierungsmodell für LambertMaterial, PhongMaterial und ShaderMaterial bereit. Das Licht beleuchtet die Szene, die Klasse Light der API ermöglicht das Hinzufügen von etwas Licht zur Szene.

Bitte laden Sie die DLL der API herunter oder installieren Sie sie mit NuGet.

PM> Install-Package Aspose.3D

Erstellen Sie eine einfache 3D-Szene in C#

Wir können eine einfache 3D-Szene erstellen, indem wir die folgenden Schritte ausführen:

  1. Erstellen Sie eine Instanz der Scene-Klasse.
  2. Rufen Sie die Methode CreateChildNode() auf, um Geometrie hinzuzufügen, eine Form, die auf dem Bildschirm angezeigt werden soll, z. B. Zylinder.
  3. Legen Sie untergeordnete Knoteneigenschaften wie Material fest.
  4. Initialisieren Sie ein Light-Klassenobjekt.
  5. Rufen Sie die CreateChildNode()-Methode auf, um eine Light-Entität hinzuzufügen.
  6. Speichern Sie abschließend die Szene als FBX mit der Methode Save(). Als Argumente werden der Pfad der Ausgabedatei und FileFormat.FBX7500ASCII verwendet.

Das folgende Codebeispiel zeigt, wie Sie mit C# eine einfache 3D-Szene erstellen.

// Dieses Codebeispiel zeigt, wie Sie eine einfache 3D-Szene in einer FBX-Datei erstellen.
// 3D-Szene initialisieren
var scene = new Scene();

// Zylinderobjekt initialisieren
var cylinder = new Cylinder();
cylinder.Name = "Cylinder";

// Erstellen Sie einen untergeordneten Knoten und fügen Sie ein Zylinderobjekt hinzu
var node = scene.RootNode.CreateChildNode(cylinder);

// Legen Sie die Eigenschaften des untergeordneten Knotens fest
var material = new LambertMaterial() { DiffuseColor = new Vector3(Color.LightBlue) };
material.Name = "Lambert";
node.Material = material;

// Lichtentität hinzufügen
var light = new Light() { LightType = LightType.Point };
light.Name = "Light";
scene.RootNode.CreateChildNode(light).Transform.Translation = new Vector3(10, 0, 10);

// Pfad der Ausgabedatei
var output = @"C:\Files\3D\document.fbx";

// 3D-Szenendokument speichern
scene.Save(output, FileFormat.FBX7500ASCII);

3D-Szene mit C# lesen

Wir können eine 3D-Szene aus dem FBX-Dokument lesen, indem wir die folgenden Schritte ausführen:

  1. Erstellen Sie eine Instanz der Scene-Klasse.
  2. Laden Sie ein vorhandenes 3D-Dokument mit der Methode Open().
  3. Durchlaufen Sie die ChildNodes-Eigenschaften
  4. Zeigen Sie schließlich Eigenschaftswerte an.

Das folgende Codebeispiel zeigt, wie eine 3D-Szene mit C# geladen und gelesen wird.

// Dieses Codebeispiel zeigt, wie eine 3D-Szene aus einer FBX-Datei gelesen wird
// Initialisieren Sie ein Scene-Klassenobjekt
Scene scene = new Scene();

// Laden Sie ein vorhandenes 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;
        //Listen Sie alle Eigenschaften mit foreach auf
        foreach (var prop in props)
        {
            Console.WriteLine("{0} = {1}", prop.Name, prop.Value);
        }
        //oder ordinale for-Schleife verwenden
        for (int i = 0; i < props.Count; i++)
        {
            var prop = props[i];
            Console.WriteLine("{0} = {1}", prop.Name, prop.Value);
        }
    }
}

Holen Sie sich eine kostenlose temporäre Lizenz

Sie können eine kostenlose temporäre Lizenz erhalten, um Aspose.3D für .NET ohne Evaluierungseinschränkungen zu testen.

Fazit

In diesem Artikel haben wir gelernt, wie man:

  • programmgesteuert eine 3D-Szene erstellen;
  • Hinzufügen von Objekten/Entitäten zur 3D-Szene wie Zylinder, Material, Licht usw.;
  • Lesen Sie untergeordnete Notizen und Eigenschaften von 3D-Szenen in C#.

Außerdem können Sie mithilfe der Dokumentation mehr über Aspose.3D für die .NET-API erfahren. Bei Unklarheiten können Sie uns gerne in unserem Forum kontaktieren.

Siehe auch