Характеристики и функционалности

Характеристики и функционалности

Характеристики и функционалности

Тази страница обхваща всяка основна област на функционалност на 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");

Опции, специфични за формата

Подайте 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 = 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 (базов), PbrMaterial (PBR metallic-roughness).


Съвети и най‑добри практики

  • Използвайте Scene.fromFile() за едноредови зареждания, когато не са нужни персонализирани опции
  • Създавайте мрежи програмно с createPolygon() за персонализирана геометрия
  • Използвайте .glb разширение за компактен двоичен glTF изход
  • Проверете node.getEntity() != null преди преобразуване
  • Експортът в STL не триангулира полигонални лица автоматично. Binary STL export записва само първите 3 върха на всяко полигонално лице — quad или n-gon лица се отрязват без предупреждение. ASCII STL export записва всички индекси на върховете, което създава деформирани facet блокове за лица, които не са триъгълници. Винаги подавайте предварително триангулирани мрежи (само триъгълни лица) към STL export, за да избегнете загуба на данни или невалиден изход.

Чести проблеми

ПроблемПричинаПоправка
Изключение при зарежданеНеподдържан или повреден файлПроверете дали файлът се отваря в 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Регистър и детектор за формати
 Български