Functies en functionaliteiten

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 .glb extensie voor compacte binaire glTF-uitvoer
  • Controleer node.getEntity() != null voordat 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

ProbleemOorzaakOplossing
Uitzondering bij ladenNiet-ondersteund of beschadigd bestandControleer of het bestand opent in een 3D-viewer
Ontbrekende materialen na het laden van OBJ.mtl bestand niet gevondenPlaats .mtl naast .obj; zorg ervoor dat materialen zijn ingeschakeld
Schaal mismatch na importVerschillende eenheidssystemenPas 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 / MethodeBeschrijving
SceneTopniveau 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
NodeScènehiërarchieknooppunt
node.createChildNode()Maak en koppel een kindknooppunt
MeshPolygonmesh met controlepunten en vlaklijsten
mesh.createPolygon()Definieer een polygonvlak
Mesh.toMesh()Converteer of kloon mesh-geometrie
TransformLokale translatie, rotatie en schaal
FileFormatRegister en detector voor formaten
 Nederlands