Aspose.3D FOSS برای Java از پنج فرمت فایل 3D پشتیبانی میکند: OBJ, STL, glTF, GLB, و FBX (فقط برای وارد کردن).
تمام مثالها از com.aspose.threed.* بسته:
import com.aspose.threed.*;
وابستگی Maven:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.1.0</version>
</dependency>
نمای کلی فرمتها
قبل از شروع، اینجا یک مرور سریع از چهار فرمت پشتیبانیشده و موارد استفاده معمول آنها ارائه شده است.
| فرمت | پسوند | وارد کردن | صادر کردن | پشتیبانی متریال | سلسلهمراتبی صحنه |
|---|---|---|---|---|---|
| OBJ | .obj | بله | بله | پایه (فایلهای MTL) | مسطح |
| STL | .stl | بله | بله | هیچ | مسطح |
| glTF 2.0 | .gltf | بله | بله | PBR | کامل |
| GLB | .glb | بله | بله | PBR | کامل |
| FBX | .fbx | بله | نه | ثروتمند | کامل |
OBJ، STL، glTF و GLB هر دو واردات و صادرات را پشتیبانی میکنند. FBX فقط برای واردات فقط. GLB (binary glTF) از طریق تولید میشود GltfSaveOptions با setContentType(FileContentType.BINARY).
OBJ: Wavefront Object
OBJ یکی از پرپشتیبانیترین فرمتهای مش سهبعدی است. این فرمت هندسه را به صورت متن ساده ذخیره میکند، با یک .mtl فایل همراه برای مواد.
بارگذاری فایلهای OBJ
سادهترین روش این است که مسیر فایل را بهصورت مستقیم پاس دهید:
Scene scene = Scene.fromFile("model.obj");
برای کنترل بیشتر، از ObjLoadOptions:
ObjLoadOptions opts = new ObjLoadOptions();
Scene scene = Scene.fromFile("model.obj", opts);
وقتی فایل OBJ به یک فایل MTL ارجاع میدهد (از طریق یک mtllib دستور)، کتابخانه سعی میکند تعاریف مواد را بهصورت خودکار از آن بارگذاری کند. فایل MTL باید در همان دایرکتوری که فایل OBJ قرار دارد یا در مسیری که در دستور مشخص شده است، باشد.
ذخیره بهصورت OBJ
Scene scene = Scene.fromFile("input.fbx");
scene.save("output.obj");
موارد استفاده از OBJ
- تبادل دادههای مش بین ابزارهای مختلف سهبعدی.
- وارد کردن مدلها از کتابخانههای دارایی که به فرمت OBJ توزیع میشوند.
- بازرسی سریع هندسه بدون سلسلهمراتب صحنههای پیچیده.
STL: استریولیتوگرافی
STL فرمت استاندارد برای چاپ سهبعدی است. این فرمت هندسهٔ مثلثیسازی شدهٔ خام را بدون مواد، رنگها یا سلسلهمراتب صحنه نشان میدهد. فایلهای STL در دو نوع موجود هستند: ASCII (قابل خواندن برای انسان) و باینری (فشرده).
بارگذاری فایلهای STL
// Simple load
Scene scene = Scene.fromFile("part.stl");
// With explicit options
StlLoadOptions opts = new StlLoadOptions();
Scene scene = Scene.fromFile("part.stl", opts);
ذخیره به عنوان STL
Scene scene = Scene.fromFile("model.obj");
scene.save("output.stl");
برای کنترل خروجی، از StlSaveOptions:
StlSaveOptions opts = new StlSaveOptions();
scene.save("output.stl", opts);
ملاحظات STL
- فایلهای STL فقط شامل هندسهٔ مثلثی هستند. مواد، بافتها و سلسلهمراتب صحنه در هنگام خروجیگیری از دست میروند.
- STL باینری برای مدلهای بزرگ بهمراتب کوچکتر از STL متنی (ASCII) است.
- STL فرمت مورد ترجیح است وقتی هدف چاپگر سهبعدی یا نرمافزار برش (slicer) باشد.
glTF: فرمت انتقال GL
glTF یک فرمت مدرن است که برای انتقال و بارگذاری کارآمد محتوای سهبعدی، بهویژه در وب و برنامههای زمان واقعی طراحی شده است. این فرمت از مواد PBR، سلسلهمراتب صحنه و انیمیشنها پشتیبانی میکند.
در حال بارگذاری فایلهای glTF
Scene scene = Scene.fromFile("scene.gltf");
// With options
GltfLoadOptions opts = new GltfLoadOptions();
Scene scene = Scene.fromFile("scene.gltf", opts);
ذخیره بهصورت glTF
ذخیرهسازی پایه از پسوند فایل برای تعیین فرمت استفاده میکند:
scene.save("output.gltf");
برای کنترل دقیق، از GltfSaveOptions:
GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);
scene.save("output.gltf", opts);
جزئیات GltfSaveOptions
| روش | هدف |
|---|---|
setFlipCoordinateSystem(boolean) | محور سیستم مختصات را هنگام خروجیگیری معکوس کنید. هنگام تبدیل از Y‑up به Z‑up یا برعکس مفید است. |
setPrettyPrint(boolean) | JSON خروجی را با تورفتگی برای خوانایی قالببندی کنید. مقدار را تنظیم کنید به false برای حجم فایل کوچکتر در تولید. |
موارد استفاده از glTF
- نمایشگرهای سهبعدی وبمحور (three.js، Babylon.js).
- برنامههای زمان واقعی و موتورهای بازی.
- حفظ تعاریف مواد PBR در بین ابزارها.
FBX: Filmbox (فقط وارد کردن)
FBX یک فرمت اختصاصی توسط Autodesk است که بهطور گستردهای در توسعه بازی و ایجاد محتوای دیجیتال استفاده میشود. این فرمت از سلسلهمراتب صحنههای غنی، مواد و انیمیشنها پشتیبانی میکند. Aspose.3D FOSS برای Java از FBX برای فقط وارد کردن – صادرات به FBX در دسترس نیست.
بارگذاری فایلهای FBX
Scene scene = Scene.fromFile("character.fbx");
// With options
FbxLoadOptions opts = new FbxLoadOptions();
Scene scene = Scene.fromFile("character.fbx", opts);
تبدیل FBX به فرمتهای دیگر
از آنجا که خروجی FBX پشتیبانی نمیشود، صحنههای FBX وارد شده را به glTF، GLB، OBJ یا STL تبدیل کنید:
Scene scene = Scene.fromFile("character.fbx");
// Save as GLB
GltfSaveOptions opts = new GltfSaveOptions();
opts.setContentType(FileContentType.BINARY);
scene.save("character.glb", opts);
موارد استفاده از FBX
- وارد کردن داراییها از ابزارهای Autodesk (Maya، 3ds Max) و تبدیل آنها به فرمتهای دیگر.
- در حال بارگذاری شخصیتهای ریگشده و صحنههای انیمیشنی برای صادرات مجدد به glTF/GLB.
تبدیل دستهای
یک جریان کاری رایج، تبدیل یک پوشه کامل از فایلها از یک فرمت به فرمت دیگر است. در اینجا یک الگو برای تبدیل دستهای آورده شده است:
import com.aspose.threed.*;
import java.io.File;
public class BatchConvert {
public static void main(String[] args) throws Exception {
File inputDir = new File("models/obj");
File outputDir = new File("models/gltf");
outputDir.mkdirs();
GltfSaveOptions saveOpts = new GltfSaveOptions();
saveOpts.setPrettyPrint(true);
File[] objFiles = inputDir.listFiles(
(dir, name) -> name.toLowerCase().endsWith(".obj")
);
if (objFiles == null) return;
for (File objFile : objFiles) {
String baseName = objFile.getName()
.replaceFirst("\\.obj$", "");
Scene scene = Scene.fromFile(objFile.getAbsolutePath());
String outPath = new File(outputDir, baseName + ".gltf")
.getAbsolutePath();
scene.save(outPath, saveOpts);
System.out.println("Converted: " + objFile.getName()
+ " -> " + baseName + ".gltf");
}
}
}
این همه را بارگذاری میکند .obj فایل در یک پوشه، هر کدام را به glTF با خروجی قالببندی زیبا تبدیل میکند و نتایج را ذخیره مینماید. میتوانید این الگو را برای هر ترکیب فرمت منبع و مقصدی سازگار کنید.
مرجع تبدیل بین فرمتها
جدول زیر نشان میدهد که هنگام تبدیل بین فرمتها چه انتظاری داشته باشید.
| از | به | هندسه | متریالها | سلسلهمراتب | یادداشتها |
|---|---|---|---|---|---|
| OBJ | STL | حفظ شده | از دست رفته | N/A | STL هیچ پشتیبانی از متریال ندارد |
| OBJ | glTF/GLB | حفظ شده | به PBR تبدیل شده | مسطح | متریالهای MTL در صورت امکان نگاشت شد |
| STL | OBJ | حفظ شده | هیچ | N/A | هیچ متریالی در منبع وجود ندارد |
| STL | glTF/GLB | حفظ شده | پیشفرض | مسطح | ماده پیشفرض اعمال شد |
| glTF | OBJ | حفظ شده | سادهسازی شده | مسطح شده | PBR به متریال پایه |
| glTF | STL | حفظشده | از دست رفته | مسطحشده | فقط هندسه |
| FBX | OBJ | حفظشده | سادهشده | مسطحشده | سادهسازی مواد |
| FBX | STL | حفظ شده | از دست رفته | مسطح شده | فقط هندسه |
| FBX | glTF/GLB | حفظ شده | تبدیل به PBR | حفظ شده | دقت خوب |
راهنمای کلی تبدیل
- هندسه همیشه در تمام جفتهای فرمت حفظ میشود.
- مواد بهترین سازگاری بین glTF و FBX است که هر دو مدلهای متریال غنی را پشتیبانی میکنند. تبدیل به STL همیشه متریالها را حذف میکند. تبدیل به OBJ متریالها را به مدل پایه MTL ساده میکند.
- سلسلهمراتبی صحنه در بین glTF و FBX حفظ میشود. OBJ و STL ساختارهای مسطح تولید میکنند.
جمعبندی همه موارد
در اینجا یک مثال کامل آورده شده است که یک فایل OBJ را بارگذاری میکند، گرههای آن را بررسی میکند و به هر دو فرمت glTF و GLB صادر مینماید:
import com.aspose.threed.*;
public class FormatWorkflow {
public static void main(String[] args) throws Exception {
// Load
Scene scene = Scene.fromFile("input.obj");
// Inspect
System.out.println("Nodes in scene:");
for (Node child : scene.getRootNode().getChildNodes()) {
System.out.println(" " + child.getName());
Transform t = child.getTransform();
System.out.println(" Translation: "
+ t.getTranslation());
}
// Export to glTF with options
GltfSaveOptions gltfOpts = new GltfSaveOptions();
gltfOpts.setPrettyPrint(true);
scene.save("output.gltf", gltfOpts);
// Export to GLB (binary glTF)
GltfSaveOptions glbOpts = new GltfSaveOptions();
glbOpts.setContentType(FileContentType.BINARY);
scene.save("output.glb", glbOpts);
System.out.println("Export complete.");
}
}
خلاصه
Aspose.3D FOSS for Java به شما یک API سازگار در چندین فرمت ارائه میدهد. نکات کلیدی:
- OBJ – تبادل مش ساده با متریالهای پایه.
- STL – فرمت فقط هندسی برای خطوط لوله چاپ سهبعدی.
- glTF / GLB – فرمت مدرن با قابلیت PBR برای استفاده در وب و زمان واقعی. استفاده کنید
GltfSaveOptionsباsetContentType(FileContentType.BINARY)برای خروجی GLB. - FBX – فقط برای وارد کردن؛ فرمت غنی برای بارگذاری داراییها از موتورهای بازی و ابزارهای DCC.
از کلاسهای گزینهٔ بارگذاری و ذخیرهسازی مخصوص فرمت استفاده کنید (ObjLoadOptions, StlLoadOptions, StlSaveOptions, GltfLoadOptions, GltfSaveOptions, FbxLoadOptions) زمانی که به کنترل دقیق بر فرآیند واردات یا صادرات نیاز دارید.
برای جزئیات بیشتر، به Aspose.3D مستندات یا منبع را در GitHub.