Управление сценой

Управление сценой

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


Создание и открытие сцен

Создайте пустую сцену с помощью new Scene(), или загрузите её из файла:

using Aspose.ThreeD;

// Empty scene
var empty = new Scene();

// Load from file — format is detected automatically
var scene = Scene.FromFile("model.fbx");

// Load using Scene.Open with explicit format
var scene2 = new Scene();
scene2.Open("model.obj", FileFormat.WavefrontOBJ);

// Load from a stream (useful when reading from memory or network)
using var stream = System.IO.File.OpenRead("model.stl");
var scene3 = new Scene();
scene3.Open(stream, FileFormat.STLBinary);

Scene.FromFile автоматически определяет формат по расширению файла и магическим байтам. Используйте перегрузку FileFormat, когда расширение неоднозначно или отсутствует.


Сохранение сцен

Сохраните сцену в файл или поток в любом поддерживаемом формате вывода:

// Save to file — format determined from extension
scene.Save("output.gltf");

// Save with explicit format
scene.Save("output.bin", FileFormat.GLTF2_Binary);

// Save to a stream
using var output = System.IO.File.Create("output.fbx");
scene.Save(output, FileFormat.FBX7700Binary);

// Save with format-specific options
var opts = new Aspose.ThreeD.Formats.ObjSaveOptions();
opts.PointCloud = false;
scene.Save("output.obj", opts);

Очистка содержимого сцены

Чтобы удалить все узлы и ресурсы из сцены, сохранив объект Scene:

// Remove all direct children of the root node
scene.RootNode.ChildNodes.Clear();

// Or replace the scene entirely
scene = new Scene();

Scene.Clear() доступен и очищает содержимое сцены, восстанавливая настройки по умолчанию; альтернативно, создайте новый экземпляр Scene, как показано выше.


Метаданные сцены

Свойство AssetInfo в Scene раскрывает метаданные, встроенные в поддерживаемые форматы (FBX, Collada, glTF):

var info = scene.AssetInfo;
Console.WriteLine("Author:       " + info.Author);
Console.WriteLine("Creation UTC: " + info.CreationTime);
Console.WriteLine("Units:        " + info.UnitName + " @ " + info.UnitScaleFactor);

Установите метаданные перед сохранением, чтобы сохранить их в выходном файле:

scene.AssetInfo.ApplicationName = "My Application 1.0";
scene.AssetInfo.UnitName = "meter";
scene.AssetInfo.UnitScaleFactor = 1.0;
scene.Save("output_with_meta.fbx");

API Quick Reference

MemberОписание:
new Scene()Создать пустую сцену
Scene.FromFile(path)Статический вспомогательный метод: открыть файл и вернуть загруженную сцену
scene.Open(path, format?)Загрузить файл в существующую сцену
scene.Open(stream, format)Загрузить из потока
scene.Save(path, format?)Сохранить в файл
scene.Save(stream, format)Сохранить в поток
scene.RootNodeКорневой Node иерархии сцены
scene.AssetInfoБлок метаданных (создатель, метки времени, единицы измерения)
scene.AssetInfo.ApplicationNameИмя приложения, встроенное в файл
scene.AssetInfo.UnitScaleFactorМасштаб единиц сцены относительно метров

См. также:

 Русский