Funktioner och funktionaliteter

Funktioner och funktionaliteter

Funktioner och funktionaliteter

Den här sidan täcker varje huvudfunktionsområde för aspose-3d-foss 26.1.0 med fungerande Java-exempel.


Laddning och sparande av scener

scene.open() läser in en fil; scene.save() exporterar den:

import com.aspose.threed.Scene;

Scene scene = new Scene();
scene.open("input.obj");
scene.save("output.glb");

Alternativ med statisk fabrik:

Scene scene = Scene.fromFile("input.fbx");
scene.save("output.stl");

Format‑specifika alternativ

Pass LoadOptions eller SaveOptions subklasser för finjusterad 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);

Obs: FBX stöds endast för import; FBX-export är inte implementerad i FOSS‑versionen. Endast binär FBX filer stöds för import — ASCII FBX kastar ImportException.


Bygga ett scen‑graf

Skapa noder och bifoga 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‑operationer

Skapa en Mesh programmerat med kontrollpunkter och 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

Varje Node bär 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().


Material

Tilldela material till 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 (bas), PbrMaterial (PBR metallic-roughness).


Tips och bästa praxis

  • Använd Scene.fromFile() för enradiga laddningar när anpassade alternativ inte behövs
  • Bygg meshar programatiskt med createPolygon() för anpassad geometri
  • Använd .glb extension för kompakt binär glTF-utdata
  • Kontrollera node.getEntity() != null innan du kastar
  • STL-export gör inte triangulera polygonytor automatiskt. Binär STL export skriver endast de första 3 vertexarna för varje polygonyta — quad eller n‑gon-ytor trunkeras tyst. ASCII STL export skriver alla vertexindex, vilket producerar felaktiga facetblock för icke‑triangelytor. Skicka alltid för‑triangulerade meshar (alla triangelytor) till STL export för att undvika dataförlust eller ogiltig utdata.

Vanliga problem

ProblemOrsakLösning
Undantag vid inläsningFil som inte stöds eller är korruptVerifiera att filen öppnas i en 3D‑visare
Material saknas efter OBJ‑laddning.mtl filen hittades intePlacera .mtl bredvid .obj; säkerställ att material är aktiverade
Skalningsfel efter importOlika enhetssystemApplicera en Transform skala efter inläsning

FAQ

Hur upptäcker jag ett fils format?

FileFormat format = FileFormat.detect("unknown.bin");
System.out.println(format.getExtension());

Kan jag ladda från en ström?

Ja. scene.open() accepterar en InputStream.

Vilka format stödjer både import och export?

OBJ, STL och glTF/GLB stöder båda riktningarna. FBX är endast import; export är inte implementerad i FOSS-versionen.


API-referenssammanfattning

Klass / MetodBeskrivning
SceneTop-nivå 3D-scenbehållare
scene.open()Läs in en 3D-fil via sökväg eller ström
scene.save()Exportera scen till fil eller ström
Scene.fromFile()Statisk fabrik för att ladda och returnera en Scene
NodeScenhierarki-nod
node.createChildNode()Skapa och fäst en barnnod
MeshPolygonnät med kontrollpunkter och ansiktslistor
mesh.createPolygon()Definiera en polygonyta
Mesh.toMesh()Konvertera eller klona nätgeometri
TransformLokal förflyttning, rotation och skalning
FileFormatRegister och detektor för format
 Svenska