چگونه مدلهای سهبعدی را در Java بارگذاری کنیم
aspose-3d-foss برای Java یک API ساده برای باز کردن فایلهای سهبعدی فراهم میکند. پس از بارگذاری یک فایل به یک Scene شیء میتوانید سلسلهمراتبی گرهها را پیمایش کنید و دادههای هندسی را بخوانید.
راهنمای گام به گام
گام ۱: نصب بسته
وابستگی Maven را اضافه کنید:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.1.0</version>
</dependency>گام ۲: وارد کردن کلاس Scene
import com.aspose.threed.Scene;
import com.aspose.threed.Node;
import com.aspose.threed.Mesh;گام ۳: بارگذاری یک فایل
Scene scene = new Scene();
scene.open("model.obj");یا از کارخانهٔ ایستا استفاده کنید:
Scene scene = Scene.fromFile("model.obj");فرمتهای پشتیبانیشده: OBJ، STL، glTF 2.0 / GLB، FBX (فقط باینری — ASCII FBX پشتیبانی نمیشود و باعث میشود ImportException).
گام ۴: پیمایش گرههای Scene
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);گام ۵: دسترسی به دادههای Mesh
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 باینری پشتیبانی میشود. فایلهای FBX ASCII باعث میشوند ImportException("ASCII FBX format not yet supported - only binary FBX is supported").
آیا میتوانم از یک InputStream بارگذاری کنم؟?
بله. scene.open() پذیرش یک InputStream.
آیا کتابخانه thread-safe است؟?
هر Scene نمونه مستقل است. بارگذاری فایلهای جداگانه در نمونههای جداگانه از رشتههای جداگانه ایمن است.