Ominaisuudet ja toiminnot

Ominaisuudet ja toiminnot

Ominaisuudet ja toiminnot

Tämä sivu kattaa jokaisen tärkeimmän ominaisuusalueen aspose-3d-foss 26.1.0 toimivilla Java esimerkeillä.


Scenejen lataaminen ja tallentaminen

scene.open() lataa tiedoston; scene.save() vie sen:

import com.aspose.threed.Scene;

Scene scene = new Scene();
scene.open("input.obj");
scene.save("output.glb");

Staattinen tehdasvaihtoehto:

Scene scene = Scene.fromFile("input.fbx");
scene.save("output.stl");

Formaattiin perustuvat asetukset

Pass LoadOptions tai SaveOptions aliluokkia tarkkaan hallintaan:

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);

Huomaa: FBX:tä tuetaan vain tuontiin; FBX-vientiä ei ole toteutettu FOSS-versiossa. Vain binäärinen FBX tiedostoja tuetaan tuontiin — ASCII FBX aiheuttaa ImportException.


Scene‑graafin rakentaminen

Luo nodeja ja liitä entiteettejä:

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‑toiminnot

Luo Mesh ohjelmallisesti ohjauspisteillä ja monikulmioilla:

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);

Muunnokset

Jokainen Node sisältää a Transform:

Node node = scene.getRootNode().createChildNode("moved", new Mesh());
node.getTransform().setTranslation(10, 0, 5);
node.getTransform().setScale(2, 2, 2);

Lue maailmatila kautta node.getGlobalTransform().getMatrix().


Materiaalit

Aseta materiaalit solmuihin:

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);

Materiaalityypit: Material (perus), PbrMaterial (PBR metallic-roughness).


Vinkkejä ja parhaita käytäntöjä

  • Käytä Scene.fromFile() yksirivisiin latauksiin, kun mukautettuja asetuksia ei tarvita
  • Rakenna verkot ohjelmallisesti käyttäen createPolygon() mukautettuun geometriaan
  • Käytä .glb laajennusta kompaktin binäärisen glTF-tulosteen luomiseen
  • Tarkista node.getEntity() != null ennen muuntamista
  • STL-vienti tekee ei kolmiomittaa polygonin pinnat automaattisesti. Binäärinen STL-vienti kirjoittaa vain kunkin polygonin pinnan ensimmäiset 3 kärkeä — nelikulmaiset tai n-gon-pinnat katkaistaan hiljaisesti. ASCII STL -vienti kirjoittaa kaikki kärkipisteiden indeksit, mikä tuottaa virheellisiä facet-lohkoja ei‑kolmiopinnoille. Aina lähetä esikolmiomitetut verkot (kaikki kolmiopinnat) STL-vienille tietojen menetyksen tai virheellisen tulosteen välttämiseksi.

Yleisiä ongelmia

OngelmaSyyKorjaus
Poikkeus latauksessaEi‑tuettu tai vioittunut tiedostoVarmista, että tiedosto avautuu 3D‑katsojassa
Puuttuvat materiaalit OBJ:n latauksen jälkeen.mtl Tiedostoa ei löydyAseta .mtl vieressä .obj; varmista, että materiaalit on otettu käyttöön
Mittakaavan epäsopivuus tuonnin jälkeenEri yksikköjärjestelmätKäytä Transform mittakaava latauksen jälkeen

FAQ

Kuinka tunnistan tiedoston formaatin?

FileFormat format = FileFormat.detect("unknown.bin");
System.out.println(format.getExtension());

Voinko ladata virrasta?

Kyllä. scene.open() hyväksyy InputStream.

Mitkä formaatit tukevat sekä tuontia että vientiä?

OBJ, STL ja glTF/GLB tukevat molempia suuntia. FBX on vain tuonti; vientiä ei ole toteutettu FOSS-versiossa.


API-viitteiden yhteenveto

Luokka / MetodiKuvaus
SceneYlätason 3D‑kohtauksen säiliö
scene.open()Lataa 3D‑tiedosto polun tai virtauksen avulla
scene.save()Vie kohtaus tiedostoon tai virtaukseen
Scene.fromFile()Staattinen tehdas, joka lataa ja palauttaa Scene
NodeKohtauksen hierarkian solmu
node.createChildNode()Luo ja liitä lapsisolmu
MeshPolygoniverkko, jossa on ohjauspisteet ja kasvotlistat
mesh.createPolygon()Määritä polygonin pinta
Mesh.toMesh()Muunna tai kloonaa verkon geometria
TransformPaikallinen siirto, kierto ja skaalaus
FileFormatRekisteri ja formaattien tunnistin
 Suomi