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 .glb rozszerzenia do zwartościowego binarnego wyjścia glTF
  • Sprawdź node.getEntity() != null przed 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

ProblemPrzyczynaNapraw
Wyjątek podczas ładowaniaNieobsługiwany lub uszkodzony plikZweryfikuj, czy plik otwiera się w przeglądarce 3D
Brakujące materiały po załadowaniu OBJ.mtl plik nie znalezionyUmieść .mtl obok .obj; upewnij się, że materiały są włączone
Niezgodność skali po imporcieRóżne systemy jednostekZastosuj 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 / MetodaOpis
SceneGłó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
NodeWęzeł hierarchii sceny
node.createChildNode()Utwórz i dołącz węzeł potomny
MeshSiatka wielokątowa z punktami kontrolnymi i listami ścian
mesh.createPolygon()Zdefiniuj wielokątną ścianę
Mesh.toMesh()Konwertuj lub sklonuj geometrię siatki
TransformLokalny przesunięcie, obrót i skalowanie
FileFormatRejestr i detektor formatów
 Polski