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:
| Klase | Virziens | Galvenās īpašības |
|---|---|---|
ObjLoadOptions | Importēt | FlipCoordinateSystem, EnableMaterials, Scale |
ObjSaveOptions | Eksportēt | FlipCoordinateSystem, EnableMaterials, PointCloud |
FbxLoadOptions | Importēt | (noklusējuma iestatījumi) |
GltfLoadOptions | Importēt | (noklusējuma iestatījumi) |
GltfSaveOptions | Eksportēt | (noklusējuma iestatījumi) |
StlLoadOptions | Importēt | (noklusējuma iestatījumi) |
StlSaveOptions | Eksportēt | (noklusējuma iestatījumi) |
ColladaLoadOptions | Importēt | FlipCoordinateSystem |
ColladaSaveOptions | Eksportēt | Indented, TransformStyle |
PlyLoadOptions | Importē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āgojumsLoadOptions - Pārveidot primitīvus uz
MesharToMesh()pirms pievienot virsotnes elementus - Izmantojiet
GltfSaveOptionsar.glbpaplašinājums kompaktam bināram izvadei - Pārbaudiet
node.Entitypriekšnullpirms 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ēma | Iemesls | Labojums |
|---|---|---|
ImportException ielādējot | Neatbalstīts vai bojāts fails | Pā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 atrasts | Novietojiet .mtl fails blakus .obj vai iestatīt ObjLoadOptions.EnableMaterials = true |
| Mēroga neatbilstība pēc FBX importēšanas | Atšķirīgas mērvienību sistēmas | Izmantot 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 / Metode | Apraksts |
|---|---|
Scene | Augstā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 |
Node | Skenes hierarhijas mezgls, kas satur vienības un transformācijas |
Node.CreateChildNode() | Izveidot un pievienot bērna mezglu |
Mesh | Poligonu režģis ar kontroles punktiem un seju sarakstiem |
Mesh.CreatePolygon() | Definēt poligona seju, izmantojot virsotnes indeksus |
Box / Sphere / Cylinder | Iebūvēti parametru primitīvi |
Transform | Lokāls pārvietojums, rotācija un mērogs |
FileFormat | Reģistrs un detektors atbalstītajiem formātiem |
LambertMaterial / PhongMaterial / PbrMaterial | Materiālu veidi ēnošanai |