Crear y leer una escena 3D existente

Descripción general

El artículo explica los siguientes temas utilizando la biblioteca de manipulación de formatos de archivo C# 3D.

  • Crear una escena 3D vacía en C# desde cero
  • Leer o cargar escena 3D existente en C#
  • Guardar la escena 3D en formatos 3D compatibles utilizando C#
  • Trabajar con propiedades de escena 3D en C#

Crear una escena 3D vacía y guardar en los formatos de archivo 3D compatibles

Aspose.3D API admite la creación de las nuevas escenas 3D desde cero y luego guardadas en cualquier formato de archivo compatible. Los desarrolladores también pueden cargar una escena 3D existente para la modificación, la adición o el procesamiento.

Creación de un documento de escena 3D

Siga estos pasos en C# para crear un documento de escena 3D utilizando las API Aspose.3D:

  1. Cree una instancia de la clase Scene que represente un documento de escena 3D.
  2. Genere un documento 3D Scene llamando al método Save del objeto de clase 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");

Leyendo una escena de 3D

Con Aspose.3D API, los desarrolladores pueden cargar todos los documentos 3D compatibles. Los constructores disponibles de la clase Scene permiten hacerlo y aceptan una cadena de ruta de archivo válida. Los formatos de archivo legibles admitidos son los siguientes:

  1. FBX 7,5 (ASCII, binario)
  2. FBX 7,4 (ASCII, binario)
  3. FBX 7,3 (ASCII, binario)
  4. FBX 7,2 (ASCII, binario)
  5. FBX 6,1 (ASCII, binario)
  6. STL (ASCII, binario)
  7. WavefrontOBJ
  8. Discreet3DS
  9. Universal3D
  10. Collada
  11. glTF (ASCII, binario)
  12. Maya (ASCII, Binario)
  13. OpenUSD (USD, USDZ)
  14. Licuadora
  15. DXF
  16. PLY (ASCII, binario)
  17. X (ASCII… Binary)
  18. Draco
  19. 3MF
  20. RVM (Texto, binario)
  21. ASE

Los constructores de la clase Scene detectan internamente el formato de documento 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");

Trabajar con propiedades de escena 3D

Aspose.3D API le permite leer las propiedades de la escena 3D utilizando los nodos secundarios de la escena. El siguiente ejemplo de código C# muestra el uso de esta característica.

// 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);
}