Функції та можливості
Функції та можливості
Ця сторінка охоплює всі основні області функціональності 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 | Реєстр і детектор форматів |