Мы рады сообщить о наличии Aspose.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, нет коренных библиотек, никаких ограничений на платформу.
- Java 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.
Математические Utilities
В том, что 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-инструментами. Почти каждая модельная программа может читать и писать ОБД. Хорошо работает для обмена данными меша, но носит только базовую материальную информацию через сопутствующие MTL файлы.
- STL Это формат выбора для 3D-принтерных рабочих потоков. Он хранит сырую триъестерическую геометрию без материалов или сценической иерархии, что именно то, чего ожидает программное обеспечение слайзера. Если ваша трубопроводная линия заканчивается на 3Д-печатателе, STL является простой выбор.
- ГЛТФ Это современный стандарт для веб и 3D в реальном времени. Он поддерживает PBR материалы, полные сценические иерархии, и предназначен для эффективной передачи. Используйте glTF при строительстве на базе веб-видетелей, работая с three.js или Babylon.JS, или целенаправленная любая рендеринговая труба в режиме реального времени .
- FBX глубоко интегрирован в разработку игр и цифровые потоки работы по созданию контента. он поддерживает богатые данные сцены, включая гиерархии и материалы. Aspose.3D FOSS для Java поддерживает FBX Импорт только — используйте его для загрузки активов FBX и конвертирования их в другие форматы.
Известные ограничения
Важно отметить, что Scene.render() Это Не поддерживается В издании FOSS. называя этот метод будет бросать 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 доступны на Сайт Aspose.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.