Funkcijas un iespējas

Funkcijas un iespējas

Šī lapa aptver katru galveno funkciju jomu Aspose.3D 26.1.0 ar strādājošiem C# piemēriem.


Scēnu ielāde un saglabāšana

Scene.Open() ielādē failu; Scene.Save() eksportē to. Formāts tiek noteikts no faila paplašinājuma:

using Aspose.ThreeD;

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

Izmantojiet statisko ražotāju Scene.FromFile() kā alternatīvu:

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

Formāta specifiskās opcijas

Pārsūtiet LoadOptions vai SaveOptions apakšklases, lai iegūtu smalku kontroli:

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

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

Pieejamās opciju klases:

KlaseVirziensGalvenās īpašības
ObjLoadOptionsImportētFlipCoordinateSystem, EnableMaterials, Scale
ObjSaveOptionsEksportētFlipCoordinateSystem, EnableMaterials, PointCloud
FbxLoadOptionsImportēt(noklusējuma iestatījumi)
GltfLoadOptionsImportēt(noklusējuma iestatījumi)
GltfSaveOptionsEksportēt(noklusējuma iestatījumi)
StlLoadOptionsImportēt(noklusējuma iestatījumi)
StlSaveOptionsEksportēt(noklusējuma iestatījumi)
ColladaLoadOptionsImportētFlipCoordinateSystem
ColladaSaveOptionsEksportētIndented, TransformStyle
PlyLoadOptionsImportēt(noklusējuma iestatījumi)

Scēnas grafa izveide

Izveidojiet mezglus un pievienojiet vienības, lai izveidotu hierarhiju:

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

Piekļūt bērniem caur node.ChildNodes un pievienoto vienību caur node.Entity.


Mesh un primitīvi

Izveidot Mesh programmatiski ar kontroles punktiem un daudzstūriem:

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

Iebūvēti primitīvi (Box, Sphere, Cylinder) var tikt pārveidots uz Mesh:

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

Vertex elementi

Pievienojiet normālus, UV un virsotnes krāsas ģeometrijai:

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

Pieejamie virsotnes elementu tipi: VertexElementNormal, VertexElementUV, VertexElementVertexColor, VertexElementBinormal, VertexElementTangent.


Transformācijas

Katrs Node nēsā a Transform ar Translation, Rotation, un 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);

Nolasīt pasaules telpas pozīciju caur node.GlobalTransform.Matrix vai node.EvaluateGlobalTransform().


Materiāli

Piešķiriet materiālus mezgliem, lai nodrošinātu ēnošanas datus:

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

Materiālu veidi: LambertMaterial, PhongMaterial, PbrMaterial.


Padomi un labākā prakse

  • Izmantot Scene.FromFile() vienas rindas ielādei, kad nav vajadzīgs pielāgojums LoadOptions
  • Pārveidot primitīvus uz Mesh ar ToMesh() pirms pievienot virsotnes elementus
  • Izmantojiet GltfSaveOptions ar .glb paplašinājums kompaktam bināram izvadei
  • Pārbaudiet node.Entity priekš null pirms pārveidošanas — ne visi mezgli nes ģeometriju
  • Izmantojiet PolygonModifier.Triangulate() pārvērst kvadrātveida režģus pirms eksportēšanas uz tikai trīsstūru formātiem, piemēram, STL

Biežāk sastopamās problēmas

ProblēmaIemeslsLabojums
ImportException ielādējotNeatbalstīts vai bojāts failsPārbaudiet, vai fails atveras 3D skatītājā; pārbaudiet, vai formāts ir atbalstīto sarakstā
Trūkst materiālu pēc OBJ ielādes.mtl fails nav atrastsNovietojiet .mtl fails blakus .obj vai iestatīt ObjLoadOptions.EnableMaterials = true
Mēroga neatbilstība pēc FBX importēšanasAtšķirīgas mērvienību sistēmasIzmantot ObjLoadOptions.Scale vai piemērot Transform pēc ielādēšanas

FAQ

Kā es varu noteikt nezināma faila formātu?

Izmantot FileFormat.Detect():

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

Vai varu ielādēt no straumes, nevis no faila ceļa?

Jā. Scene.Open() pieņem Stream:

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

Kuri formāti atbalsta gan importu, gan eksportu?

OBJ, STL, glTF/GLB, FBX, COLLADA un 3MF atbalsta abus virzienus. PLY atbalsta tikai importēšanu (PLY eksportētājs nav savienots).


API Atsauces Kopsavilkums

Klase / MetodeApraksts
SceneAugstākā līmeņa 3D skenes konteineris
Scene.Open()Ielādēt 3D failu, izmantojot ceļu vai straumi
Scene.Save()Eksportēt skenu uz failu vai straumi
Scene.FromFile()Statiskā rūpnīca, lai ielādētu un atgrieztu Scene
NodeSkenes hierarhijas mezgls, kas satur vienības un transformācijas
Node.CreateChildNode()Izveidot un pievienot bērna mezglu
MeshPoligonu režģis ar kontroles punktiem un seju sarakstiem
Mesh.CreatePolygon()Definēt poligona seju, izmantojot virsotnes indeksus
Box / Sphere / CylinderIebūvēti parametru primitīvi
TransformLokāls pārvietojums, rotācija un mērogs
FileFormatReģistrs un detektors atbalstītajiem formātiem
LambertMaterial / PhongMaterial / PbrMaterialMateriālu veidi ēnošanai
 Latviešu