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:
| Classe | Direcció | Propietats clau |
|---|---|---|
ObjLoadOptions | Importa | FlipCoordinateSystem, EnableMaterials, Scale |
ObjSaveOptions | Exporta | FlipCoordinateSystem, EnableMaterials, PointCloud |
FbxLoadOptions | Importa | (configuració per defecte) |
GltfLoadOptions | Importa | (configuració per defecte) |
GltfSaveOptions | Exporta | (configuració per defecte) |
StlLoadOptions | Importa | (configuració per defecte) |
StlSaveOptions | Exporta | (configuració per defecte) |
ColladaLoadOptions | Importa | FlipCoordinateSystem |
ColladaSaveOptions | Exporta | Indented, TransformStyle |
PlyLoadOptions | Importa | (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 personalitzatLoadOptions - Converteix primitives a
MeshambToMesh()abans d’afegir elements de vèrtex - Utilitza
GltfSaveOptionsamb un.glbextensió per a una sortida binària compacta - Comprova
node.Entitypernullabans 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
| Problema | Causa | Correcció |
|---|---|---|
ImportException en carregar | Fitxer no compatible o corrupte | Verifiqueu 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 trobat | Col·loqueu el .mtl fitxer al costat del .obj o establiu ObjLoadOptions.EnableMaterials = true |
| Desajust d’escala després de la importació FBX | Sistemes d’unitats diferents | Utilitzeu 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ètode | Descripció |
|---|---|
Scene | Contenidor 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 |
Node | Node de jerarquia d’escena que conté entitats i transformacions |
Node.CreateChildNode() | Crea i adjunta un node fill |
Mesh | Malla 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 / Cylinder | Primitius paramètrics integrats |
Transform | Traslació, rotació i escala locals |
FileFormat | Registre i detector per a formats compatibles |
LambertMaterial / PhongMaterial / PbrMaterial | Tipus de material per a l’ombreig |