Funkcje i możliwości
Funkcje i możliwości
Ta strona obejmuje wszystkie główne obszary funkcji aspose-3d-foss 26.1.0 z działającymi przykładami Java.
Ładowanie i zapisywanie scen
scene.open() ładuje plik; scene.save() eksportuje go:
import com.aspose.threed.Scene;
Scene scene = new Scene();
scene.open("input.obj");
scene.save("output.glb");Alternatywa statycznej fabryki:
Scene scene = Scene.fromFile("input.fbx");
scene.save("output.stl");Opcje specyficzne dla formatu
Przekaż LoadOptions lub SaveOptions klasy pochodne dla precyzyjnej kontroli:
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);Uwaga: FBX jest obsługiwany tylko do importu; eksport FBX nie jest zaimplementowany w wersji FOSS. Tylko binarny FBX pliki są obsługiwane przy imporcie — ASCII FBX wywołuje błąd ImportException.
Budowanie grafu sceny
Utwórz węzły i dołącz podmioty:
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);Operacje Mesh
Utwórz Mesh programowo z punktami kontrolnymi i wielokątami:
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);Przekształcenia
Każdy Node zawiera Transform:
Node node = scene.getRootNode().createChildNode("moved", new Mesh());
node.getTransform().setTranslation(10, 0, 5);
node.getTransform().setScale(2, 2, 2);Odczytaj przestrzeń świata przez node.getGlobalTransform().getMatrix().
Materiały
Przypisz materiały do węzłów:
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 materiałów: Material (podstawowy), PbrMaterial (PBR metaliczno‑szorstkość).
Wskazówki i najlepsze praktyki
- Użyj
Scene.fromFile()do jednowierszowych ładowań, gdy nie są potrzebne niestandardowe opcje - Twórz siatki programowo przy użyciu
createPolygon()dla niestandardowej geometrii - Użyj
.glbrozszerzenia do zwartościowego binarnego wyjścia glTF - Sprawdź
node.getEntity() != nullprzed rzutowaniem - Eksport STL nie triangulować automatycznie ściany wielokątów. Eksport binarny STL zapisuje tylko pierwsze 3 wierzchołki każdej ściany wielokąta — ściany czworokątne lub n‑kątne są cicho obcinane. Eksport ASCII STL zapisuje wszystkie indeksy wierzchołków, co powoduje powstawanie nieprawidłowych bloków faset dla ścian nie‑trójkątnych. Zawsze przekazuj do eksportu STL siatki wstępnie triangulowane (wszystkie ściany trójkątne), aby uniknąć utraty danych lub nieprawidłowego wyjścia.
Typowe problemy
| Problem | Przyczyna | Napraw |
|---|---|---|
| Wyjątek podczas ładowania | Nieobsługiwany lub uszkodzony plik | Zweryfikuj, czy plik otwiera się w przeglądarce 3D |
| Brakujące materiały po załadowaniu OBJ | .mtl plik nie znaleziony | Umieść .mtl obok .obj; upewnij się, że materiały są włączone |
| Niezgodność skali po imporcie | Różne systemy jednostek | Zastosuj Transform skalę po załadowaniu |
FAQ
Jak wykryć format pliku?
FileFormat format = FileFormat.detect("unknown.bin");
System.out.println(format.getExtension());Czy mogę wczytać ze strumienia?
Tak. scene.open() przyjmuje InputStream.
Które formaty obsługują zarówno import, jak i eksport?
Obsługa formatów OBJ, STL i glTF/GLB działa w obu kierunkach. FBX jest obsługiwany tylko przy imporcie; eksport nie jest zaimplementowany w wersji FOSS.
Podsumowanie referencji API
| Klasa / Metoda | Opis |
|---|---|
Scene | Główny kontener sceny 3D |
scene.open() | Wczytaj plik 3D według ścieżki lub strumienia |
scene.save() | Eksportuj scenę do pliku lub strumienia |
Scene.fromFile() | Statyczna fabryka do wczytania i zwrócenia Scene |
Node | Węzeł hierarchii sceny |
node.createChildNode() | Utwórz i dołącz węzeł potomny |
Mesh | Siatka wielokątowa z punktami kontrolnymi i listami ścian |
mesh.createPolygon() | Zdefiniuj wielokątną ścianę |
Mesh.toMesh() | Konwertuj lub sklonuj geometrię siatki |
Transform | Lokalny przesunięcie, obrót i skalowanie |
FileFormat | Rejestr i detektor formatów |