Функції та можливості

Функції та можливості

Функції та можливості

Ця сторінка охоплює всі основні області функціональності 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-версії. Тільки бінарний 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‑експорт записує всі індекси вершин, що призводить до пошкоджених блоків facet для не‑трикутних граней. Завжди передавайте попередньо трианґульовані сітки (всі грані — трикутники) до експорту 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()Статична фабрика для завантаження та повернення a Scene
NodeВузол ієрархії сцени
node.createChildNode()Створити та приєднати дочірній вузол
MeshПолігональна сітка з контрольними точками та списками граней
mesh.createPolygon()Визначити полігональну грань
Mesh.toMesh()Конвертувати або клонувати геометрію сітки
TransformЛокальна трансляція, обертання та масштаб
FileFormatРеєстр і детектор форматів
 Українська