Savybės ir funkcionalumas
Savybės ir funkcionalumas
Šis puslapis apima visas pagrindines funkcijų sritis Aspose.3D 26.1.0 su veikiančiais C# pavyzdžiais.
Scenų įkėlimas ir išsaugojimas
Scene.Open() įkelia failą; Scene.Save() eksportuoja jį. Formatas nustatomas pagal failo plėtinį:
using Aspose.ThreeD;
var scene = new Scene();
scene.Open("input.obj");
scene.Save("output.glb");Naudokite statinę gamyklą Scene.FromFile() kaip alternatyvą:
var scene = Scene.FromFile("input.fbx");
scene.Save("output.stl");Formatui specifinės parinktys
Pateikite LoadOptions arba SaveOptions pakaitines klases smulkiam valdymui:
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;
var scene = new Scene();
scene.Open("model.obj", new ObjLoadOptions { FlipCoordinateSystem = true });
scene.Save("model.fbx");Prieinamos parinkčių klasės:
| Klasė | Kryptis | Svarbios savybės |
|---|---|---|
ObjLoadOptions | Importas | FlipCoordinateSystem, EnableMaterials, Scale |
ObjSaveOptions | Eksportas | FlipCoordinateSystem, EnableMaterials, PointCloud |
FbxLoadOptions | Importas | (numatytieji nustatymai) |
GltfLoadOptions | Importuoti | (numatytieji nustatymai) |
GltfSaveOptions | Eksportuoti | (numatytieji nustatymai) |
StlLoadOptions | Importuoti | (numatytieji nustatymai) |
StlSaveOptions | Eksportuoti | (numatytieji nustatymai) |
ColladaLoadOptions | Importuoti | FlipCoordinateSystem |
ColladaSaveOptions | Eksportuoti | Indented, TransformStyle |
PlyLoadOptions | Importuoti | (numatytieji nustatymai) |
Scenos grafiko kūrimas
Sukurkite mazgus ir pridėkite objektus, kad sukurtumėte hierarchiją:
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));Pasiekti vaikus per node.ChildNodes ir prisegtą objektą per node.Entity.
Tinklas ir primityvai
Sukurkite Mesh programiškai su kontrolės taškais ir daugiakampiais:
// 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);Įtaisytosios primityvos (Box, Sphere, Cylinder) gali būti konvertuojamos į Mesh:
var box = new Box(10, 10, 10);
Mesh boxMesh = box.ToMesh();Viršūnių elementai
Pridėkite normalus, UV koordinates ir viršūnių spalvas prie geometrijos:
var normals = new VertexElementNormal(MappingMode.ControlPoint, ReferenceMode.Direct);
mesh.AddElement(normals);Prieinami viršūnės elemento tipai: VertexElementNormal, VertexElementUV, VertexElementVertexColor, VertexElementBinormal, VertexElementTangent.
Transformacijos
Kiekvienas Node neša Transform su Translation, Rotation, ir 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);Skaityti pasaulio erdvės poziciją per node.GlobalTransform.Matrix arba node.EvaluateGlobalTransform().
Medžiagos
Priskirkite medžiagas mazgams, kad nustatytumėte apšvietimo duomenis:
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);Medžiagų tipai: LambertMaterial, PhongMaterial, PbrMaterial.
Patarimai ir geriausia praktika
- Naudokite
Scene.FromFile()vienos eilutės įkėlimui, kai jums nereikia pritaikytoLoadOptions - Konvertuoti primityvus į
MeshsuToMesh()prieš pridėdami viršūnių elementus - Naudokite
GltfSaveOptionssu.glbplėtiniu, skirtu kompaktiškam dvejetainiui išvedimui - Patikrinkite
node.Entityarnullprieš konvertavimą — ne kiekvienas mazgas turi geometriją - Naudokite
PolygonModifier.Triangulate()konvertuoti keturkampius tinklus prieš eksportavimą į tik trikampių formatus, pvz., STL
Dažnos problemos
| Problema | Priežastis | Pataisymas |
|---|---|---|
ImportException krovimo metu | Nesuderinamas arba sugadintas failas | Patikrinkite, ar failas atsidaro 3D peržiūros programoje; įsitikinkite, kad formatas yra palaikomų sąraše |
| Trūksta medžiagų po OBJ įkėlimo | .mtl failas nerastas | Įdėkite .mtl failą šalia .obj arba nustatykite ObjLoadOptions.EnableMaterials = true |
| Mastelio neatitikimas po FBX importo | Skirtingos matavimo vienetų sistemos | Naudokite ObjLoadOptions.Scale arba pritaikykite Transform po įkėlimo |
FAQ
Kaip aptikti nežinomo failo formatą?
Naudokite FileFormat.Detect():
var format = FileFormat.Detect("unknown_file.bin");
Console.WriteLine(format.Extension);Ar galiu įkelti iš srauto, o ne failo kelio?
Taip. Scene.Open() priima Stream:
using var stream = File.OpenRead("model.glb");
scene.Open(stream);Kurių formatų palaikoma tiek importavimas, tiek eksportavimas?
OBJ, STL, glTF/GLB, FBX, COLLADA ir 3MF palaiko abi kryptis. PLY palaiko tik importą (PLY eksportuotojas nėra sujungtas).
API nuorodų santrauka
| Klasė / Metodas | Aprašymas |
|---|---|
Scene | Aukščiausio lygio 3D scenos konteineris |
Scene.Open() | Įkelti 3D failą pagal kelią arba srautą |
Scene.Save() | Eksportuoti sceną į failą arba srautą |
Scene.FromFile() | Statinė gamyklos funkcija įkelti ir grąžinti a Scene |
Node | Scenos hierarchijos mazgas, saugantis objektus ir transformacijas |
Node.CreateChildNode() | Sukurti ir prijungti vaiko mazgą |
Mesh | Poligono tinklelis su valdymo taškais ir veidų sąrašais |
Mesh.CreatePolygon() | Apibrėžti poligono veidą pagal viršūnių indeksus |
Box / Sphere / Cylinder | Įmontuoti parametrijos primityvai |
Transform | Vietinis perkėlimas, sukimas ir mastelis |
FileFormat | Registras ir detektorius palaikomiems formatams |
LambertMaterial / PhongMaterial / PbrMaterial | Medžiagų tipai šešėliavimui |