Funktionen und Merkmale
Funktionen und Merkmale
Diese Seite deckt jeden wichtigen Funktionsbereich von aspose-3d-foss 26.1.0 mit funktionierenden Java-Beispielen.
Laden und Speichern von Szenen
scene.open() lädt eine Datei; scene.save() exportiert sie:
import com.aspose.threed.Scene;
Scene scene = new Scene();
scene.open("input.obj");
scene.save("output.glb");Alternative zur statischen Fabrik:
Scene scene = Scene.fromFile("input.fbx");
scene.save("output.stl");Formatbezogene Optionen
Übergeben LoadOptions oder SaveOptions Unterklassen für feinkörnige Steuerung:
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);Hinweis: FBX wird nur für den Import unterstützt; FBX-Export ist in der FOSS-Version nicht implementiert. Nur binäres FBX Dateien werden für den Import unterstützt — ASCII FBX wirft einen Fehler ImportException.
Erstellen eines Szenengraphen
Knoten erstellen und Entitäten anhängen:
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-Operationen
Erstelle ein Mesh programmgesteuert mit Kontrollpunkten und Polygonen:
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);Transformationen
Jeder Node trägt ein Transform:
Node node = scene.getRootNode().createChildNode("moved", new Mesh());
node.getTransform().setTranslation(10, 0, 5);
node.getTransform().setScale(2, 2, 2);Lese den Weltraum über node.getGlobalTransform().getMatrix().
Materialien
Materialien den Knoten zuweisen:
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);Materialtypen: Material (Basis), PbrMaterial (PBR metallic-roughness).
Tipps und bewährte Verfahren
- Verwenden
Scene.fromFile()für einzeilige Ladevorgänge, wenn keine benutzerdefinierten Optionen benötigt werden - Erstelle Meshes programmgesteuert mit
createPolygon()für benutzerdefinierte Geometrie - Verwende
.glbErweiterung für kompakte binäre glTF-Ausgabe - Überprüfe
node.getEntity() != nullvor dem Casten - STL-Export führt nicht Polygonflächen automatisch triangulieren. Der binäre STL-Export schreibt nur die ersten 3 Scheitelpunkte jeder Polygonfläche — Quad- oder n‑gon‑Flächen werden stillschweigend abgeschnitten. Der ASCII‑STL-Export schreibt alle Scheitelpunktindizes, was zu fehlerhaften Facettenblöcken für Nicht‑Dreieck‑Flächen führt. Übergebe stets vortriangulierte Meshes (nur Dreieck‑Flächen) an den STL-Export, um Datenverlust oder ungültige Ausgaben zu vermeiden.
Häufige Probleme
| Problem | Ursache | Beheben |
|---|---|---|
| Ausnahme beim Laden | Nicht unterstützte oder beschädigte Datei | Überprüfen Sie, ob die Datei in einem 3D‑Betrachter geöffnet wird |
| Fehlende Materialien nach OBJ‑Laden | .mtl Datei nicht gefunden | Platzieren .mtl neben .obj; stellen Sie sicher, dass Materialien aktiviert sind |
| Skalenabweichung nach dem Import | Unterschiedliche Einheitensysteme | Anwenden Transform Skalierung nach dem Laden |
FAQ
Wie erkenne ich das Format einer Datei?
FileFormat format = FileFormat.detect("unknown.bin");
System.out.println(format.getExtension());Kann ich aus einem Stream laden?
Ja. scene.open() akzeptiert ein InputStream.
Welche Formate unterstützen sowohl Import als auch Export?
OBJ, STL und glTF/GLB unterstützen beide Richtungen. FBX ist nur für den Import verfügbar; Export ist in der FOSS‑Version nicht implementiert.
API-Referenzübersicht
| Klasse / Methode | Beschreibung |
|---|---|
Scene | Top-Level 3D‑Szenencontainer |
scene.open() | Lade eine 3D‑Datei per Pfad oder Stream |
scene.save() | Exportiere Szene in Datei oder Stream |
Scene.fromFile() | Statische Fabrik zum Laden und Zurückgeben eines Scene |
Node | Szenenhierarchie‑Knoten |
node.createChildNode() | Erstelle und hänge einen Kindknoten an |
Mesh | Polygonnetz mit Steuerpunkten und Flächenlisten |
mesh.createPolygon() | Definiere eine Polygonfläche |
Mesh.toMesh() | Konvertiere oder klone Mesh-Geometrie |
Transform | Lokale Translation, Rotation und Skalierung |
FileFormat | Registrierung und Erkennung für Formate |