Funksjoner og funksjonalitet
Funksjoner og funksjonalitet
Denne siden dekker alle hovedfunksjonsområdene til aspose-3d-foss 26.1.0 med fungerende Java-eksempler.
Laste inn og lagre scener
scene.open() laster en fil; scene.save() eksporterer den:
import com.aspose.threed.Scene;
Scene scene = new Scene();
scene.open("input.obj");
scene.save("output.glb");Statisk fabrikkalternativ:
Scene scene = Scene.fromFile("input.fbx");
scene.save("output.stl");Formatspesifikke alternativer
Pass LoadOptions eller SaveOptions subklasser for finjustert kontroll:
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);Merk: FBX støttes kun for import; FBX-eksport er ikke implementert i FOSS‑versjonen. Kun binær FBX filer støttes for import — ASCII FBX gir en feil ImportException.
Bygge en scenegraf
Opprett noder og fest enheter:
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-operasjoner
Opprett en Mesh programmatisk med kontrollpunkter og polygoner:
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);Transformasjoner
Hver Node bærer en Transform:
Node node = scene.getRootNode().createChildNode("moved", new Mesh());
node.getTransform().setTranslation(10, 0, 5);
node.getTransform().setScale(2, 2, 2);Les world-space via node.getGlobalTransform().getMatrix().
Materialer
Tildel materialer til noder:
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);Materialtyper: Material (base), PbrMaterial (PBR metallic-roughness).
Tips og beste praksis
- Bruk
Scene.fromFile()for enlinje‑innlastinger når egendefinerte alternativer ikke er nødvendig - Bygg mesh‑er programmatisk med
createPolygon()for egendefinert geometri - Bruk
.glbfilendelse for kompakt binær glTF‑utdata - Sjekk
node.getEntity() != nullfør casting - STL‑eksport gjør ikke triangulere polygonflater automatisk. Binær STL‑eksport skriver kun de første 3 hjørnene i hver polygonflate — firkant‑ eller n‑gon‑flater blir stille forkortet. ASCII STL‑eksport skriver alle vertex‑indekser, noe som gir feilformede facet‑blokker for ikke‑triangelflater. Pass alltid inn forhåndstriangulerte mesh‑er (alle triangelflater) til STL‑eksport for å unngå datatap eller ugyldig output.
Vanlige problemer
| Problem | Årsak | Løsning |
|---|---|---|
| Unntak ved lasting | Ustøttet eller korrupt fil | Verifiser at filen åpnes i en 3D-viser |
| Manglende materialer etter OBJ-lastning | .mtl fil ikke funnet | Plass .mtl ved siden av .obj; sørg for at materialer er aktivert |
| Skalaavvik etter import | Ulike enhetssystemer | Bruk en Transform skala etter lasting |
FAQ
Hvordan oppdager jeg formatet til en fil?
FileFormat format = FileFormat.detect("unknown.bin");
System.out.println(format.getExtension());Kan jeg laste fra en strøm?
Ja. scene.open() godtar en InputStream.
Hvilke formater støtter både import og eksport?
OBJ, STL og glTF/GLB støtter begge retninger. FBX er kun import; eksport er ikke implementert i FOSS‑versjonen.
API-referansesammendrag
| Klasse / Metode | Beskrivelse |
|---|---|
Scene | Toppnivå 3D-scenebeholder |
scene.open() | Last inn en 3D-fil via sti eller strøm |
scene.save() | Eksporter scene til fil eller strøm |
Scene.fromFile() | Statisk fabrikk for å laste inn og returnere en Scene |
Node | Scenehierarki-node |
node.createChildNode() | Opprett og fest en undernode |
Mesh | Polygonnett med kontrollpunkter og fliselister |
mesh.createPolygon() | Definer en polygonflate |
Mesh.toMesh() | Konverter eller klon nettgeometri |
Transform | Lokal translasjon, rotasjon og skalering |
FileFormat | Register og detektor for formater |