Savybės ir funkcionalumas

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ėKryptisSvarbios savybės
ObjLoadOptionsImportasFlipCoordinateSystem, EnableMaterials, Scale
ObjSaveOptionsEksportasFlipCoordinateSystem, EnableMaterials, PointCloud
FbxLoadOptionsImportas(numatytieji nustatymai)
GltfLoadOptionsImportuoti(numatytieji nustatymai)
GltfSaveOptionsEksportuoti(numatytieji nustatymai)
StlLoadOptionsImportuoti(numatytieji nustatymai)
StlSaveOptionsEksportuoti(numatytieji nustatymai)
ColladaLoadOptionsImportuotiFlipCoordinateSystem
ColladaSaveOptionsEksportuotiIndented, TransformStyle
PlyLoadOptionsImportuoti(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 pritaikyto LoadOptions
  • Konvertuoti primityvus į Mesh su ToMesh() prieš pridėdami viršūnių elementus
  • Naudokite GltfSaveOptions su .glb plėtiniu, skirtu kompaktiškam dvejetainiui išvedimui
  • Patikrinkite node.Entity ar null prieš konvertavimą — ne kiekvienas mazgas turi geometriją
  • Naudokite PolygonModifier.Triangulate() konvertuoti keturkampius tinklus prieš eksportavimą į tik trikampių formatus, pvz., STL

Dažnos problemos

ProblemaPriežastisPataisymas
ImportException krovimo metuNesuderinamas arba sugadintas failasPatikrinkite, 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 importoSkirtingos matavimo vienetų sistemosNaudokite 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ė / MetodasAprašymas
SceneAukšč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
NodeScenos hierarchijos mazgas, saugantis objektus ir transformacijas
Node.CreateChildNode()Sukurti ir prijungti vaiko mazgą
MeshPoligono 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
TransformVietinis perkėlimas, sukimas ir mastelis
FileFormatRegistras ir detektorius palaikomiems formatams
LambertMaterial / PhongMaterial / PbrMaterialMedžiagų tipai šešėliavimui
 Lietuvių