Ми з нетерпінням чекаємо на доступність 3D FOSS для Java - безкоштовна, відкрита бібліотека для роботи з форматами файлів 3D в Java додатках. побудована як чисте Java рішення без корінних залежності, бібліотека працює на Java 21 і пізніше, що робить її доступною для широкого спектру проектів і середовищ.
Цей пост проходить через те, що бібліотека пропонує, як почати і куди піти звідси.
Що таке 3D FOSS для Java?
Aspose.3D FOSS для Java - це легка бібліотека обробки файлів 3D, опублікована під Ліцензія.Він забезпечує API-сцені, що дозволяє завантажувати, інспекціювати, трансформувати і зберігати 3D-моделі в кількох широко використовуваних форматах. Бібліотека повністю написана в Java і не вимагає зовнішніх корінних бінарних або платформово-специфічних конфігурацій.
Джерело коду доступно на GitHub: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
Ключові підсилки
- Чиста Java — немає JNI, ні корінних бібліотек, ніяких платформ обмежень.
- Ява 21+ і компактних.
- Міт ліцензований - використовувати його в особистих, комерційних або власних проектах без обмежень.
- Сцена-граф архітектури - знайоме дерево вузлів, мечетей, камер і матеріалів.
- Мултиформатна підтримка - читати і писати OBJ, STL, GLTF 2.0 та GLB файли; читання FBX файлів.
Швидкий старт
Мавзона установка
Додайте наступну залежність до вашого pom.xml:
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.5.0</version>
</dependency>Ваша перша конверсія
Найпростіший спосіб використання - завантажити 3D-файл в одному форматі і зберегти його в іншому. ось двостороння конверсія з OBJ до 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");
}
}
І те Scene Університет є центральною точкою вступу. Scene.fromFile() з файловою дорогою для завантаження моделі, а потім викликати save() Бібліотека вводить формат з розширення файлу.
Створення сцені з Scratch
Також можна програмувати сцену:
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");
}
}
Це створює нову сцену, додає дитячий ящик під корінням під назвою «Карта», позиціонує його в координатах (1, 2, 3), і експортує результат як файл glTF.
Завантажити з формат-специфічні варіанти
Коли вам потрібен більш тонкий контроль над процесом завантаження, кожен формат надає спеціальний клас варіантів. Наприклад, зарядка файлу STL з експлицитними варіантми:
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");
}
}
І те Scene.fromFile() Статичний метод приймає будь-який з типів опціонів завантаження: ObjLoadOptions, StlLoadOptions, GltfLoadOptions,або FbxLoadOptions.
Перехід через сцену графік
Після того, як сцену завантажують, ви можете прогулятися по дереві ноду для перевірки або зміни її змісту:
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());
}
}
}
}
Цей шаблон корисний для дебагування, генерування звітів про зміст моделей або селективної модифікації частин сцені перед переекспортом.
Використання трансформацій
Позиціонування вузлів у 3D-простір здійснюється через Transform Об’єкт на кожній 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");
}
}
Трансформації слідують стандартній моделі батьків-діти спадщини: світо-простір положення дитини є поєднанням його місцевої трансформацій і всі предки трансформуються до кореня.
Що включається
Бібліотека має концентрований набір можливостей, розроблених навколо 3D-сцена-графічного моделі.
Сцена графік
Графік сцені є задньою частиною API. Кожен 3D-файл представлений як дерев’яний склад:
| Класика | Роль |
|---|---|
Scene | Контейнер верхнього рівня; корінь сценічного графіку |
Node | Названа позиція в дереві; тримає трансформації і дитячі вузли |
Entity | Абстрактна база для візуальних об’єктів, прикріплених до вузлів |
Mesh | Полігональна геометрія — вертикали, обличчя, нормальні |
Camera | Визначення віртуальних камер |
Transform | Місцевий переклад, ротація та масштаби для ноду |
GlobalTransform | Комп’ютерний Всесвіт-простір трансформації |
Матеріали
Бібліотека надає матеріальний модель PBR (Фізично заснований рендеринг):
- PbrMaterial - фізично заснований рендеринг-матеріал з албедо, металізмом, груботою, викидаючим кольором і прозорості.Це єдиний конкретний матеріальний клас доступний в Java Edition.
Математичні інструменти
І те com.aspose.threed У пакеті входять основні математичні примітиви:
- Вектор 3 3-компонентний вектор для позицій, напрямків і кольорів.
- Матрика 4 4x4 трансформаційна матриця.
- Кватерніон Ротаційна представництво .
- BoundingBox - Осі-алійована кордонна коробка для простірних запитів.
Vector3 a = new Vector3(1, 0, 0);
Vector3 b = new Vector3(0, 1, 0);
Vector3 c = Vector3.add(a, b); // (1, 1, 0)
Завантажити та зберегти варіанти
Кожен формат має спеціальні класи варіантів, які дозволяють вам контролювати поведінку імпорту та експорту:
| Формат | опціони завантаження | Зберегти варіанти |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| ГЛТФ / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | (ввезення тільки вантажівки) |
Наприклад, для експорту glTF з досить друкованою JSON і системою фліпених координатів:
GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);
scene.save("output.gltf", opts);
Підтримувані формати
У наступній таблиці зображено формати, які Aspose.3D FOSS для Java може читати і писати.
| Формат | розширення | імпорт | експорт | Зауважимо |
|---|---|---|---|---|
| OBJ | .obj | Так | Так | З використанням МТЛ матеріалів |
| STL | .stl | Так | Так | Бінарний + ASCII |
| ГТФ 2.0 | .gltf | Так | Так | Формат JSON |
| GLB | .glb | Так | Так | Бінарний GlTF через GltfSaveOptions |
| FBX | .fbx | Так | Не | Імпорт тільки |
OBJ, STL, glTF і GLB підтримують як зарядку, так і заощадження. FBX підтримається тільки для імпорту.
Формат вибірка
Вибір правильного формату залежить від вашого випадку використання:
- OBJ Ідеальний, коли вам потрібна максимальна сумісність між 3D-інструментами. майже кожна модельюча програма може читати і писати OBJ. Він добре працює для обміну даними меша, але несе тільки основну матеріальну інформацію через товаришів файли MTL.
- STL Він зберігає сурову трикутну геометрию без матеріалів або іерархії сцен, що саме те, чого очікує програмне забезпечення для злиття. Якщо ваша трубопровід закінчується на 3D-принтері, STL є простим вибором.
- ГЛТФ Він підтримує PBR матеріали, повну сцену і є розроблений для ефективного передачі. Використовуйте glTF при побудові веб-базируючих переглядачів, працюючи з three.js або Babylon.JS, або спрямовані на будь-який реального часу rendering трубопровід.
- FBX Він глибоко інтегрується в розробку ігор та цифрові контент-творювання робочих потоків. він підтримує багаті дані сцен, включаючи йерархії та матеріали. Aspose.3D FOSS для Java підтримає FBX Імпорт тільки Використовуйте його для завантаження активів FBX і конвертації їх в інші формати.
Знайомі обмеження
Важливо відзначити, що Scene.render() І є Не підтримується У цьому розділі викладено, що назва цього методу буде UnsupportedOperationException.Бібліотека призначена для 3D-обробки на основі файлів — завантаження, маніпулювання, трансформація та збереження моделей — замість реального часу передачі дисплею.
Відкритий код та ліцензія
Aspose.3D FOSS для Java випускається під Ліцензія міт.Це означає, що ви вільні:
- Використовуйте бібліотеку в комерційних та власних додатках.
- Змінюйте код джерела, щоб відповідати вашим потребам.
- Розповсюджуйте бібліотеку як частину власного програмного забезпечення.
Немає ні довільних зборів, ні обмежень використання і ніяких вимог до присвоєння за межами того, що зазначено в ліцензії MIT.
Повний код джерела хостирується на GitHub, а внески вітаються: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
Системні вимоги
| Вимоги | Деталі |
|---|---|
| Java версія | 21 or later |
| Залежність | Ніякий (чистий Java) |
| Платформи | будь-яка платформа, яка працює JVM |
| Будівництво інструментів | Мавзона (загальна кількість рекомендованих) |
Починати з
Ось основні способи, які допоможуть вам піднятися і працювати:
- Документація - всеосяжні маршрути і прогулянки API доступні на 3D документальний сайт.
- База знань - практичні способи до статей та поправки з вирішенням проблем у 3D КБ.
- Опір відзначення - детальну класифікацію та методику посилання на 3D API Референт.
- Джерело Кодекс - переглядати і сприяти GitHub.
- Міно Центральний - пакету опубліковано як
org.aspose:aspose-3d-foss:26.5.0У центрі Мавен.
Унікальні випадки використання
Ось деякі практичні сценарії, де Aspose.3D FOSS для Java добре підходить:
Формат конверсійних трубопроводів
Багато команд отримують 3D-активи в одному форматі, але потребують їх в іншому. команда дизайну може працювати на FBX, а веб-тема потребує glTF. Бібліотека дозволяє створювати автоматизовані трубопроводи конверсії:
// 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
Перед тим, як ввести 3D-актив у вашу програму, ви можете бажати підтвердити його вміст - перевірити числа нігтів, перевірку геометрії або підтверджувати наявність очікуваних елементів:
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");
}
}
Сценальна Асамблея
Ви можете завантажити кілька моделей і поєднувати їх в одну сцену:
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");
Що буде наступним
У наступних статтях ми будемо розглядати:
- Глибоке поглинання ключових функцій API, матеріалів і математичних інструментів.
- Практичний посібник для роботи з кожним підтримуваним 3D-форматом - OBJ, STL, glTF і FBX - включаючи опції завантаження / збереження та моделі конверсії набірки.
Залишайтеся втіленими, і відчувайте себе вільними для вивчення бібліотеки та поділіться своїми відгуками на GitHub.