Funkcie a vlastnosti

Funkcie a vlastnosti

Táto stránka pokrýva každú hlavnú oblasť funkcií Aspose.3D 26.1.0 so funkčnými príkladmi v C#.


Načítanie a ukladanie scén

Scene.Open() načíta súbor; Scene.Save() exportuje ho. Formát sa zistí z prípony súboru:

using Aspose.ThreeD;

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

Použite statickú továreň Scene.FromFile() ako alternatívu:

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

Formátovo špecifické možnosti

Zadajte LoadOptions alebo SaveOptions podtriedy pre detailnú kontrolu:

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

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

Dostupné triedy možností:

TriedaSmerKľúčové vlastnosti
ObjLoadOptionsImportFlipCoordinateSystem, EnableMaterials, Scale
ObjSaveOptionsExportFlipCoordinateSystem, EnableMaterials, PointCloud
FbxLoadOptionsImport(predvolené nastavenia)
GltfLoadOptionsImportovať(predvolené nastavenia)
GltfSaveOptionsExportovať(predvolené nastavenia)
StlLoadOptionsImport(predvolené nastavenia)
StlSaveOptionsExport(predvolené nastavenia)
ColladaLoadOptionsImportFlipCoordinateSystem
ColladaSaveOptionsExportIndented, TransformStyle
PlyLoadOptionsImport(predvolené nastavenia)

Budovanie grafu scény

Vytvorte uzly a pripojte entity na zostavenie hierarchie:

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

Prístup k podobjektom cez node.ChildNodes a pripojenú entitu cez node.Entity.


Mesh a primitívy

Vytvoriť Mesh programovo s riadiacimi bodmi a polygonmi:

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

Vstavané primitívy (Box, Sphere, Cylinder) je možné previesť na Mesh:

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

Elementy vrcholov

Pripojte normály, UV a farby vrcholov k geometrii:

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

Dostupné typy vrcholových prvkov: VertexElementNormal, VertexElementUV, VertexElementVertexColor, VertexElementBinormal, VertexElementTangent.


Transformácie

Každý Node nesie Transform s Translation, Rotation, a 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);

Prečítajte pozíciu vo svetovom priestore cez node.GlobalTransform.Matrix alebo node.EvaluateGlobalTransform().


Materiály

Priraďte materiály uzlom pre údaje o osvetlení:

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

Typy materiálov: LambertMaterial, PhongMaterial, PbrMaterial.


Tipy a osvedčené postupy

  • Použite Scene.FromFile() pre jednorazové načítanie, keď nepotrebujete vlastné LoadOptions
  • Previesť primitívy na Mesh s ToMesh() pred pridaním vrcholových prvkov
  • Použite GltfSaveOptions s .glb rozšírenie pre kompaktný binárny výstup
  • Skontrolujte node.Entity pre null pred pretypovaním — nie každý uzol nesie geometriu
  • Použite PolygonModifier.Triangulate() na konverziu štvorcových sietí pred exportom do formátov podporujúcich iba trojuholníky, ako je STL

Bežné problémy

ProblémPríčinaOprava
ImportException pri načítaníNepodporovaný alebo poškodený súborOverte, že sa súbor otvorí v 3D prehliadači; skontrolujte, že formát je v zozname podporovaných
Chýbajúce materiály po načítaní OBJ.mtl súbor nebol nájdenýUmiestnite .mtl súbor vedľa .obj alebo nastavte ObjLoadOptions.EnableMaterials = true
Nesúlad mierky po importe FBXRôzne systémy jednotiekPoužite ObjLoadOptions.Scale alebo použite Transform po načítaní

FAQ

Ako môžem zistiť formát neznámeho súboru?

Použite FileFormat.Detect():

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

Môžem načítať zo streamu namiesto cesty k súboru?

Áno. Scene.Open() akceptuje Stream:

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

Ktoré formáty podporujú import aj export?

Formáty OBJ, STL, glTF/GLB, FBX, COLLADA a 3MF podporujú oboje smerov. PLY podporuje iba import (exportér PLY nie je zapojený).


Zhrnutie referencie API

Trieda / MetódaPopis
SceneKontajner 3D scény najvyššej úrovne
Scene.Open()Načítajte 3D súbor podľa cesty alebo prúdu
Scene.Save()Exportujte scénu do súboru alebo prúdu
Scene.FromFile()Statická továreň na načítanie a vrátenie Scene
NodeUzol hierarchie scény obsahujúci entity a transformácie
Node.CreateChildNode()Vytvoriť a pripojiť podriadený uzol
MeshPolygónová sieť s riadiacimi bodmi a zoznamami plôch
Mesh.CreatePolygon()Definovať polygónovú plochu pomocou indexov vrcholov
Box / Sphere / CylinderVstavané parametrické primitívy
TransformLokálny posun, rotácia a mierka
FileFormatRegister a detektor podporovaných formátov
LambertMaterial / PhongMaterial / PbrMaterialTypy materiálov pre tieňovanie
 Slovenčina