Въведение
Работата с 3D съдържание в Java обикновено изисква избор между тежки тежести. Машини за игри и баро-боне математически библиотеки. aspose-3d-foss Пакетът предлага A средна земя: фокусирана API с сцена-граф, която обработва файлове I/O, нинд иерархии, изграждане на мешавина, и координиране трансформации без привличане в рендеринг - тръбопровод или верига на коренна зависимост.
Aspose.3D FOSS за Java е библиотека с отворен код, разпределена под лиценза на MIT. Тя осигурява 80 класове обхваща управление на сцената, геометрия, материали и формат конверсия. Библиотеката чете FBX, glTF/GLB, Wavefront OBJ и STL, и пише gltF / GLB , OBG и СТЛ (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 от левицата).
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);
Бързо стартиране
Добавете зависимостта на Maven:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.1.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. Можете да използвате, модифицирате и преразпределите библиотеката в търговски и Некоммерчески проекти без ограничения.
Започваме
- Разработчик ръководство - Пътеводител на огън и Използване на модели
- Знание база Как да се чете статии и FAQs
- Огнено референтно - пълно ниво и Методична документация