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
.glbplėtinys, skirtas kompaktiškam binariniam glTF išvedimui - Patikrinkite
node.getEntity() != nullprieš 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
| Problema | Priežastis | Sprendimas |
|---|---|---|
| Išimtis įkrovimo metu | Nesuderinamas arba sugadintas failas | Patikrinkite, 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 importavimo | Skirtingos matavimo vienetų sistemos | Taikyti 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ė / Metodas | Aprašymas |
|---|---|
Scene | Virš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 |
Node | Scenos hierarchijos mazgas |
node.createChildNode() | Sukurkite ir pridėkite vaikų mazgą |
Mesh | Poligonų tinklelis su kontroliniais taškais ir veidų sąrašais |
mesh.createPolygon() | Apibrėžti poligono veidą |
Mesh.toMesh() | Konvertuoti arba klonuoti tinklelio geometriją |
Transform | Vietinis perkėlimas, sukimas ir mastelis |
FileFormat | Registras ir formatų detektorius |