Функции и возможности

Функции и возможности

Эта страница охватывает все основные области функций aspose-3d-foss 26.1.0 с работающими примерами Java.


Загрузка и сохранение сцен

scene.open() загружает файл; scene.save() экспортирует его:

import com.aspose.threed.Scene;

Scene scene = new Scene();
scene.open("input.obj");
scene.save("output.glb");

Альтернатива статической фабрики:

Scene scene = Scene.fromFile("input.fbx");
scene.save("output.stl");

Опции, специфичные для формата

Pass LoadOptions или SaveOptions подклассы для точного управления:

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);

Примечание: FBX поддерживается только для импорта; экспорт FBX не реализован в версии FOSS. Только binary FBX файлы поддерживаются для импорта — ASCII FBX вызывает ImportException.


Создание графа сцены

Создайте узлы и присоедините сущности:

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);

Операции с Mesh

Создать Mesh программно с контрольными точками и полигонами:

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);

Трансформации

Каждый Node переносит Transform:

Node node = scene.getRootNode().createChildNode("moved", new Mesh());
node.getTransform().setTranslation(10, 0, 5);
node.getTransform().setScale(2, 2, 2);

Читать мировое пространство через node.getGlobalTransform().getMatrix().


Материалы

Назначьте материалы узлам:

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);

Типы материалов: Material (base), PbrMaterial (PBR metallic-roughness).


Советы и лучшие практики

  • Использовать Scene.fromFile() для однострочных загрузок, когда пользовательские параметры не требуются
  • Создавайте сетки программно с помощью createPolygon() для пользовательской геометрии
  • Используйте .glb расширение для компактного бинарного вывода glTF
  • Проверьте node.getEntity() != null перед приведением типов
  • Экспорт STL делает не триангулировать грани полигонов автоматически. При бинарном экспорте STL записываются только первые 3 вершины каждой грани полигона — квадраты или n‑угольные грани беззвучно усекаются. При ASCII‑экспорте STL записываются все индексы вершин, что приводит к malformed facet blocks для не‑треугольных граней. Всегда передавайте предварительно триангулированные сетки (только треугольные грани) в экспорт STL, чтобы избежать потери данных или некорректного вывода.

Распространённые проблемы

ПроблемаПричинаИсправление
Исключение при загрузкеНеподдерживаемый или повреждённый файлУбедитесь, что файл открывается в 3D‑просмотрщике
Отсутствуют материалы после загрузки OBJ.mtl файл не найденРазместить .mtl рядом с .obj; убедитесь, что материалы включены
Несоответствие масштаба после импортаРазные системы единицПрименить Transform масштаб после загрузки

FAQ

Как определить формат файла?

FileFormat format = FileFormat.detect("unknown.bin");
System.out.println(format.getExtension());

Можно ли загружать из потока?

Да. scene.open() принимает InputStream.

Какие форматы поддерживают как импорт, так и экспорт?

OBJ, STL и glTF/GLB поддерживают оба направления. FBX только импорт; экспорт не реализован в версии FOSS.


Сводка справки API

Класс / МетодОписание
SceneКонтейнер 3D‑сцены верхнего уровня
scene.open()Загрузить 3D‑файл по пути или из потока
scene.save()Экспортировать сцену в файл или поток
Scene.fromFile()Статическая фабрика для загрузки и возврата Scene
NodeУзел иерархии сцены
node.createChildNode()Создать и присоединить дочерний узел
MeshПолигональная сетка с контрольными точками и списками граней
mesh.createPolygon()Определить полигональную грань
Mesh.toMesh()Преобразовать или клонировать геометрию сетки
TransformЛокальное перемещение, вращение и масштаб
FileFormatРеестр и детектор форматов
 Русский