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
.glbrozšíření pro kompaktní binární výstup glTF - Zkontrolujte
node.getEntity() != nullpř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ém | Příčina | Oprava |
|---|---|---|
| Výjimka při načítání | Nepodporovaný nebo poškozený soubor | Ověřte, že se soubor otevře ve 3D prohlížeči |
| Chybějící materiály po načtení OBJ | .mtl soubor nenalezen | Umístit .mtl vedle .obj; zajistěte, aby materiály byly povoleny |
| Neshoda měřítka po importu | Různé systémy jednotek | Použ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 / Metoda | Popis |
|---|---|
Scene | Kontejner 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 |
Node | Uzel hierarchie scény |
node.createChildNode() | Vytvořte a připojte podřízený uzel |
Mesh | Polygonová síť s kontrolními body a seznamy ploch |
mesh.createPolygon() | Definovat polygonální plochu |
Mesh.toMesh() | Převést nebo klonovat geometrii sítě |
Transform | Lokální posunutí, rotace a měřítko |
FileFormat | Registr a detektor formátů |