Введение

Работа с 3D-контентом в Java обычно требует выбора между тяжелой весом. Игровые двигатели и баро-боны математические библиотеки. aspose-3d-foss Пакет предлагает A средняя почва: ориентированная API сценного графика, которая управляет файлами I/O, иерархией узлов;, строительство меша, и координировать трансформации без тяги в рендерацию трубопровод или коренная зависимость.

Aspose.3D FOSS для Java является открытой библиотекой, распределенной под лицензией MIT. Она обеспечивает 80 классов обширного управления сценой, геометрии, материалов и форматной конверсии. Библиотека читает FBX, glTF/GLB, Wavefront OBJ и STL, а также пишет gltF / GLB , OBj и СТЛ (экспорт FBX не реализуется), делая его практичным для обработки 3D со стороны сервера, интеграции строительных инструментов и трубопроводов передачи данных, которые работают на Java 21 или позднее.

Эта статья проходит через возможности управления сценой в библиотеке: как построить сцену из краш, популяризировать ее геометриями и трансформациями, а также экспортировать результат на диск.


Что входит

Сцена графики Basics

В том, что Scene класс – это коренный контейнер для каждого 3D-документа. Node, метаданные активов, анимационные клипы и под-сцена. можно создать пустый сцену и затем популяризировать ее, или загрузить существующий файл с Scene.fromFile.

import com.aspose.threed.Scene;
import com.aspose.threed.Node;

Scene scene = new Scene();
Node root = scene.getRootNode();

// Add named child nodes to build a hierarchy
Node chassis = root.createChildNode("Chassis");
Node wheel = chassis.createChildNode("FrontLeftWheel");

Каждый Node Можно держать один Entity (как и в Mesh или Cameraа) А Transform, список материалов, и дальнейшие детские узлы. Структура дерева зеркало сценно-графический образец, используемый большинством 3D-авторских инструментов.

Меш строительство

В том, что Mesh класс позволяет определить геометрию с точки контроля и полигона. Вы добавляете вертикали с addControlPoint,Затем соедините их в лицах. С createPolygon.

import com.aspose.threed.Mesh;

Mesh box = new Mesh("Box");

// Define eight corners of a cube
box.addControlPoint(0, 0, 0);
box.addControlPoint(1, 0, 0);
box.addControlPoint(1, 1, 0);
box.addControlPoint(0, 1, 0);
box.addControlPoint(0, 0, 1);
box.addControlPoint(1, 0, 1);
box.addControlPoint(1, 1, 1);
box.addControlPoint(0, 1, 1);

// Create quad faces
box.createPolygon(0, 1, 2, 3); // back
box.createPolygon(4, 5, 6, 7); // front
box.createPolygon(0, 4, 7, 3); // left
box.createPolygon(1, 5, 6, 2); // right
box.createPolygon(3, 2, 6, 7); // top
box.createPolygon(0, 1, 5, 4); // bottom

scene.getRootNode().createChildNode("Box", box);

В состав АЭС входит triangulate(), optimize(removeVertices),И Булеан Операция (union, difference, intersectОднако эти методы в текущее выпущение — они возвращают клону входной меши без выполнения Названа операция .

Трансформация и позиционирование

Каждый из них Node Носит A Transform контролирует его местный перевод, ротацию, Они составляют через иерархию, чтобы перемещать родительский узл. Он перемещает всех своих детей.

import com.aspose.threed.Transform;
import com.aspose.threed.Node;

Node node = scene.getRootNode().createChildNode("Shifted");
Transform t = node.getTransform();
t.setTranslation(5.0, 0.0, -3.0);
t.setScale(2.0, 2.0, 2.0);
t.setEulerAngles(0, 45.0, 0);

Для абсолютного позиционирования запросов, звоните node.getGlobalTransform() Чтобы восстановить Композитивный GlobalTransform,или node.evaluateGlobalTransform(true) Чтобы получить A Matrix4 Это включает в себя геометрические отметки.

ПБР Материалы

В том, что PbrMaterial класс обеспечивает физически основанные свойства рендера: Альбедо цвет, металлический фактор, жестокость, эмиссивный цвет и прозрачность. Присвоить материал к узлу при создании ребенка.

import com.aspose.threed.PbrMaterial;
import com.aspose.threed.Vector4;
import com.aspose.threed.Vector3;

PbrMaterial mat = new PbrMaterial("RedMetal");
mat.setAlbedo(new Vector4(0.9, 0.1, 0.1, 1.0));
mat.setMetallicFactor(0.8);
mat.setRoughnessFactor(0.3);
mat.setEmissiveColor(new Vector3(0, 0, 0));

scene.getRootNode().createChildNode("Part", box, mat);

Формат детектива

В том, что FileFormat класс обеспечивает статические поисковые и детективальные инструменты. можно разрешить формат файлом расширения или проанализировать потоки для идентификации неизвестных файлов.

import com.aspose.threed.FileFormat;

FileFormat fmt = FileFormat.getFormatByExtension("model.glb");
boolean canRead  = fmt.getCanImport();
boolean canWrite = fmt.getCanExport();

Координационная система конверсии

AxisSystem позволяет определить верхнюю, переднюю и ручную оси, а также координационная система, а затем расчет Matrix4 Переход геометрии между Конвенции (например, от праворучной системы Z-up до Y-Up) 1 левая рука).

import com.aspose.threed.AxisSystem;
import com.aspose.threed.Axis;
import com.aspose.threed.CoordinateSystem;
import com.aspose.threed.Matrix4;

AxisSystem source = new AxisSystem(
    CoordinateSystem.RIGHT_HANDED, Axis.Z_AXIS, Axis.Y_AXIS);
AxisSystem target = new AxisSystem(
    CoordinateSystem.LEFT_HANDED, Axis.Y_AXIS, Axis.Z_AXIS);
Matrix4 conversion = source.transformTo(target);

Быстрый старт

Добавить зависимость от мавен:

<dependency>
  <groupId>org.aspose</groupId>
  <artifactId>aspose-3d-foss</artifactId>
  <version>26.5.0</version>
</dependency>

Создайте простой сцену и экспортируйте ее:

import com.aspose.threed.Scene;
import com.aspose.threed.Mesh;
import com.aspose.threed.Node;
import com.aspose.threed.StlSaveOptions;
import com.aspose.threed.FileContentType;

Scene scene = new Scene();
Mesh mesh = new Mesh("Triangle");
mesh.addControlPoint(0, 0, 0);
mesh.addControlPoint(1, 0, 0);
mesh.addControlPoint(0, 1, 0);
mesh.createPolygon(0, 1, 2);

scene.getRootNode().createChildNode("Shape", mesh);

StlSaveOptions opts = new StlSaveOptions();
opts.setContentType(FileContentType.BINARY);
scene.save("output.stl", opts);

Поддерживаемые формати

ФорматРасширениеЧитать →Писать
FBX (ASCII и бинарный, 6.x-7.x).fbxДаНе
ГЛТФ 1.0 / 2.0.gltfДаДа
ГЛТФ Бинарный.glbДаДа
Валфронт OBJ.objДаДа
STL (ASCII и бинарный).stlДаДа

Каждый формат посвящен LoadOptions и SaveOptions Подкласс (для Пример →, FbxLoadOptions, GltfSaveOptions, StlSaveOptionsВ этом выявляется Формат-специфические настройки, такие как координаты-системы флиппинг и тип контента и селекции.


Открытый источник и лицензирование

Aspose.3D FOSS для Java выпускается под лицензией MIT. Источник кода является доступны на GitHub в Аппоз.3D-FOSS для Java. Вы можете использовать, модифицировать и перераспределить библиотеку в коммерческих и Некоммерческие проекты без ограничений.


Начинать стартовать