Característiques i funcionalitats

Característiques i funcionalitats

Característiques i funcionalitats

Aquesta pàgina cobreix cada àrea principal de funcionalitat de Aspose.3D 26.1.0 amb exemples C# funcionals.


Càrrega i desament d’escenes

Scene.Open() carrega un fitxer; Scene.Save() l’exporta. El format es detecta a partir de l’extensió del fitxer:

using Aspose.ThreeD;

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

Utilitzeu la fàbrica estàtica Scene.FromFile() com a alternativa:

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

Opcions específiques del format

Passa LoadOptions o SaveOptions subclasses per a un control detallat:

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

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

Classes d’opcions disponibles:

ClasseDireccióPropietats clau
ObjLoadOptionsImportaFlipCoordinateSystem, EnableMaterials, Scale
ObjSaveOptionsExportaFlipCoordinateSystem, EnableMaterials, PointCloud
FbxLoadOptionsImporta(configuració per defecte)
GltfLoadOptionsImporta(configuració per defecte)
GltfSaveOptionsExporta(configuració per defecte)
StlLoadOptionsImporta(configuració per defecte)
StlSaveOptionsExporta(configuració per defecte)
ColladaLoadOptionsImportaFlipCoordinateSystem
ColladaSaveOptionsExportaIndented, TransformStyle
PlyLoadOptionsImporta(configuració per defecte)

Construint un graf d’escena

Creeu nodes i adjunteu entitats per construir una jerarquia:

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

Accedeix als fills a través de node.ChildNodes i l’entitat adjunta via node.Entity.


Malla i primitives

Crea una Mesh programàticament amb punts de control i polígons:

// 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 integrades (Box, Sphere, Cylinder) es poden convertir a Mesh:

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

Elements de vèrtex

Adjunteu normals, UV i colors de vèrtex a la geometria:

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

Tipus d’elements de vèrtex disponibles: VertexElementNormal, VertexElementUV, VertexElementVertexColor, VertexElementBinormal, VertexElementTangent.


Transformacions

Cada Node porta una Transform amb Translation, Rotation, i 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);

Llegeix la posició en l’espai mundial via node.GlobalTransform.Matrix o node.EvaluateGlobalTransform().


Materials

Assigneu materials als nodes per a les dades d’ombrejat:

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

Tipus de material: LambertMaterial, PhongMaterial, PbrMaterial.


Consells i bones pràctiques

  • Utilitza Scene.FromFile() per a una càrrega d’una sola línia quan no necessites personalitzat LoadOptions
  • Converteix primitives a Mesh amb ToMesh() abans d’afegir elements de vèrtex
  • Utilitza GltfSaveOptions amb un .glb extensió per a una sortida binària compacta
  • Comprova node.Entity per null abans de fer el casting — no tots els nodes contenen geometria
  • Utilitza PolygonModifier.Triangulate() per convertir malles de quàders abans d’exportar a formats només de triangles com STL

Problemes comuns

ProblemaCausaCorrecció
ImportException en carregarFitxer no compatible o corrupteVerifiqueu que el fitxer s’obre en un visualitzador 3D; comproveu que el format estigui a la llista de formats compatibles
Falten materials després de carregar l’OBJ.mtl fitxer no trobatCol·loqueu el .mtl fitxer al costat del .obj o establiu ObjLoadOptions.EnableMaterials = true
Desajust d’escala després de la importació FBXSistemes d’unitats diferentsUtilitzeu ObjLoadOptions.Scale o aplicar una Transform després de carregar

FAQ

Com puc detectar el format d’un fitxer desconegut?

Utilitza FileFormat.Detect():

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

Puc carregar des d’un flux en lloc d’un camí de fitxer?

Sí. Scene.Open() accepta una Stream:

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

Quins formats admeten tant importació com exportació?

OBJ, STL, glTF/GLB, FBX, COLLADA i 3MF admeten ambdues direccions. PLY només admet la importació (l’exportador PLY no està connectat).


Resum de la referència de l’API

Classe / MètodeDescripció
SceneContenidor d’escena 3D de nivell superior
Scene.Open()Carrega un fitxer 3D per ruta o flux
Scene.Save()Exporta l’escena a fitxer o flux
Scene.FromFile()Fàbrica estàtica per carregar i retornar una Scene
NodeNode de jerarquia d’escena que conté entitats i transformacions
Node.CreateChildNode()Crea i adjunta un node fill
MeshMalla de polígons amb punts de control i llistes de cares
Mesh.CreatePolygon()Defineix una cara de polígon a partir d’índexs de vèrtex
Box / Sphere / CylinderPrimitius paramètrics integrats
TransformTraslació, rotació i escala locals
FileFormatRegistre i detector per a formats compatibles
LambertMaterial / PhongMaterial / PbrMaterialTipus de material per a l’ombreig
 Català