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
.glbextension för kompakt binär glTF-utdata - Kontrollera
node.getEntity() != nullinnan 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
| Problem | Orsak | Lösning |
|---|---|---|
| Undantag vid inläsning | Fil som inte stöds eller är korrupt | Verifiera att filen öppnas i en 3D‑visare |
| Material saknas efter OBJ‑laddning | .mtl filen hittades inte | Placera .mtl bredvid .obj; säkerställ att material är aktiverade |
| Skalningsfel efter import | Olika enhetssystem | Applicera 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 / Metod | Beskrivning |
|---|---|
Scene | Top-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 |
Node | Scenhierarki-nod |
node.createChildNode() | Skapa och fäst en barnnod |
Mesh | Polygonnät med kontrollpunkter och ansiktslistor |
mesh.createPolygon() | Definiera en polygonyta |
Mesh.toMesh() | Konvertera eller klona nätgeometri |
Transform | Lokal förflyttning, rotation och skalning |
FileFormat | Register och detektor för format |