Functies en functionaliteiten
Functies en functionaliteiten
Deze pagina behandelt elk belangrijk functiegebied van aspose-3d-foss 26.1.0 met werkende Java-voorbeelden.
Scènes laden en opslaan
scene.open() laadt een bestand; scene.save() exporteert het:
import com.aspose.threed.Scene;
Scene scene = new Scene();
scene.open("input.obj");
scene.save("output.glb");Statische factory-alternatief:
Scene scene = Scene.fromFile("input.fbx");
scene.save("output.stl");Formaat-specifieke opties
Doorgeven LoadOptions of SaveOptions subklassen voor fijnmazige controle:
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);Opmerking: FBX wordt alleen ondersteund voor import; FBX-export is niet geïmplementeerd in de FOSS-versie. Alleen binaire FBX bestanden worden ondersteund voor import — ASCII FBX veroorzaakt ImportException.
Een scène‑grafiek opbouwen
Maak knooppunten aan en koppel entiteiten:
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‑operaties
Maak een Mesh programmeringsmatig met controlepunten en 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);Transformaties
Elke Node bevat een Transform:
Node node = scene.getRootNode().createChildNode("moved", new Mesh());
node.getTransform().setTranslation(10, 0, 5);
node.getTransform().setScale(2, 2, 2);Lees wereldruimte via node.getGlobalTransform().getMatrix().
Materialen
Wijs materialen toe aan knooppunten:
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);Materiaaltypen: Material (basis), PbrMaterial (PBR metallic-roughness).
Tips en best practices
- Gebruik
Scene.fromFile()voor eenregelige loads wanneer aangepaste opties niet nodig zijn - Bouw meshes programmatisch met
createPolygon()voor aangepaste geometrie - Gebruik
.glbextensie voor compacte binaire glTF-uitvoer - Controleer
node.getEntity() != nullvoordat je cast - STL-export doet niet automatisch polygonvlakken trianguleren. Binaire STL-export schrijft alleen de eerste 3 vertices van elk polygonvlak — quad- of n-gonvlakken worden stilzwijgend afgekapt. ASCII STL-export schrijft alle vertex-indexen, wat misvormde facetblokken oplevert voor niet-driehoekige vlakken. Geef altijd vooraf getrianguleerde meshes (alleen driehoekige vlakken) door aan STL-export om gegevensverlies of ongeldige output te voorkomen.
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
| Uitzondering bij laden | Niet-ondersteund of beschadigd bestand | Controleer of het bestand opent in een 3D-viewer |
| Ontbrekende materialen na het laden van OBJ | .mtl bestand niet gevonden | Plaats .mtl naast .obj; zorg ervoor dat materialen zijn ingeschakeld |
| Schaal mismatch na import | Verschillende eenheidssystemen | Pas een Transform schaal na het laden |
FAQ
Hoe detecteer ik het formaat van een bestand?
FileFormat format = FileFormat.detect("unknown.bin");
System.out.println(format.getExtension());Kan ik laden vanaf een stream?
Ja. scene.open() accepteert een InputStream.
Welke formaten ondersteunen zowel import als export?
OBJ, STL en glTF/GLB ondersteunen beide richtingen. FBX is alleen import; export is niet geïmplementeerd in de FOSS‑versie.
API-referentieoverzicht
| Klasse / Methode | Beschrijving |
|---|---|
Scene | Topniveau 3D‑scènecontainer |
scene.open() | Laad een 3D‑bestand via pad of stream |
scene.save() | Exporteer scène naar bestand of stream |
Scene.fromFile() | Statische fabriek om te laden en een Scene |
Node | Scènehiërarchieknooppunt |
node.createChildNode() | Maak en koppel een kindknooppunt |
Mesh | Polygonmesh met controlepunten en vlaklijsten |
mesh.createPolygon() | Definieer een polygonvlak |
Mesh.toMesh() | Converteer of kloon mesh-geometrie |
Transform | Lokale translatie, rotatie en schaal |
FileFormat | Register en detector voor formaten |