Характеристики и функционалности
Характеристики и функционалности
Тази страница обхваща всяка основна област на функционалност на 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 | Регистър и детектор за формати |