Funksjoner og funksjonalitet

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 .glb filendelse for kompakt binær glTF‑utdata
  • Sjekk node.getEntity() != null fø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ÅrsakLøsning
Unntak ved lastingUstøttet eller korrupt filVerifiser at filen åpnes i en 3D-viser
Manglende materialer etter OBJ-lastning.mtl fil ikke funnetPlass .mtl ved siden av .obj; sørg for at materialer er aktivert
Skalaavvik etter importUlike enhetssystemerBruk 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 / MetodeBeskrivelse
SceneToppnivå 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
NodeScenehierarki-node
node.createChildNode()Opprett og fest en undernode
MeshPolygonnett med kontrollpunkter og fliselister
mesh.createPolygon()Definer en polygonflate
Mesh.toMesh()Konverter eller klon nettgeometri
TransformLokal translasjon, rotasjon og skalering
FileFormatRegister og detektor for formater
 Norsk