Ominaisuudet ja toiminnot
Ominaisuudet ja toiminnot
Tämä sivu kattaa jokaisen tärkeimmän ominaisuusalueen aspose-3d-foss 26.1.0 toimivilla Java esimerkeillä.
Scenejen lataaminen ja tallentaminen
scene.open() lataa tiedoston; scene.save() vie sen:
import com.aspose.threed.Scene;
Scene scene = new Scene();
scene.open("input.obj");
scene.save("output.glb");Staattinen tehdasvaihtoehto:
Scene scene = Scene.fromFile("input.fbx");
scene.save("output.stl");Formaattiin perustuvat asetukset
Pass LoadOptions tai SaveOptions aliluokkia tarkkaan hallintaan:
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);Huomaa: FBX:tä tuetaan vain tuontiin; FBX-vientiä ei ole toteutettu FOSS-versiossa. Vain binäärinen FBX tiedostoja tuetaan tuontiin — ASCII FBX aiheuttaa ImportException.
Scene‑graafin rakentaminen
Luo nodeja ja liitä entiteettejä:
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‑toiminnot
Luo Mesh ohjelmallisesti ohjauspisteillä ja monikulmioilla:
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);Muunnokset
Jokainen Node sisältää a Transform:
Node node = scene.getRootNode().createChildNode("moved", new Mesh());
node.getTransform().setTranslation(10, 0, 5);
node.getTransform().setScale(2, 2, 2);Lue maailmatila kautta node.getGlobalTransform().getMatrix().
Materiaalit
Aseta materiaalit solmuihin:
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);Materiaalityypit: Material (perus), PbrMaterial (PBR metallic-roughness).
Vinkkejä ja parhaita käytäntöjä
- Käytä
Scene.fromFile()yksirivisiin latauksiin, kun mukautettuja asetuksia ei tarvita - Rakenna verkot ohjelmallisesti käyttäen
createPolygon()mukautettuun geometriaan - Käytä
.glblaajennusta kompaktin binäärisen glTF-tulosteen luomiseen - Tarkista
node.getEntity() != nullennen muuntamista - STL-vienti tekee ei kolmiomittaa polygonin pinnat automaattisesti. Binäärinen STL-vienti kirjoittaa vain kunkin polygonin pinnan ensimmäiset 3 kärkeä — nelikulmaiset tai n-gon-pinnat katkaistaan hiljaisesti. ASCII STL -vienti kirjoittaa kaikki kärkipisteiden indeksit, mikä tuottaa virheellisiä facet-lohkoja ei‑kolmiopinnoille. Aina lähetä esikolmiomitetut verkot (kaikki kolmiopinnat) STL-vienille tietojen menetyksen tai virheellisen tulosteen välttämiseksi.
Yleisiä ongelmia
| Ongelma | Syy | Korjaus |
|---|---|---|
| Poikkeus latauksessa | Ei‑tuettu tai vioittunut tiedosto | Varmista, että tiedosto avautuu 3D‑katsojassa |
| Puuttuvat materiaalit OBJ:n latauksen jälkeen | .mtl Tiedostoa ei löydy | Aseta .mtl vieressä .obj; varmista, että materiaalit on otettu käyttöön |
| Mittakaavan epäsopivuus tuonnin jälkeen | Eri yksikköjärjestelmät | Käytä Transform mittakaava latauksen jälkeen |
FAQ
Kuinka tunnistan tiedoston formaatin?
FileFormat format = FileFormat.detect("unknown.bin");
System.out.println(format.getExtension());Voinko ladata virrasta?
Kyllä. scene.open() hyväksyy InputStream.
Mitkä formaatit tukevat sekä tuontia että vientiä?
OBJ, STL ja glTF/GLB tukevat molempia suuntia. FBX on vain tuonti; vientiä ei ole toteutettu FOSS-versiossa.
API-viitteiden yhteenveto
| Luokka / Metodi | Kuvaus |
|---|---|
Scene | Ylätason 3D‑kohtauksen säiliö |
scene.open() | Lataa 3D‑tiedosto polun tai virtauksen avulla |
scene.save() | Vie kohtaus tiedostoon tai virtaukseen |
Scene.fromFile() | Staattinen tehdas, joka lataa ja palauttaa Scene |
Node | Kohtauksen hierarkian solmu |
node.createChildNode() | Luo ja liitä lapsisolmu |
Mesh | Polygoniverkko, jossa on ohjauspisteet ja kasvotlistat |
mesh.createPolygon() | Määritä polygonin pinta |
Mesh.toMesh() | Muunna tai kloonaa verkon geometria |
Transform | Paikallinen siirto, kierto ja skaalaus |
FileFormat | Rekisteri ja formaattien tunnistin |