Aspose.3D FOSS برای جاوا از پنج فرمت فایل 3D پشتیبانی می کند: OBJ, STL, GTTF, GLB,و FBX این پست یک راهنمای عملی، فرمت به فرم است که نشان می دهد چگونه هر کدام را بارگذاری و ذخیره کنید، چه گزینه هایی در دسترس هستند و چگونه بین آنها تبدیل شود.
همه نمونه ها از com.aspose.threed.* بسته بندی :
import com.aspose.threed.*;
اعتیاد به Maven :
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.5.0</version>
</dependency>شکل چشم انداز
قبل از غوطه ور شدن، در اینجا یک مرور سریع از چهار فرمت پشتیبانی شده و موارد استفاده معمولی آنها است.
| فرمول | تمدید | واردات | صادرات | پشتیبانی مواد | صحنه ی هیرکیا |
|---|---|---|---|---|---|
| OBJ | .obj | بله | بله | فایل های MTL (File of MTl) | مسطح |
| STL | .stl | بله | بله | هیچ | مسطح |
| GTTF 2.0 | .gltf | بله | بله | PBR | کامل |
| GLB | .glb | بله | بله | PBR | کامل |
| FBX | .fbx | بله | نه | ثروتمند | کامل |
OBJ، STL، glTF و GLB از واردات و صادرات پشتیبانی می کنند. واردات فقط.GLB (GlTF) از طریق تولید می شود. GltfSaveOptions با setContentType(FileContentType.BINARY).
بایگانی برچسب ها: Wavefront Object
OBJ یکی از گسترده ترین فرمت های 3D است که به طور معمول با استفاده از یک متن مسطح، جغرافیای خود را ذخیره می کند. .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");
استفاده از موارد
- تبادل اطلاعات بین ابزارهای 3D مختلف.
- واردات مدل ها از کتابخانه های دارایی که در فرمت OBJ توزیع می شود.
- بررسی سریع جغرافیای بدون هیراتژی های صحنه پیچیده.
برچسب ها: استریولیتوگرافی
STL فرمت استاندارد برای چاپ 3D است. آن را نشان می دهد ژئومتری سه گانه خام بدون مواد، رنگ ها و یا سلسله مراتب صحنه. فایل های 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 باینری فقط 3 قفسه اول هر پلیگون را می نویسد؛ چهره های چهار و n-gon به آرامی درخشان هستند. ASCII ST L تمام شاخص های قرمز را برای هر چهره می نوشت، تولید خروجی بدی برای چهره غیر مثلث. همیشه از ماساژ های پیش از سهگانه (چهره های همه مثلثة) هنگام صادرات به STl استفاده کنید.
- STL دوگانه به طور قابل توجهی کوچکتر از ASCII STl برای مدل های بزرگ است.
- STL فرمت انتخابی است که هدف یک چاپگر 3D یا نرم افزار اسلایدر است.
GLTF: فرمت انتقال GL
glTF یک فرمت مدرن طراحی شده برای انتقال و بارگذاری موثر از محتوای 3D، به ویژه در وب و در برنامه های کاربردی زمان واقعی است. آن را پشتیبانی از مواد 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 با indentation برای خواندن. false برای اندازه فایل های کوچک تر در تولید. |
GST استفاده از موارد
- تماشاگران 3D مبتنی بر وب (three.js، Babylon.JS).
- برنامه های بازی و موتورهای زمان واقعی.
- حفظ تعریف های مواد PBR در سراسر ابزارها.
FBX: Filmbox (فقط واردات)
FBX یک فرمت خصوصی توسط Autodesk است که به طور گسترده ای در توسعه بازی و ایجاد محتوای دیجیتال مورد استفاده قرار می گیرد. Aspose.3D FOSS برای جاوا از FBx پشتیبانی می کند واردات فقط - صادرات به FBX در دسترس نیست.
فقط FBX دوگانه است. وارد کننده FBX فقط فایل های باینری FBx را می خواند.
ImportException("ASCII FBX format not yet supported - only binary FBX is supported"). سلسله مراتب و استخراج مواد از FBX به طور کامل تایید نشده است؛ صحنه های پیچیده FB X ممکن است به صورت کامل بارگذاری نشود.
دانلود فایل های FBX
Scene scene = Scene.fromFile("character.fbx");
// With options
FbxLoadOptions opts = new FbxLoadOptions();
Scene scene = Scene.fromFile("character.fbx", opts);
تبدیل FBX به فرمت های دیگر
از آنجا که صادرات FBX پشتیبانی نمی شود، صحنه های وارداتی FB X را به 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) و تبدیل به فرمت های دیگر.
- بارگذاری جغرافیای باینری FBX و صادرات مجدد به glTF / GLB، OBJ یا STL.
تبدیل Batch
یک جریان کار معمولی تبدیل کل دایرکتوری فایل ها از یک فرمت به دیگری است.در اینجا یک الگوی برای تبدیل مجموعه:
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 | حفظ شده | پیش فرض | مسطح | مواد مورد استفاده با نقص |
| GTTF | OBJ | حفظ شده | ساده سازی | فشرده | PBR به مواد پایه |
| GTTF | STL | حفظ شده | گمشده | فشرده | فقط جغرافیایی |
| FBX | OBJ | حفظ شده | ساده سازی | فشرده | ساده سازی مواد |
| FBX | STL | حفظ شده | گمشده | فشرده | فقط جغرافیایی |
| FBX | GLTF / GLB | حفظ شده | تبدیل به PBR | حفظ شده | وفاداری خوب |
دستورالعمل های تبدیل عمومی
- جغرافیای به طور کلی در سراسر زوج های فرمت حفظ می شود، با یک استثنا مهم: هنگام صادرات به STL، مچ ها باید کاملا از چهره های مثلثی تشکیل شده باشد. STS باینری به آرامی چهره ها را به سه طبقه اول خود و N-GON را تکان می دهد؛ ASCII ST L تولید خروجی بدتر برای چهره هایی غیر مثلثة.
- مواد بهترین زمان برای زنده ماندن بین صحنه های وارداتی glTF و FBX که شامل داده های مواد است. تبدیل به STL همیشه مواد را می ریزد. تغییر به OBJ، مواد به مدل MTL پایه ساده تر می شود.
- هیئت مدیره صحنه در میان فایل های فرمت glTF حفظ می شود. OBJ و STL ساختارهای مسطح تولید می کنند. هیرکری FBX و استخراج مواد به طور کامل در این نسخه تایید نشده است.
همه را با هم قرار دهید
در اینجا یک مثال کامل است که فایل 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 برای جاوا به شما یک API متقابل در چندین فرمت می دهد.:
- OBJ - تبادل ساده با مواد پایه.
- STL – فرمت ژئومتری فقط برای لوله های چاپ 3D.
- GLTF / GLB – فرمت PBR مدرن قابل استفاده برای وب و زمان واقعی.
GltfSaveOptionsباsetContentType(FileContentType.BINARY)تولید GLB. - FBX – واردات فقط؛ فرمت غنی برای بار دارایی از موتورهای بازی و ابزارهای DCC.
در این مطلب به بررسی و بررسی روش های انتخابی (ObjLoadOptions, StlLoadOptions, StlSaveOptions, GltfLoadOptions, GltfSaveOptions, FbxLoadOptionsهنگامی که نیاز به کنترل دقیق بر واردات یا صادرات دارید.
برای جزئیات بیشتر، به سایت مراجعه کنید. دانلود اسناد Aspose.3D یا منبع را در GitHub.