Как да заредим 3D модели в Java

Как да заредим 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() приема InputStream.

Библиотеката ли е безопасна за многопоточност?

Всеки Scene екземплярът е независим. Зареждането на отделни файлове в отделни екземпляри от отделни нишки е безопасно.

 Български