Savybės ir funkcionalumas

Savybės ir funkcionalumas

Savybės ir funkcionalumas

Šiame puslapyje aptariamos visos pagrindinės funkcijų sritys aspose-3d-foss 26.1.0 su veiksniais Java pavyzdžiais.


Scenų įkėlimas ir išsaugojimas

scene.open() įkelia failą; scene.save() eksportuoja jį:

import com.aspose.threed.Scene;

Scene scene = new Scene();
scene.open("input.obj");
scene.save("output.glb");

Statinės gamyklos alternatyva:

Scene scene = Scene.fromFile("input.fbx");
scene.save("output.stl");

Formatui specifinės parinktys

Pereiti LoadOptions arba SaveOptions subklasės, skirtos smulkiam valdymui:

import com.aspose.threed.*;

Scene scene = new Scene();
ObjLoadOptions opts = new ObjLoadOptions();
opts.setFlipCoordinateSystem(true);
scene.open("model.obj", opts);

GltfSaveOptions saveOpts = new GltfSaveOptions();
saveOpts.setFlipCoordinateSystem(true);
scene.save("model.glb", saveOpts);

Pastaba: FBX palaikomas tik importui; FBX eksportas nėra įgyvendintas FOSS versijoje. Tik dvejetainis FBX failai palaikomi importui — ASCII FBX meta ImportException.


Scenos grafiko kūrimas

Sukurkite mazgus ir prijunkite objektus:

Scene scene = new Scene();
Node root = scene.getRootNode();

Mesh mesh = new Mesh("myMesh");
mesh.getControlPoints().add(new Vector4(0, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 10, 0));
mesh.createPolygon(0, 1, 2);

Node meshNode = root.createChildNode("triangle", mesh);

Mesh operacijos

Sukurkite Mesh programiškai su kontroliniais taškais ir daugiakampiais:

Mesh mesh = new Mesh("custom");
mesh.getControlPoints().add(new Vector4(0, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 10, 0));
mesh.getControlPoints().add(new Vector4(0, 10, 0));
mesh.createPolygon(0, 1, 2, 3);

Transformacijos

Kiekvienas Node nešioja Transform:

Node node = scene.getRootNode().createChildNode("moved", new Mesh());
node.getTransform().setTranslation(10, 0, 5);
node.getTransform().setScale(2, 2, 2);

Skaityti pasaulio erdvę per node.getGlobalTransform().getMatrix().


Medžiagos

Priskirkite medžiagas mazgams:

PbrMaterial mat = new PbrMaterial("shiny");
mat.setAlbedo(new Vector4(0.8, 0.2, 0.2, 1.0));
mat.setMetallicFactor(0.5);
mat.setRoughnessFactor(0.3);

scene.getRootNode().createChildNode("red_mesh", mesh, mat);

Medžiagų tipai: Material (bazinis), PbrMaterial (PBR metallic-roughness).


Patarimai ir geriausia praktika

  • Naudokite Scene.fromFile() vienos eilutės įkėlimams, kai nėra reikalingų pasirinktinių parametrų
  • Kurkite tinklus programiškai su createPolygon() pritaikytai geometrijai
  • Naudokite .glb plėtinys, skirtas kompaktiškam binariniam glTF išvedimui
  • Patikrinkite node.getEntity() != null prieš konvertavimą
  • STL eksportas daro ne automatiškai trianguliuoti daugiakampių veidus. Binary STL eksportas įrašo tik pirmus 3 viršūnių kiekvienam daugiakampio veidui — kvadratiniai arba n‑kampiai tyliai trumpinami. ASCII STL eksportas įrašo visas viršūnių indeksus, todėl susidaro netinkami veido blokai ne‑trikampiams veidams. Visada perduokite iš anksto trianguliuotus tinklus (visi veidai – trikampiai) STL eksportui, kad išvengtumėte duomenų praradimo ar neteisingo išvesties.

Dažnos problemos

ProblemaPriežastisSprendimas
Išimtis įkrovimo metuNesuderinamas arba sugadintas failasPatikrinkite, ar failas atsidaro 3D peržiūros programoje
Trūksta medžiagų po OBJ įkėlimo.mtl failas nerastasĮdėti .mtl šalia .obj; įsitikinkite, kad medžiagos įjungtos
Mastelio neatitikimas po importavimoSkirtingos matavimo vienetų sistemosTaikyti Transform mastelį po įkėlimo

FAQ

Kaip aptikti failo formatą?

FileFormat format = FileFormat.detect("unknown.bin");
System.out.println(format.getExtension());

Ar galiu įkelti iš srauto?

Taip. scene.open() priima InputStream.

Kurių formatų palaikoma tiek importavimas, tiek eksportavimas?

OBJ, STL ir glTF/GLB palaiko abi kryptis. FBX yra tik importavimui; eksportas nėra įgyvendintas FOSS versijoje.


API nuorodų santrauka

Klasė / MetodasAprašymas
SceneViršutinio 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 Scene
NodeScenos hierarchijos mazgas
node.createChildNode()Sukurkite ir pridėkite vaikų mazgą
MeshPoligonų tinklelis su kontroliniais taškais ir veidų sąrašais
mesh.createPolygon()Apibrėžti poligono veidą
Mesh.toMesh()Konvertuoti arba klonuoti tinklelio geometriją
TransformVietinis perkėlimas, sukimas ir mastelis
FileFormatRegistras ir formatų detektorius
 Lietuvių