Características y Funcionalidades

Características y Funcionalidades

Características y Funcionalidades

Esta página cubre cada área principal de características de Aspose.3D 26.1.0 con ejemplos funcionales de C#.


Cargar y Guardar Escenas

Scene.Open() carga un archivo; Scene.Save() lo exporta. El formato se detecta a partir de la extensión del archivo:

using Aspose.ThreeD;

var scene = new Scene();
scene.Open("input.obj");
scene.Save("output.glb");

Utilice la fábrica estática Scene.FromFile() como alternativa:

var scene = Scene.FromFile("input.fbx");
scene.Save("output.stl");

Opciones específicas del formato

Pase LoadOptions o SaveOptions subclases para un control granular:

using Aspose.ThreeD;
using Aspose.ThreeD.Formats;

var scene = new Scene();
scene.Open("model.obj", new ObjLoadOptions { FlipCoordinateSystem = true });
scene.Save("model.fbx");

Clases de opciones disponibles:

ClaseDirecciónPropiedades clave
ObjLoadOptionsImportarFlipCoordinateSystem, EnableMaterials, Scale
ObjSaveOptionsExportarFlipCoordinateSystem, EnableMaterials, PointCloud
FbxLoadOptionsImportar(configuración predeterminada)
GltfLoadOptionsImportar(configuración predeterminada)
GltfSaveOptionsExportar(configuración predeterminada)
StlLoadOptionsImportar(configuración predeterminada)
StlSaveOptionsExportar(configuración predeterminada)
ColladaLoadOptionsImportarFlipCoordinateSystem
ColladaSaveOptionsExportarIndented, TransformStyle
PlyLoadOptionsImportar(configuración predeterminada)

Construir un grafo de escena

Crea nodos y adjunta entidades para construir una jerarquía:

var scene = new Scene();
var root = scene.RootNode;

var boxNode = root.CreateChildNode("box", new Box(5, 5, 5));
var sphereNode = root.CreateChildNode("sphere", new Sphere(3));

Acceder a los hijos mediante node.ChildNodes y la entidad adjunta mediante node.Entity.


Malla y Primitivas

Crear un Mesh programáticamente con puntos de control y polígonos:

// Mesh.ControlPoints uses Aspose.ThreeD.Utilities.Vector4
// (double-precision, lowercase fields: x, y, z, w)
using Aspose.ThreeD.Utilities;

var mesh = new Mesh("custom");
mesh.ControlPoints.Add(new Vector4(0.0, 0.0, 0.0));   // w defaults to 1.0
mesh.ControlPoints.Add(new Vector4(10.0, 0.0, 0.0));
mesh.ControlPoints.Add(new Vector4(10.0, 10.0, 0.0));
mesh.ControlPoints.Add(new Vector4(0.0, 10.0, 0.0));
mesh.CreatePolygon(0, 1, 2, 3);

Primitivas incorporadas (Box, Sphere, Cylinder) pueden convertirse en Mesh:

var box = new Box(10, 10, 10);
Mesh boxMesh = box.ToMesh();

Elementos de Vértice

Adjunta normales, UVs y colores de vértice a la geometría:

var normals = new VertexElementNormal(MappingMode.ControlPoint, ReferenceMode.Direct);
mesh.AddElement(normals);

Tipos de elementos de vértice disponibles: VertexElementNormal, VertexElementUV, VertexElementVertexColor, VertexElementBinormal, VertexElementTangent.


Transformaciones

Cada Node lleva un Transform con Translation, Rotation, y Scale:

var node = scene.RootNode.CreateChildNode("moved", new Box());
node.Transform.Translation = new FVector3(10, 0, 5);
node.Transform.Scale = new FVector3(2, 2, 2);

Leer posición en espacio mundial mediante node.GlobalTransform.Matrix o node.EvaluateGlobalTransform().


Materiales

Asigna materiales a los nodos para los datos de sombreado:

var mat = new PhongMaterial("shiny");
mat.Diffuse = new Vector4(0.8, 0.2, 0.2, 1.0);
mat.Specular = new Vector4(1, 1, 1, 1);
mat.Shininess = 32;

scene.RootNode.CreateChildNode("red_box", new Box(), mat);

Tipos de material: LambertMaterial, PhongMaterial, PbrMaterial.


Consejos y mejores prácticas

  • Usar Scene.FromFile() para una carga de una sola línea cuando no necesitas personalizar LoadOptions
  • Convertir primitivas a Mesh con ToMesh() antes de agregar elementos de vértice
  • Usar GltfSaveOptions con un .glb extensión para salida binaria compacta
  • Verificar node.Entity para null antes de convertir — no todos los nodos contienen geometría
  • Usar PolygonModifier.Triangulate() para convertir mallas cuádricas antes de exportar a formatos solo de triángulos como STL

Problemas comunes

ProblemaCausaSolución
ImportException al cargarArchivo no compatible o corruptoVerifique que el archivo se abra en un visor 3D; compruebe que el formato esté en la lista de compatibles
Materiales faltantes después de cargar OBJ.mtl archivo no encontradoColoque el .mtl archivo junto al .obj o establecer ObjLoadOptions.EnableMaterials = true
Desajuste de escala después de la importación de FBXSistemas de unidades diferentesUsar ObjLoadOptions.Scale o aplicar una Transform después de cargar

FAQ

¿Cómo detecto el formato de un archivo desconocido?

Usar FileFormat.Detect():

var format = FileFormat.Detect("unknown_file.bin");
Console.WriteLine(format.Extension);

¿Puedo cargar desde un flujo en lugar de una ruta de archivo?

Sí. Scene.Open() acepta un Stream:

using var stream = File.OpenRead("model.glb");
scene.Open(stream);

¿Qué formatos admiten tanto importación como exportación?

OBJ, STL, glTF/GLB, FBX, COLLADA y 3MF admiten ambas direcciones. PLY solo admite importación (el exportador PLY no está conectado).


Resumen de la Referencia de API

Clase / MétodoDescripción
SceneContenedor de escena 3D de nivel superior
Scene.Open()Cargar un archivo 3D por ruta o flujo
Scene.Save()Exportar escena a archivo o flujo
Scene.FromFile()Fábrica estática para cargar y devolver un Scene
NodeNodo de jerarquía de escena que contiene entidades y transformaciones
Node.CreateChildNode()Crear y adjuntar un nodo hijo
MeshMalla poligonal con puntos de control y listas de caras
Mesh.CreatePolygon()Definir una cara poligonal por índices de vértices
Box / Sphere / CylinderPrimitivas paramétricas incorporadas
TransformTraslación, rotación y escala locales
FileFormatRegistro y detector de formatos compatibles
LambertMaterial / PhongMaterial / PbrMaterialTipos de material para sombreado
 Español