Funkce a vlastnosti

Funkce a vlastnosti

Tato stránka pokrývá každou hlavní oblast funkcí aspose-3d-foss 26.1.0 s funkčními příklady Java.


Načítání a ukládání scén

scene.open() načte soubor; scene.save() exportuje jej:

import com.aspose.threed.Scene;

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

Alternativa statické továrny:

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

Formátově specifické možnosti

Předat LoadOptions nebo SaveOptions podtřídy pro detailní kontrolu:

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

Poznámka: FBX je podporováno pouze pro import; export FBX není ve verzi FOSS implementován. Pouze binární FBX soubory jsou podporovány pro import — ASCII FBX vyvolá ImportException.


Vytváření grafu scény

Vytvořte uzly a připojte entity:

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

Operace s meshem

Vytvořte Mesh programově s řídicími body a polygony:

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

Transformace

Každý Node nese a Transform:

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

Číst world-space pomocí node.getGlobalTransform().getMatrix().


Materiály

Přiřaďte materiály uzlům:

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

Typy materiálů: Material (základ), PbrMaterial (PBR metallic-roughness).


Tipy a osvědčené postupy

  • Použijte Scene.fromFile() pro jednorázové načtení, když nejsou potřeba vlastní možnosti
  • Vytvářejte sítě programově pomocí createPolygon() pro vlastní geometrii
  • Použijte .glb rozšíření pro kompaktní binární výstup glTF
  • Zkontrolujte node.getEntity() != null před přetypováním
  • Export STL ne triangulovat polygonální plochy automaticky. Binární export STL zapisuje pouze první 3 vrcholy každé polygonální plochy — čtyřúhelníkové nebo n‑úhelníkové plochy jsou tiše zkráceny. ASCII export STL zapisuje všechny indexy vrcholů, což vytváří poškozené bloky faset pro ne‑trojúhelníkové plochy. Vždy předávejte předem triangulované sítě (všechny plochy jsou trojúhelníky) do exportu STL, aby nedošlo ke ztrátě dat nebo neplatnému výstupu.

Běžné problémy

ProblémPříčinaOprava
Výjimka při načítáníNepodporovaný nebo poškozený souborOvěřte, že se soubor otevře ve 3D prohlížeči
Chybějící materiály po načtení OBJ.mtl soubor nenalezenUmístit .mtl vedle .obj; zajistěte, aby materiály byly povoleny
Neshoda měřítka po importuRůzné systémy jednotekPoužijte Transform měřítko po načtení

FAQ

Jak zjistím formát souboru?

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

Mohu načíst ze streamu?

Ano. scene.open() přijímá InputStream.

Které formáty podporují jak import, tak export?

Formáty OBJ, STL a glTF/GLB podporují obě směry. FBX je pouze pro import; export není implementován ve verzi FOSS.


Shrnutí referenčního API

Třída / MetodaPopis
SceneKontejner 3D scény nejvyšší úrovně
scene.open()Načtěte 3D soubor podle cesty nebo proudu
scene.save()Exportujte scénu do souboru nebo proudu
Scene.fromFile()Statická tovární metoda pro načtení a vrácení Scene
NodeUzel hierarchie scény
node.createChildNode()Vytvořte a připojte podřízený uzel
MeshPolygonová síť s kontrolními body a seznamy ploch
mesh.createPolygon()Definovat polygonální plochu
Mesh.toMesh()Převést nebo klonovat geometrii sítě
TransformLokální posunutí, rotace a měřítko
FileFormatRegistr a detektor formátů
 Čeština