Создание и чтение существующей сцены 3D
Обзор
В статье рассматриваются следующие темы с использованием библиотеки манипулирования форматами файлов C# 3D.
- Создайте пустую сцену 3D в C# с нуля
- Чтение или загрузка существующей сцены 3D в C#
- Сохраните сцену 3D в поддерживаемых форматах 3D, используя C#
- Работа со свойствами сцены 3D в C#
Создайте пустую сцену 3D и сохраните в поддерживаемых форматах файлов 3D
Aspose.3D API поддерживает создание новых 3D сцен с нуля, а затем сохранение в любом поддерживаемом формате файла. Разработчики также могут загрузить существующую сцену 3D для модификации, добавления или обработки.
Создание документа сцены 3D
Пожалуйста, выполните следующие действия в C#, чтобы создать документ сцены 3D, используя API Aspose.3D:
- Создайте экземпляр класса
Scene, представляющий документ сцены 3D. - Сгенерируйте документ сцены 3D, вызвав метод
Saveобъекта класса Scene.
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-.NET
// Create an object of the Scene class
Scene scene = new Scene();
// Save 3D scene document
scene.Save("document.fbx");
Чтение сцены 3D
Используя Aspose.3D API, разработчики могут загрузить все поддерживаемые документы 3D. Доступные конструкторы класса Scene позволяют это сделать, и они принимают правильную строку пути к файлу. Поддерживаемые форматы файлов для чтения являются следующими:
- FBX 7,5 (ASCII, двоичный)
- FBX 7,4 (ASCII, двоичный)
- FBX 7,3 (ASCII, двоичный)
- FBX 7,2 (ASCII, двоичный)
- FBX 6,1 (ASCII, двоичный)
- STL (ASCII, двоичный)
- WavefrontOBJ
- Discreet3DS
- Universal3D
- Collada
- glTF (ASCII, двоичный)
- Майя (ASCII, двоичный)
- OpenUSD (USD, USDZ)
- Блендер
- DXF
- PLY (ASCII, двоичный)
- X (ASCII, двоичный)
- Draco
- 3MF
- RVM (Текстовый, двоичный)
- ASE
Конструкторы класса Scene внутренне определяют формат документа 3D.
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-.NET
// The path to the documents directory.
// Initialize a Scene class object
Scene scene = new Scene();
// Load an existing 3D document
scene.Open("document.fbx");
Работа со свойствами сцены 3D
Aspose.3D API позволяет читать свойства сцены 3D, используя дочерние узлы сцены. Следующий пример кода C# демонстрирует использование этой функции.
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-.NET
Scene scene = Scene.FromFile("EmbeddedTexture.fbx");
Material material = scene.RootNode.ChildNodes[0].Material;
PropertyCollection props = material.Properties;
//List all properties using foreach
foreach (var prop in props)
{
Console.WriteLine("{0} = {1}", prop.Name, prop.Value);
}
//or using ordinal for loop
for (int i = 0; i < props.Count; i++)
{
var prop = props[i];
Console.WriteLine("{0} = {1}", prop.Name, prop.Value);
}
//Get property value by name
var diffuse = props["Diffuse"];
Console.WriteLine(diffuse);
//modify property value by name
props["Diffuse"] = new Vector3(1, 0, 1);
//Get property instance by name
Property pdiffuse = props.FindProperty("Diffuse");
Console.WriteLine(pdiffuse);
//Since Property is also inherited from A3DObject
//It's possible to get the property of the property
Console.WriteLine("Property flags = {0}", pdiffuse.GetProperty("flags"));
//and some properties that only defined in FBX file:
Console.WriteLine("Label = {0}", pdiffuse.GetProperty("label"));
Console.WriteLine("Type Name = {0}", pdiffuse.GetProperty("typeName"));
//so traversal on property's property is possible
foreach (var pp in pdiffuse.Properties)
{
Console.WriteLine("Diffuse.{0} = {1}", pp.Name, pp.Value);
}