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 .glb Erweiterung für kompakte binäre glTF-Ausgabe
  • Überprüfe node.getEntity() != null vor 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

ProblemUrsacheBeheben
Ausnahme beim LadenNicht 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 gefundenPlatzieren .mtl neben .obj; stellen Sie sicher, dass Materialien aktiviert sind
Skalenabweichung nach dem ImportUnterschiedliche EinheitensystemeAnwenden 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 / MethodeBeschreibung
SceneTop-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
NodeSzenenhierarchie‑Knoten
node.createChildNode()Erstelle und hänge einen Kindknoten an
MeshPolygonnetz mit Steuerpunkten und Flächenlisten
mesh.createPolygon()Definiere eine Polygonfläche
Mesh.toMesh()Konvertiere oder klone Mesh-Geometrie
TransformLokale Translation, Rotation und Skalierung
FileFormatRegistrierung und Erkennung für Formate
 Deutsch