Введення
Працювати з 3D-контентом в Java зазвичай вимагає вибору між важкою вагою. гра двигуни і баре-боне математичні бібліотеки. aspose-3d-foss Пакет пропонує A середній підземний: фокусований сценічний графік API, який керує файлом I/O, іерархією нід, Меша будівництво, і координувати трансформації без тяжіння в рендеринг трубопровід або ланцюг нацистської залежності.
Бібліотека читає FBX, glTF/GLB, Wavefront OBJ і STL, а також пише gltF / GLB , OBD та ST L (вивезення FBX не реалізується), робить його практичним для сервер-сайт 3D обробки, інтеграції будівельних інструментів та трубопроводів конверсії даних, що працюють на Java 21 або пізніше.
Цей пост проходить через можливості управління сценою в бібліотеці: як побудувати сцену з розриву, популярувати її геометрією і трансформаціями, а також експортувати результат на диск.
Що включається
Сцена графік бази
І те 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. Ви можете використовувати, модифікувати та перерозподіляти бібліотеку в комерційному і Некоммерційні проекти без обмежень.
Починати з
- Розробник Guide - вогнища для прогулянки та Використання моделей
- База знань Як писати статті та FAQ
- Опір відзначення - повний клас і Методологічна документація