Создание 3D-сцены с помощью C#

Простая 3D-сцена представляет собой трехмерное графическое представление геометрических данных. В этой статье мы узнаем, как создать 3D-сцену с помощью C# с нуля без необходимости установки какого-либо программного обеспечения для 3D-моделирования или рендеринга. Мы сохраним 3D-сцену в формате файла FBX, популярном формате 3D-файла, используемом для обмена 3D-форматами. FBX можно сохранить на диск как двоичный файл или файл данных ASCII.

В этой статье должны быть раскрыты следующие темы:

  1. C# API для создания 3D-сцены — скачать бесплатно
  2. Создание простой 3D-сцены на C#
  3. Читать 3D-сцену с помощью C#

C# API для создания 3D-сцены — скачать бесплатно

Для создания и чтения 3D-сцены мы будем использовать API Aspose.3D для .NET. Это позволяет создавать и сохранять 3D-сцены в поддерживаемых форматах. Он также позволяет работать с геометрией и иерархией сцен, анимировать объекты в сцене и преобразовывать форматы 3D-файлов.

API предоставляет класс Scene, который представляет собой объект верхнего уровня, содержащий узлы, геометрию, материалы, текстуры, анимацию, позы, подсцены и т. д. Метод CreateChildNode(Entity) создает новый дочерний узел с прикрепленным данным объектом. API предоставляет модель затенения для LambertMaterial, PhongMaterial и ShaderMaterial. Свет освещает сцену, класс API Light позволяет добавить немного света в сцену.

Пожалуйста, либо загрузите DLL API, либо установите его с помощью NuGet.

PM> Install-Package Aspose.3D

Создание простой 3D-сцены на C#

Мы можем создать простую 3D-сцену, выполнив следующие шаги:

  1. Создайте экземпляр класса Scene.
  2. Вызовите метод CreateChildNode(), чтобы добавить некоторую геометрию, форму для отображения на экране, например, цилиндр.
  3. Установите свойства дочернего узла, такие как Материал.
  4. Инициализируйте объект класса Light.
  5. Вызовите метод CreateChildNode(), чтобы добавить объект Light.
  6. Наконец, сохраните сцену как FBX, используя метод Save(). В качестве аргументов он принимает путь к выходному файлу и FileFormat.FBX7500ASCII.

В следующем примере кода показано, как создать простую трехмерную сцену с помощью C#.

// В этом примере кода показано, как создать простую трехмерную сцену в файле FBX.
// Инициализировать 3D-сцену
var scene = new Scene();

// Инициализировать объект цилиндра
var cylinder = new Cylinder();
cylinder.Name = "Cylinder";

// Создайте дочерний узел и добавьте объект Cylinder.
var node = scene.RootNode.CreateChildNode(cylinder);

// Установить свойства дочернего узла
var material = new LambertMaterial() { DiffuseColor = new Vector3(Color.LightBlue) };
material.Name = "Lambert";
node.Material = material;

// Добавить световой объект
var light = new Light() { LightType = LightType.Point };
light.Name = "Light";
scene.RootNode.CreateChildNode(light).Transform.Translation = new Vector3(10, 0, 10);

// Путь к выходному файлу
var output = @"C:\Files\3D\document.fbx";

// Сохранить документ 3D-сцены
scene.Save(output, FileFormat.FBX7500ASCII);

Чтение 3D-сцены с помощью C#

Мы можем прочитать 3D-сцену из документа FBX, выполнив следующие шаги:

  1. Создайте экземпляр класса Scene.
  2. Загрузите существующий 3D-документ с помощью метода Open().
  3. Цикл по свойствам ChildNodes
  4. Наконец, отобразите значения свойств.

В следующем примере кода показано, как загрузить и прочитать трехмерную сцену с помощью C#.

// В этом примере кода показано, как прочитать 3D-сцену из файла FBX.
// Инициализировать объект класса сцены
Scene scene = new Scene();

// Загрузите существующий 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;
        //Перечислите все свойства, используя foreach
        foreach (var prop in props)
        {
            Console.WriteLine("{0} = {1}", prop.Name, prop.Value);
        }
        //или используя порядковый номер цикла
        for (int i = 0; i < props.Count; i++)
        {
            var prop = props[i];
            Console.WriteLine("{0} = {1}", prop.Name, prop.Value);
        }
    }
}

Получить бесплатную временную лицензию

Вы можете получить бесплатную временную лицензию, чтобы попробовать Aspose.3D для .NET без ограничений пробной версии.

Вывод

В этой статье мы узнали, как:

  • создать 3D-сцену программно;
  • добавлять в 3D-сцену объекты/сущности, такие как цилиндр, материал, свет и т. д.;
  • чтение дочерних заметок и свойств 3D-сцены в C#.

Кроме того, вы можете узнать больше об Aspose.3D для .NET API, используя документацию. В случае возникновения каких-либо неясностей, пожалуйста, свяжитесь с нами на нашем форуме.

Смотрите также