Aspose.3D FOSS for Java يدعم خمسة تنسيقات ملف 3D: OBJ, STL, GLTF, GLB,و ، و FBX هذا المنشور هو دليل عملي، تنسيق حسب النموذج يظهر كيفية تحميل وتخزين كل واحد منهم، ما هي الخيارات المتاحة، وكيفية تحويل بينهما.
كل الأمثلة تستخدم com.aspose.threed.* حزمة :
import com.aspose.threed.*;
إدمان الماين :
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.5.0</version>
</dependency>شكل المناظر الطبيعية
قبل الغوص ، إليك نظرة عامة سريعة على الإصدارات الأربعة المدعومة وحالات الاستخدام النموذجية.
| شكل | التمديد | استيراد | تصدير | المواد الدعم | مسرحية الهرم |
|---|---|---|---|---|---|
| OBJ | .obj | نعم | نعم | ملفات MTL (Files of MTl) | مسطحة |
| STL | .stl | نعم | نعم | لا أحد | مسطحة |
| GST 2.0 | .gltf | نعم | نعم | PBR | كاملة |
| GLB | .glb | نعم | نعم | PBR | كاملة |
| FBX | .fbx | نعم | لا | ثروة | كاملة |
يدعم OBJ و STL و glTF و GLB كل من الواردات والتصدير. استيراد فقط.GLB (GlTF الثنائي) يتم إنتاجها من خلال GltfSaveOptions مع setContentType(FileContentType.BINARY).
OBJ: 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 أو على المسار الذي يحدده التوجيه.
التخزين كأوبج
Scene scene = Scene.fromFile("input.fbx");
scene.save("output.obj");
أوبا تستخدم الحالات
- تبادل بيانات الماس بين أدوات 3D المختلفة.
- استيراد النماذج من مكتبات الأصول التي توزع في تنسيق OBJ.
- فحص سريع للجيومترية دون سلسلة من المشاهد المعقدة.
STL: ستيريوليثوغرافيا
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);
الادخار كالقمر
Scene scene = Scene.fromFile("model.obj");
scene.save("output.stl");
للتحكم في الإنتاج، واستخدام StlSaveOptions:
StlSaveOptions opts = new StlSaveOptions();
scene.save("output.stl", opts);
تقييمات STL
- STL تخزين فقط الهندسة المثلثية.المواد والنسيج والهياركيا المسرحية لا تدعم وتسقط على التصدير.
- تداول الخيارات الثنائية استثمارات لا تريغولايت تلقائيًا. STL الثنائية يكتب فقط أول 3 أطراف كل وجه من البوليجون ؛ يتم إخفاء وجوه الربع والنيغون بهدوء. ASCII ST L يكتشف جميع المؤشرات الخلفية لكل وجه ، مما ينتج نتائج مضللة للأوجه غير الثلاثية. دائمًّا ما تستخدم الماسات المسبقة (الجوانب الثلاثي) عند تصديرها إلى STl.
- STL الثنائي هو أصغر بكثير من ASCII STl بالنسبة للنماذج الكبيرة.
- STL هو تنسيق الاختيار عندما يكون الهدف هو طابعة 3D أو برامج التخزين.
GLTF: تنسيق النقل GL
glTF هو تنسيق حديث مصمم لنقل و تحميل فعال للمحتوى 3D، وخاصة على شبكة الإنترنت وفي التطبيقات في الوقت الحقيقي.
تحميل ملفات 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 حجم الملفات الصغيرة في الإنتاج. |
GST تستخدم الحالات
- المشاهدين 3D على شبكة الإنترنت (three.js، Babylon.JS).
- تطبيقات في الوقت الحقيقي ومحركات الألعاب.
- الحفاظ على تعريفات PBR المواد عبر الأدوات.
FBX: Filmbox (إيرادات فقط)
FBX هو تنسيق خاص من قبل Autodesk الذي يستخدم على نطاق واسع في تطوير الألعاب وإنشاء المحتوى الرقمي. Aspose.3D FOSS for Java يدعم FBx for استيراد فقط - لا توجد استثمارات إلى FBX.
ثنائي FBX فقط. المستورد FBX يقرأ الملفات الثنائية فقط.مخالفة ملف ASCII FB X يرمي
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 | المحافظة | الافتراضية | مسطحة | المواد الافتراضية المستخدمة |
| GLTF | OBJ | المحافظة | البساطة | ملموسة | PBR إلى المواد الأساسية |
| GLTF | STL | المحافظة | فقدان | ملموسة | الجيومتر فقط |
| FBX | OBJ | المحافظة | البساطة | ملموسة | المواد البسيطة |
| FBX | STL | المحافظة | فقدان | ملموسة | الجيومتر فقط |
| FBX | GLTF / GLB | المحافظة | تحويل إلى PBR | المحافظة | الخير الولاء |
إرشادات التحويل العام
- الجيومترية يتم الحفاظ عليها بشكل عام عبر أزواج النموذج، مع استثناء مهم واحد: عند تصديرها إلى STL، يجب أن تتكون الماسا بالكامل من الوجوه الثلاثية. STD الثنائية صامتة يغطي الجوانب الربع و n-gon إلى أول 3 أعماق؛ 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 for Java يعطيك API متسق عبر تنسيقات متعددة.:
- OBJ - تبادل البلاط بسيطة مع المواد الأساسية.
- STL - تنسيق الهندسة الجيومترية فقط لقطاب الطباعة 3D.
- GLTF / GLB - تنسيق PBR الحديث للاستخدام الويب وفي الوقت الحقيقي.
GltfSaveOptionsمعsetContentType(FileContentType.BINARY)من حيث الإنتاج GLB. - FBX - استيراد فقط؛ تنسيق غني للشحن الأصول من محركات اللعبة وأدوات DCC.
(استخدم محرك الأقراص المحدد للفرم وتخزين فئات الخيارات)ObjLoadOptions, StlLoadOptions, StlSaveOptions, GltfLoadOptions, GltfSaveOptions, FbxLoadOptions( ) عندما تحتاج إلى السيطرة على عملية الاستيراد أو التصدير.
لمزيد من التفاصيل، زيارة أندرويد 3D الوثائقية أو انظر إلى المصدر على GitHub.