Як завантажити 3D‑моделі у Java
aspose-3d-foss для Java надає простий API для відкриття 3D‑файлів. Після завантаження файлу у Scene об’єкт ви можете пройти ієрархію вузлів і зчитати дані геометрії.
Покроковий посібник
Крок 1: Встановіть пакет
Додайте залежність Maven:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.1.0</version>
</dependency>Крок 2: Імпортуйте клас Scene
import com.aspose.threed.Scene;
import com.aspose.threed.Node;
import com.aspose.threed.Mesh;Крок 3: Завантажте файл
Scene scene = new Scene();
scene.open("model.obj");Або використайте статичну фабрику:
Scene scene = Scene.fromFile("model.obj");Підтримувані формати: OBJ, STL, glTF 2.0 / GLB, FBX (лише бінарний — ASCII FBX не підтримується і викликає ImportException).
Крок 4: Обійдіть вузли сцени
void walk(Node node, int depth) {
String indent = " ".repeat(depth * 2);
System.out.println(indent + "Node: " + node.getName());
for (Node child : node.getChildNodes()) {
walk(child, depth + 1);
}
}
walk(scene.getRootNode(), 0);Крок 5: Отримайте дані сітки
for (Node node : scene.getRootNode().getChildNodes()) {
if (node.getEntity() instanceof Mesh) {
Mesh mesh = (Mesh) node.getEntity();
System.out.println("Mesh '" + node.getName() + "': " +
mesh.getControlPoints().size() + " vertices, " +
mesh.getPolygonCount() + " polygons");
}
}Типові проблеми та їх вирішення
Виняток під час завантаження
Переконайтеся, що файл не пошкоджений і формат підтримується (OBJ, STL, glTF, FBX).
NullPointerException при доступі до сутності
Не кожен вузол містить геометрію. Завжди перевіряйте node.getEntity() instanceof Mesh перед приведенням типу.
Несумісність системи координат
Використовуйте ObjLoadOptions.setFlipCoordinateSystem(true) або застосувати обертання після завантаження.
Поширені запитання (FAQ)
Які формати можна завантажити?
OBJ, STL (бінарний та ASCII), glTF 2.0 / GLB та FBX. Для FBX підтримується лише бінарний FBX підтримується. ASCII‑файли FBX будуть викликати ImportException("ASCII FBX format not yet supported - only binary FBX is supported").
Чи можу я завантажити з InputStream?
Так. scene.open() приймає an InputStream.
Чи є бібліотека потокобезпечною?
Кожен Scene екземпляр є незалежним. Завантаження окремих файлів у окремі екземпляри з окремих потоків безпечно.