Z przyjemnością informujemy o dostępności Aspose.3D FOSS dla Java - darmowa, otwarta biblioteka do pracy z formatami plików 3D w aplikacjach Java. Zbudowana jako czyste rozwiązanie Java bez uzależnień, biblioteka działa na Java 21 i później, dzięki czemu jest dostępna dla szerokiego zakresu projektów i środowisk.
Ten post przechodzi przez to, co biblioteka oferuje, jak zacząć i gdzie się tu dostać.
Co to jest Aspose.3D FOSS dla Java?
Aspose.3D FOSS dla Java to lekka biblioteka przetwarzania plików 3D opublikowana w ramach Licencja MIT.Zapewnia API grafiki sceny, która pozwala na ładowanie, przeglądanie, przekształcenie i przechowywanie modeli 3D w kilku szeroko stosowanych formach. Biblioteka jest w całości napisana w Java i nie wymaga zewnętrznych domowych binariów ani konfiguracji specyficznych dla platform.
Kod źródłowy jest dostępny na GitHub: HTTPS://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
Kluczowe podkreślenia
- czysty Java - żadne JNI, żadne domowe biblioteki, żadne ograniczenia platformowe.
- JAZA 21+ i kompatybilne.
- MIT licencjonowany - wykorzystywać je w projektach osobistych, komercyjnych lub własnych bez ograniczeń.
- Architektura scenografów - znane drzewo z węzłów, łokci, kamer i materiałów.
- Wielograniczna obsługa - czytaj i pisz pliki OBJ, STL, glTF 2.0 i GLB; czytanie plików FBX.
Szybki start
Maven Instalacja
Dodaj następującą zależność do Twojego pom.xml:
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.5.0</version>
</dependency>Twoja pierwsza konwersja
Najprostszym sposobem użycia jest pobieranie pliku 3D w jednym formacie i przechowywanie go w innym. oto dwustronną konwersję z OBJ do STL:
import com.aspose.threed.*;
public class QuickConvert {
public static void main(String[] args) throws Exception {
Scene scene = Scene.fromFile("cube.obj");
scene.save("output.stl");
}
}
i The Scene Klasa jest centralnym punktem wejścia. wezwanie Scene.fromFile() z trasy pliku do ładowania modelu, a następnie zadzwonić save() z trasy docelowej. biblioteka wkłada format z rozszerzenia pliku.
Tworzenie sceny z Scratch
Możesz również tworzyć sceny programicznie:
import com.aspose.threed.*;
public class BuildScene {
public static void main(String[] args) throws Exception {
Scene scene = new Scene();
Node node = scene.getRootNode().createChildNode("Box");
Transform t = node.getTransform();
t.setTranslation(1, 2, 3);
scene.save("scene.gltf");
}
}
Tworzy to nową scenę, dodaje w korzenie dziecko zwanego „Kasa”, pozycjonuje ją na koordynach (1, 2, 3), a wyniki eksportowa jako plik glTF.
Opcje opcjonalne z opcjami formatowymi
Kiedy potrzebujesz lepszej kontroli nad procesem ładowania, każdy format zapewnia specjalną klasę opcji. Na przykład, ładowanie pliku STL z wyraźnymi opcjami:
import com.aspose.threed.*;
public class LoadWithOptions {
public static void main(String[] args) throws Exception {
StlLoadOptions opts = new StlLoadOptions();
Scene scene = Scene.fromFile("part.stl", opts);
// Inspect the loaded scene
System.out.println("Root children: "
+ scene.getRootNode().getChildNodes().size());
// Re-export as OBJ
scene.save("part.obj");
}
}
i The Scene.fromFile() Metoda statyczna akceptuje dowolny z typów opcji ładowania: ObjLoadOptions, StlLoadOptions, GltfLoadOptions,lub FbxLoadOptions.
Przejście przez scenę grafiki
Po załadowaniu sceny, można przejść przez drzewo węzłów, aby sprawdzić lub modyfikować jego treści:
import com.aspose.threed.*;
public class TraverseScene {
public static void main(String[] args) throws Exception {
Scene scene = Scene.fromFile("model.gltf");
for (Node child : scene.getRootNode().getChildNodes()) {
System.out.println("Node: " + child.getName());
Transform t = child.getTransform();
System.out.println(" Translation: " + t.getTranslation());
Entity entity = child.getEntity();
if (entity instanceof Mesh) {
Mesh mesh = (Mesh) entity;
System.out.println(" Vertices: "
+ mesh.getControlPoints().size());
}
}
}
}
Ten wzór jest przydatny do debiutowania, generowania raportów dotyczących treści modelu lub selektywnej modyfikacji części sceny przed ponownym eksportowaniem.
Wdrażanie transformatorów
Pozycjonowanie węzłów w przestrzeni 3D odbywa się poprzez Transform Obiekt na każdym Node:
import com.aspose.threed.*;
public class TransformExample {
public static void main(String[] args) throws Exception {
Scene scene = new Scene();
Node parent = scene.getRootNode().createChildNode("Parent");
parent.getTransform().setTranslation(10, 0, 0);
Node child = parent.createChildNode("Child");
child.getTransform().setTranslation(5, 0, 0);
child.getTransform().setScale(2, 2, 2);
// Child's world position is (15, 0, 0) due to
// parent-child transform inheritance
scene.save("transformed.gltf");
}
}
Transformacje są zgodne ze standardowym modelem dziedziczenia rodziców i dzieci: światowo-społeczna pozycja dziecka jest kombinacją jego lokalnej transformacji, a każdy przodek przekształca się aż do korzeni.
Co jest włączone
Biblioteka łodzi z skoncentrowanym zestawem możliwości zaprojektowanych wokół 3D sceny-grafia modelu.
Sceny Graph
Grafika sceny jest tło API. Każdy plik 3D jest reprezentowany jako struktura drzewa:
| Klasa | Rola |
|---|---|
Scene | Konteyner najwyższego poziomu; korzenie grafu sceny |
Node | Nazwana pozycja w drzewie; trzyma transformy i uderzenia dziecięce |
Entity | Abstrakcyjna baza dla obiektów wizualnych przymocowanych do węzłów |
Mesh | geometryka poligonalna - piony, twarze, normalne |
Camera | Definicja wirtualnej kamery |
Transform | Lokalna tłumaczenie, rotacja i skalę dla nodu |
GlobalTransform | Transformacja kosmiczna świata |
Materiały
Biblioteka dostarcza modelu materiału PBR (Fizyjnie oparte renderowanie):
- PbrMaterial - materiał renderujący na podstawie fizycznej z albedo, metalowością, grubością i kolorem emisyjnym oraz przejrzystością. jest to jedyna klasę materiałów konkretnych dostępna w wersji Java.
Matematyczne Utilities
i The com.aspose.threed W pakietie znajdują się podstawowe elementy matematyki:
- Wektor 3 - 3-komponentowy wektor dla pozycji, kierunków i kolorów.
- Matrix 4 - 4x4 matryca transformacyjna.
- kwaterum - reprezentacja rotacji w kierunku.
- BoundingBox - okrągła skrzynia graniczna do pytań kosmicznych.
Vector3 a = new Vector3(1, 0, 0);
Vector3 b = new Vector3(0, 1, 0);
Vector3 c = Vector3.add(a, b); // (1, 1, 0)
Opcje pobierania i oszczędzania
Każdy format ma dedykowane klasy opcji, które pozwalają kontrolować zachowanie importu i eksportu:
| Formatowanie | Opcje ładowania | Zostaw opcje |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| GST / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | (tylko przywożone na rynku) |
Na przykład, aby eksportować glTF z ładnie drukowanym JSON i systemem koordynacji flipped:
GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);
scene.save("output.gltf", opts);
Wspierane formaty
Poniższa tabela przedstawia formaty, które Aspose.3D FOSS dla Java może czytać i pisać.
| Formatowanie | Rozszerzenie | Importowanie | Eksporty | Notatki |
|---|---|---|---|---|
| OBJ | .obj | Tak | Tak | Materiały MTL |
| STL | .stl | Tak | Tak | Binar + ASCII |
| GSTF 2.0 | .gltf | Tak | Tak | Format JSON |
| GLB | .glb | Tak | Tak | Opcje binarne GlTF za pośrednictwem GltfSaveOptions |
| FBX | .fbx | Tak | Nie | tylko importowane |
OBJ, STL, glTF i GLB obsługują zarówno ładowanie jak i oszczędności. FBX jest obsługiwany tylko do importu.
Formaty wybranego przewodnika
Wybór odpowiedniego formatu zależy od Państwa przypadku użytkowania:
- OBJ Idealny, gdy potrzebujesz maksymalnej kompatybilności między narzędziami 3D. Prawie każda aplikacja modelowania może czytać i pisać OBJ. Działa dobrze na wymianę danych z mesh, ale przynosi tylko podstawowe informacje materiałowe za pośrednictwem plików MTL towarzyszy.
- STL jest formatem wyboru dla przenośnych procesów pracy 3D. przechowuje surową geometrię trójkątną bez materiałów lub hierarchii sceny, co jest dokładnie tym, czego oczekuje oprogramowanie ślizgowe. Jeśli twój rurociąg kończy się na drukarce 3d, STL jest prostym wyborem.
- GTTF Jest to nowoczesny standard dla sieci i 3D w czasie rzeczywistym. obsługuje materiały PBR, pełne hierarchie sceny i jest przeznaczony do efektywnego przekazywania. użyj glTF podczas budowy przeglądarek internetowych, pracując z three.js lub Babylon.JS, lub celowanie dowolnego rurociągu renderowania w momencie rzeczywisty.
- FBX jest głęboko zintegrowany w rozwoju gier i cyfrowej tworzenia treści. wspiera bogate dane sceny, w tym hierarchii i materiałów. Aspose.3D FOSS dla Java obsługuje FBX tylko importowane - użyj go do ładowania aktywów FBX i konwertowania ich w innych formach.
Znane ograniczenia
Ważne jest, aby zauważyć, że Scene.render() Jest Nie wspierane W tym artykule, w którym nazywa się to metoda, będzie UnsupportedOperationException.Biblioteka jest przeznaczona do przetwarzania 3D opartego na plikach - ładowania, manipulacji, transformacji i oszczędzania modeli - zamiast renderowania w czasie rzeczywistym do wyświetlacza.
Open Source i licencje
Aspose.3D FOSS dla Java jest wydany w ramach Licencja MIT.Oznacza to, że jesteś wolny od:
- Korzystaj z biblioteki w aplikacjach komercyjnych i własnych.
- Zmień kod źródłowy, aby dopasować się do Twoich potrzeb.
- Rozprowadź bibliotekę jako część własnego oprogramowania.
Nie ma opłat za royalty, nie ma ograniczeń użytkowania i nie istnieją wymogi przyznania poza tym, co określa licencja MIT.
Pełny kod źródłowy jest hostowany na GitHub, a wkład jest mile widziany: HTTPS://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
Wymagania systemowe
| Wymagania | Szczegóły |
|---|---|
| Wersja Java | 21 or later |
| uzależnienia | Nie ma czystej Java (Pure Java) |
| Platformy | Każda platforma, która prowadzi JVM |
| Buduj narzędzie | Maven (rekomendowany ) |
Zaczyna się
Oto zasoby, które pomogą Ci wstać i biegać:
- Dokumenty - kompleksowe przewodniki i przejścia API są dostępne na Strona dokumentacji Aspose.3D.
- bazy wiedzy - praktyczne jak do artykułów i wskazówki dotyczące rozwiązywania problemów w Wygląda na to, że 3D KB.
- Referencje API - szczegółowe klasy i metody odniesienia do Aspose.3D API Referencje.
- Kod źródłowy - przeglądaj i przyczyniaj się do GitHub.
- Maven Centralna - pakiet został opublikowany jako
org.aspose:aspose-3d-foss:26.5.0w centrum Maven.
Często używane przypadki
Oto kilka praktycznych scenariuszy, w których Aspose.3D FOSS dla Java dobrze pasuje:
Formaty konwersji rur
Wiele zespołów otrzymuje aktywa 3D w jednym formacie, ale potrzebuje ich w innym. zespół projektowy może pracować w FBX, podczas gdy zespolenie sieci Web potrzeba glTF. Biblioteka pozwala zbudować automatyczne rury konwersji:
// Convert all incoming FBX assets to GLB for the web team
Scene scene = Scene.fromFile("asset.fbx");
GltfSaveOptions opts = new GltfSaveOptions();
opts.setContentType(FileContentType.BINARY);
scene.save("asset.glb", opts);
3D Model Inspection and Validation
Przed zintegrowaniem aktywów 3D w aplikacji, możesz chcieć uwzględnić ich zawartość - sprawdzenie liczby punktów, weryfikacja geometrii lub potwierdzenie obecności oczekiwanych elementów:
Scene scene = Scene.fromFile("model.obj");
int nodeCount = scene.getRootNode().getChildNodes().size();
System.out.println("Top-level nodes: " + nodeCount);
for (Node child : scene.getRootNode().getChildNodes()) {
if (child.getEntity() instanceof Mesh) {
Mesh mesh = (Mesh) child.getEntity();
System.out.println(child.getName() + ": "
+ mesh.getControlPoints().size() + " vertices");
}
}
Zgromadzenie Sceny
Możesz pobrać kilka modeli i połączyć je w jedną scenę:
Scene scene = new Scene();
Scene part1 = Scene.fromFile("chassis.obj");
Scene part2 = Scene.fromFile("wheels.obj");
// Add nodes from each part into the combined scene
for (Node child : part1.getRootNode().getChildNodes()) {
scene.getRootNode().getChildNodes().add(child);
}
for (Node child : part2.getRootNode().getChildNodes()) {
scene.getRootNode().getChildNodes().add(child);
}
scene.save("assembled.gltf");
Co jest następne
W kolejnych wpisach będziemy obejmować:
- Głębokie wchłanianie do kluczowych cech API scenografu, materiałów i narzędzi matematycznych.
- Praktyczny przewodnik do pracy z każdym obsługiwanym formatem 3D - OBJ, STL, glTF i FBX - w tym opcjami ładowania / oszczędzania oraz wzory konwersji batch.
Pozostań wstrząśnięty i czuj się wolny, aby odkryć bibliotekę i udostępnić swoje opinie na GitHub.