Funktioner og funktionaliteter
Funktioner og funktionaliteter
Denne side dækker alle de vigtigste funktionsområder for aspose-3d-foss 26.1.0 med fungerende Java eksempler.
Indlæsning og gemning af scener
scene.open() indlæser en fil; scene.save() eksporterer den:
import com.aspose.threed.Scene;
Scene scene = new Scene();
scene.open("input.obj");
scene.save("output.glb");Statisk fabriksalternativ:
Scene scene = Scene.fromFile("input.fbx");
scene.save("output.stl");Format‑specifikke indstillinger
Pass LoadOptions eller SaveOptions subklasser for finjusteret kontrol:
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);Bemærk: FBX understøttes kun for import; FBX-eksport er ikke implementeret i FOSS‑versionen. Kun binær FBX filer understøttes for import — ASCII FBX giver en fejl ImportException.
Opbygning af en scenegraf
Opret noder og tilknyt enheder:
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‑operationer
Opret en Mesh programmatisk med kontrolpunkter 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);Transformationer
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);Læs 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);Materialetyper: Material (base), PbrMaterial (PBR metallic-roughness).
Tips og bedste praksis
- Brug
Scene.fromFile()til én-liners indlæsning når brugerdefinerede indstillinger ikke er nødvendige - Byg mesh’er programmatisk med
createPolygon()til brugerdefineret geometri - Brug
.glbudvidelse til kompakt binær glTF-uddata - Tjek
node.getEntity() != nullfør du caster - STL-eksport gør ikke triangulere polygonflader automatisk. Binær STL-eksport skriver kun de første 3 vertexer for hver polygonflade — firkant- eller n-gon-flader bliver tavst afkortet. ASCII STL-eksport skriver alle vertex-indekser, hvilket producerer fejlbehæftede facetblokke for ikke-trekantede flader. Overfør altid forud-triangulerede mesh’er (alle trekantede flader) til STL-eksport for at undgå datatab eller ugyldig output.
Almindelige problemer
| Problem | Årsag | Løsning |
|---|---|---|
| Undtagelse ved indlæsning | Ikke-understøttet eller beskadiget fil | Bekræft, at filen åbnes i en 3D‑viewer |
| Manglende materialer efter OBJ-indlæsning | .mtl fil ikke fundet | Placér .mtl ved siden af .obj; sørg for at materialer er aktiveret |
| Skala uoverensstemmelse efter import | Forskellige enhedssystemer | Anvend en Transform skala efter indlæsning |
FAQ
Hvordan kan jeg opdage en fils format?
FileFormat format = FileFormat.detect("unknown.bin");
System.out.println(format.getExtension());Kan jeg indlæse fra en stream?
Ja. scene.open() accepterer en InputStream.
Hvilke formater understøtter både import og eksport?
OBJ, STL og glTF/GLB understøtter begge retninger. FBX er kun import; eksport er ikke implementeret i FOSS‑versionen.
API-referencens oversigt
| Klasse / Metode | Beskrivelse |
|---|---|
Scene | Top‑niveau 3D scenecontainer |
scene.open() | Indlæs en 3D‑fil via sti eller stream |
scene.save() | Eksporter scene til fil eller stream |
Scene.fromFile() | Statisk fabrik til at indlæse og returnere en Scene |
Node | Scene‑hierarki‑node |
node.createChildNode() | Opret og vedhæft en undernode |
Mesh | Polygonmesh med kontrolpunkter og fladelister |
mesh.createPolygon() | Definér en polygonflade |
Mesh.toMesh() | Konvertér eller dupliker mesh-geometri |
Transform | Lokal translation, rotation og skalering |
FileFormat | Register og detektor for formater |