Utwórz scenę 3D za pomocą C#

Prosta scena 3D to trójwymiarowa graficzna reprezentacja danych geometrycznych. W tym artykule dowiemy się, jak stworzyć od podstaw scenę 3D przy użyciu języka C# bez konieczności instalowania oprogramowania do modelowania lub renderowania 3D. Scenę 3D zapiszemy w formacie pliku FBX, popularnym formacie plików 3D używanym do wymiany formatów 3D. FBX można zapisać na dysku jako plik danych binarnych lub ASCII.

W tym artykule zostaną omówione następujące tematy:

  1. C# API do tworzenia scen 3D – bezpłatne pobieranie
  2. Utwórz prostą scenę 3D w C#
  3. Odczyt sceny 3D przy użyciu C#

Interfejs API języka C# do tworzenia scen 3D — bezpłatne pobieranie

Aby utworzyć i odczytać scenę 3D, użyjemy API Aspose.3D for .NET. Pozwala tworzyć i zapisywać sceny 3D w obsługiwanych formatach. Umożliwia także pracę z geometrią i hierarchią scen, animowanie obiektów w scenie oraz konwersję formatów plików 3D.

API udostępnia klasę Scene, która jest obiektem najwyższego poziomu, który zawiera węzły, geometrie, materiały, tekstury, animacje, pozy, sceny podrzędne itp. Metoda CreateChildNode(Entity) tworzy nowy węzeł potomny z dołączoną daną jednostką. API zapewnia model cieniowania dla LambertMaterial, PhongMaterial i ShaderMaterial. Światło oświetla scenę, klasa Light API umożliwia dodanie światła do sceny.

Proszę pobrać bibliotekę DLL interfejsu API lub zainstalować ją za pomocą NuGet.

PM> Install-Package Aspose.3D

Stwórz prostą scenę 3D w C#

Możemy stworzyć prostą scenę 3D, wykonując poniższe czynności:

  1. Utwórz instancję klasy Scene.
  2. Wywołaj metodę CreateChildNode(), aby dodać geometrię, kształt do wyświetlenia na ekranie, np. Cylinder.
  3. Ustaw właściwości węzła podrzędnego, takie jak Materiał.
  4. Zainicjuj obiekt klasy Light.
  5. Wywołaj metodę CreateChildNode(), aby dodać jednostkę Light.
  6. Na koniec zapisz scenę jako FBX za pomocą metody Save(). Pobiera ścieżkę pliku wyjściowego i FileFormat.FBX7500ASCII jako argumenty.

Poniższy przykładowy kod pokazuje, jak utworzyć prostą scenę 3D przy użyciu języka C#.

// Ten przykład kodu pokazuje, jak utworzyć prostą scenę 3D w pliku FBX.
// Zainicjuj scenę 3D
var scene = new Scene();

// Zainicjuj obiekt Cylinder
var cylinder = new Cylinder();
cylinder.Name = "Cylinder";

// Utwórz węzeł potomny i dodaj obiekt Cylinder
var node = scene.RootNode.CreateChildNode(cylinder);

// Ustaw właściwości węzła podrzędnego
var material = new LambertMaterial() { DiffuseColor = new Vector3(Color.LightBlue) };
material.Name = "Lambert";
node.Material = material;

// Dodaj lekką jednostkę
var light = new Light() { LightType = LightType.Point };
light.Name = "Light";
scene.RootNode.CreateChildNode(light).Transform.Translation = new Vector3(10, 0, 10);

// Ścieżka pliku wyjściowego
var output = @"C:\Files\3D\document.fbx";

// Zapisz dokument sceny 3D
scene.Save(output, FileFormat.FBX7500ASCII);

Odczytywanie sceny 3D przy użyciu języka C#

Możemy odczytać scenę 3D z dokumentu FBX, wykonując poniższe czynności:

  1. Utwórz instancję klasy Scene.
  2. Załaduj istniejący dokument 3D za pomocą metody Open().
  3. Zapętlaj właściwości ChildNodes
  4. Na koniec wyświetl wartości właściwości.

Poniższy przykładowy kod pokazuje, jak załadować i odczytać scenę 3D przy użyciu języka C#.

// Ten przykład kodu pokazuje, jak odczytać scenę 3D z pliku FBX
// Zainicjuj obiekt klasy Scene
Scene scene = new Scene();

// Załaduj istniejący dokument 3D
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;
        //Wyświetl listę wszystkich właściwości za pomocą funkcji fore
        foreach (var prop in props)
        {
            Console.WriteLine("{0} = {1}", prop.Name, prop.Value);
        }
        //lub używając pętli porządkowej for
       for (int i = 0; i < props.Count; i++)
        {
            var prop = props[i];
            Console.WriteLine("{0} = {1}", prop.Name, prop.Value);
        }
    }
}

Uzyskaj bezpłatną tymczasową licencję

Możesz uzyskać bezpłatną tymczasową licencję, aby wypróbować Aspose.3D for .NET bez ograniczeń ewaluacyjnych.

Wniosek

W tym artykule dowiedzieliśmy się, jak:

  • programowo stworzyć scenę 3D;
  • dodawać obiekty/podmioty do sceny 3D, takie jak Cylinder, materiał, światło itp.;
  • odczytywanie notatek i właściwości elementów potomnych sceny 3D w języku C#.

Poza tym możesz dowiedzieć się więcej o Aspose.3D for .NET API korzystając z dokumentacji. W przypadku jakichkolwiek niejasności prosimy o kontakt na naszym forum.

Zobacz też