Kako učitati 3D modele u Java
aspose-3d-foss za Java pruža jednostavno API za otvaranje 3D datoteka. Nakon učitavanja datoteke u a Scene objekt možete proći hijerarhiju čvorova i pročitati podatke o geometriji.
Vodič korak po korak
Korak 1: Instalirajte paket
Dodajte Maven ovisnost:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.1.0</version>
</dependency>Korak 2: Uvezite klasu Scene
import com.aspose.threed.Scene;
import com.aspose.threed.Node;
import com.aspose.threed.Mesh;Korak 3: Učitajte datoteku
Scene scene = new Scene();
scene.open("model.obj");Ili upotrijebite statičku tvornicu:
Scene scene = Scene.fromFile("model.obj");Podržani formati: OBJ, STL, glTF 2.0 / GLB, FBX (samo binarni — ASCII FBX nije podržan i baca ImportException).
Korak 4: Prođite kroz čvorove scene
void walk(Node node, int depth) {
String indent = " ".repeat(depth * 2);
System.out.println(indent + "Node: " + node.getName());
for (Node child : node.getChildNodes()) {
walk(child, depth + 1);
}
}
walk(scene.getRootNode(), 0);Korak 5: Pristupite podacima o mreži
for (Node node : scene.getRootNode().getChildNodes()) {
if (node.getEntity() instanceof Mesh) {
Mesh mesh = (Mesh) node.getEntity();
System.out.println("Mesh '" + node.getName() + "': " +
mesh.getControlPoints().size() + " vertices, " +
mesh.getPolygonCount() + " polygons");
}
}Uobičajeni problemi i rješenja
Izuzetak pri učitavanju
Provjerite da datoteka nije oštećena i da je format podržan (OBJ, STL, glTF, FBX).
NullPointerException pri pristupu entitetu
Nije svaki čvor nosi geometriju. Uvijek provjerite node.getEntity() instanceof Mesh prije kastiranja.
Nesklad koordinatnog sustava
Koristite ObjLoadOptions.setFlipCoordinateSystem(true) ili primijenite rotaciju nakon učitavanja.
Često postavljana pitanja (FAQ)
Koje formate mogu učitati?
OBJ, STL (binarni i ASCII), glTF 2.0 / GLB i FBX. Za FBX, samo binarni FBX je podržan. ASCII FBX datoteke će baciti ImportException("ASCII FBX format not yet supported - only binary FBX is supported").
Mogu li učitati iz InputStream-a?
Da. scene.open() prihvaća InputStream.
Je li biblioteka sigurna za višedretveno korištenje?
Svaki Scene instanca je neovisna. Učitavanje zasebnih datoteka u zasebne instance iz zasebnih niti je sigurno.