ونحن متحمسون لإعلان توافر Aspose3D FOSS لـ Java - مكتبة مجانية مفتوحة المصدر للعمل مع تنسيقات الملفات 3D في تطبيقات جاوا.بناء كحل جاو النقي بدون إدمانات أصلية، وتشغيل المكتبات على جااو 21 وما بعدها، مما يجعلها متاحة لمجموعة واسعة من المشاريع والبيئات.
هذا المنشور يمر عبر ما تقدمه المكتبة ، وكيفية البدء ، وأين تذهب من هنا.
ما هو Aspose.3D FOSS لـ Java؟?
Aspose.3D FOSS for Java هو مكتبة معالجة الملفات 3D الخفيفة المنشورة تحت عنوان: مجوز MIT.يوفر API الرسم البياني المسرحية التي تسمح لك بتحميل وتحقق وتحويل وتخزين نماذج 3D عبر عدة تنسيقات تستخدم على نطاق واسع.المكتبة مكتوبة بالكامل في جاوا ولا تتطلب أي إعدادات خارجية من الأصلي أو المنصة المحددة.
يتوفر رمز المصدر على GitHub: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
الاهتمام الرئيسي
- جاوا خالص - لا JNI، لا المكتبات الأصلية، ولا قيود على المنصة.
- جاوا 21+ متوافق .
- مجوزات MIT - استخدامها في المشاريع الشخصية أو التجارية ، أو الملكية دون قيود.
- معمارية المسرحية - شجرة مألوفة من العقد والطوابق والكاميرات والمواد.
- دعم متعدد النماذج - قراءة وتدوين ملفات OBJ و STL و glTF 2.0 و GLB.
بدء سريع
Maven التثبيت
إضافة الإدمان التالي إلى الخاص بك pom.xml:
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.5.0</version>
</dependency>أول تحويل لك
أسهل حالة الاستخدام هو تحميل ملف 3D في تنسيق واحد وتخزينها في آخر.هنا تحويل خطين من OBJ إلى STL:
import com.aspose.threed.*;
public class QuickConvert {
public static void main(String[] args) throws Exception {
Scene scene = Scene.fromFile("cube.obj");
scene.save("output.stl");
}
}
وَالْمُتَّقِينَ Scene الدرجة هي نقطة الدخول المركزية.دعوة Scene.fromFile() مع مسار الملف لتحميل نموذج ثم الاتصال save() مع مسار الهدف.المكتبة يضع تنسيق من ملحق الملفات.
بناء مشهد من Scratch
يمكنك أيضًا إنشاء المشاهد برمجة:
import com.aspose.threed.*;
public class BuildScene {
public static void main(String[] args) throws Exception {
Scene scene = new Scene();
Node node = scene.getRootNode().createChildNode("Box");
Transform t = node.getTransform();
t.setTranslation(1, 2, 3);
scene.save("scene.gltf");
}
}
هذا يخلق مشهدًا جديدًّا ، ويضيف عقدة طفل تسمى “صندوق” تحت الجذر ، ويوضعها في إحداثيات (1, 2, 3) ، ويتصدّر النتيجة كملف glTF.
تحميل مع خيارات محددة للفرم
عندما تحتاج إلى السيطرة على عملية التحميل، كل تنسيق يوفر فئة خيارات مخصصة.على سبيل المثال، تحميل ملف STL مع الخيارات المحددة:
import com.aspose.threed.*;
public class LoadWithOptions {
public static void main(String[] args) throws Exception {
StlLoadOptions opts = new StlLoadOptions();
Scene scene = Scene.fromFile("part.stl", opts);
// Inspect the loaded scene
System.out.println("Root children: "
+ scene.getRootNode().getChildNodes().size());
// Re-export as OBJ
scene.save("part.obj");
}
}
وَالْمُتَّقِينَ Scene.fromFile() الطريقة الثابتة تقبل أي من أنواع خيارات الحمل: ObjLoadOptions, StlLoadOptions, GltfLoadOptions,أو FbxLoadOptions.
عبر المسرحية الرسوم البيانية
بمجرد تحميل المشهد ، يمكنك المشي على شجرة العقد لفحص أو تعديل محتواه:
import com.aspose.threed.*;
public class TraverseScene {
public static void main(String[] args) throws Exception {
Scene scene = Scene.fromFile("model.gltf");
for (Node child : scene.getRootNode().getChildNodes()) {
System.out.println("Node: " + child.getName());
Transform t = child.getTransform();
System.out.println(" Translation: " + t.getTranslation());
Entity entity = child.getEntity();
if (entity instanceof Mesh) {
Mesh mesh = (Mesh) entity;
System.out.println(" Vertices: "
+ mesh.getControlPoints().size());
}
}
}
}
هذا النموذج مفيد للتفريغ، وتوليد التقارير حول محتوى النماذجة، أو تعديل بشكل انتقائي أجزاء من المشهد قبل إعادة التصدير.
تطبيق التحويلات
يتم وضع العقد في الفضاء 3D من خلال Transform موضوع لكل Node:
import com.aspose.threed.*;
public class TransformExample {
public static void main(String[] args) throws Exception {
Scene scene = new Scene();
Node parent = scene.getRootNode().createChildNode("Parent");
parent.getTransform().setTranslation(10, 0, 0);
Node child = parent.createChildNode("Child");
child.getTransform().setTranslation(5, 0, 0);
child.getTransform().setScale(2, 2, 2);
// Child's world position is (15, 0, 0) due to
// parent-child transform inheritance
scene.save("transformed.gltf");
}
}
تتبع التحولات نموذج التراث الأب والطفل القياسي: موقف الطفل في الفضاء العالمي هو مزيج من تحولها المحلي وكل الآباء يتحولون إلى الجذر.
ما هو مدرجة
وتضم المكتبة سفن مع مجموعة مركزة من القدرات المصممة حول نموذج الرسومات المشهدية 3D.
مشاهدة Graph
الرسم البياني للمشهد هو الظهر الخلفي لـ API. يتم تمثيل كل ملف 3D كهيكل شجرة:
| الفصول الدراسية | دور |
|---|---|
Scene | حاوية المستوى العلوي؛ جذور الرسم البياني للمشهد |
Node | موقع مُسمى في الشجرة؛ يحتفظ بالتحولات والغدد الصغيرة |
Entity | قاعدة مغلقة للأشياء البصرية المرفقة بالغدد |
Mesh | الهندسة الجيولوجية المتعددة - الأفق، الوجوه، الطبيعية |
Camera | تعريف الكاميرا الافتراضية |
Transform | الترجمة المحلية، والدورات، والمقياس لنوود |
GlobalTransform | تحويل الفضاء العالمي الحاسوبي |
المواد
يقدم المكتبة نموذجًا ماديًّا PBR (الترشيح القائم على الفيزياء):
- PbrMaterial - المواد التي تعتمد على الفيزياء مع ألبيدو، والمعادن، والخشنة، والألوان المنبعثة، والنظافة.هذا هو الطبقة الوحيدة من المادة الفوتوغرافية المتاحة في إصدار جاوا.
أدوات الرياضيات
وَالْمُتَّقِينَ com.aspose.threed وتشمل الحزمة الأساسية الرياضيات البدائية:
- Vector3 - 3-المركب الثابت للمواقع والاتجاهات والألوان.
- ماتريكس4 - 4x4 المصفوفة التحويلية.
- كاتيرن - تمثيل الدوران .
- BoundingBox - مربع الحدود المرتبط بالحافة للطلبات الفضائية.
Vector3 a = new Vector3(1, 0, 0);
Vector3 b = new Vector3(0, 1, 0);
Vector3 c = Vector3.add(a, b); // (1, 1, 0)
تحميل و حفظ الخيارات
كل تنسيق لديه فصول خيارات مخصصة التي تسمح لك بالتحكم في سلوك الواردات والتصدير:
| شكل | تحميل الخيارات | حفظ الخيارات |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| GLTF / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | (مستوردة فقط) |
على سبيل المثال، لتصدير glTF مع JSON مطبوعة بشكل جيد ونظام إحداثيات متسلسلة:
GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);
scene.save("output.gltf", opts);
تنسيقات مدعومة
يلخص الجدول التالي تنسيقات Aspose.3D FOSS for Java يمكن قراءة الكتابة.
| شكل | التمديد | استيراد | تصدير | ملاحظات |
|---|---|---|---|---|
| OBJ | .obj | نعم | نعم | مع مادة MTL |
| STL | .stl | نعم | نعم | البنطال + ASCII |
| GST 2.0 | .gltf | نعم | نعم | تنسيق JSON |
| GLB | .glb | نعم | نعم | التداول عبر GltfSaveOptions |
| FBX | .fbx | نعم | لا | استيراد فقط |
يدعم OBJ و STL و glTF و GLB كل من الشحن والادخار.
إعدادات اختيار دليل
اختيار النموذج الصحيح يعتمد على حالة الاستخدام الخاصة بك:
- OBJ مثالية عندما تحتاج إلى أقصى قدر من التوافق بين الأدوات 3D تقريبا كل تطبيق النمذجة يمكن قراءة وكتابة OBJ. يعمل بشكل جيد لتبادل البيانات الماس ولكن يحمل فقط المعلومات المادية الأساسية من خلال ملفات MTL المرافقين.
- STL هو شكل الاختيار لعمل التدفقات الطباعة 3D. فإنه يخزن الهندسة المثلث الخام دون مواد أو سلسلة المشهد، وهذا هو بالضبط ما يتوقعه البرمجيات القذرة. إذا انتهت خط أنابيبك على طابعة 3d، STL هو الخيار البسيط.
- GLTF هو المعيار الحديث للويب والزمن الحقيقي 3D. يدعم مواد PBR، سلسلة المسرح الكامل، وتصميمها لنقل فعالة.استخدم glTF عند بناء المشاهد على شبكة الإنترنت، والعمل مع three.js أو Babylon.JS، أو استهداف أي خط أنابيب التصوير في الوقت الحقيقية.
- FBX يدمج بعمق في تطوير الألعاب وتدفقات العمل لإنشاء المحتوى الرقمي. يدعم بيانات المشهد الغنية بما في ذلك الهرسك والمواد. Aspose.3D FOSS for Java يدعمه FBX استيراد فقط - استخدمها لتحميل أصول FBX وتحويلها إلى تنسيقات أخرى.
الحد المعروف
ومن المهم أن نلاحظ أنه Scene.render() هو غير مدعوم في إصدار FOSS.دعوة هذه الطريقة سوف يلقي UnsupportedOperationException.تم تصميم المكتبة لمعالجة 3D القائمة على الملفات - تحميل وتلاعب وتحويل ونقل النماذج - بدلا من عرض في الوقت الحقيقي لعرض.
المصدر المفتوح والتصنيف
Aspose.3D FOSS for Java يتم إصدارها تحت رخصة MIT.وهذا يعني أنك حر في:
- استخدم المكتبة في التطبيقات التجارية والملكية.
- تعديل رمز المصدر لتناسب احتياجاتك.
- توزيع المكتبة كجزء من برامجك الخاصة.
لا توجد رسوم الملكية، ولا حدود الاستخدام، وليس هناك متطلبات التخصيص ما وراء ما يحدده ترخيص MIT.
يتم استضافة الرمز المصدر الكامل على GitHub ، والمساهمات موضع ترحيب: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
متطلبات النظام
| مطلوب | التفاصيل |
|---|---|
| نسخة Java | 21 or later |
| الاعتماد | لا يوجد (Java النقي) |
| منصات | أي منصة تعمل JVM |
| بناء أداة | المايا (موصى بها ) |
بدءاً من
إليك الموارد التي تساعدك على الاستيقاظ والركض:
- الوثائق - توفر إرشادات شاملة ومسارات API متاحة على موقع Aspose.3D الوثائقية.
- قاعدة المعرفة - كيفية العمل في المقالات والنصائح التي تحل المشكلات في 3D كوبا.
- إشارة API - إشارة مفصلة إلى الفئة والطريقة في Aspose.3D API مرجعية.
- رمز المصدر - التصفح والمساهمة في GitHub.
- ماين المركزية - يتم نشر الحزمة على أنها
org.aspose:aspose-3d-foss:26.5.0في مركز ماين.
حالات الاستخدام المشترك
إليك بعض السيناريوهات العملية حيث Aspose.3D FOSS for Java يناسب جيدا:
تحويل الأنابيب
العديد من الفرق تتلقى أصول 3D في شكل واحد ولكنها تحتاج إليها في آخر.ويمكن لفريق التصميم العمل على FBX بينما يحتاج فريق الويب إلى glTF.تسمح لك المكتبة ببناء أنابيب التحويل الآلي:
// Convert all incoming FBX assets to GLB for the web team
Scene scene = Scene.fromFile("asset.fbx");
GltfSaveOptions opts = new GltfSaveOptions();
opts.setContentType(FileContentType.BINARY);
scene.save("asset.glb", opts);
3D Model Inspection and Validation
قبل دمج أصول 3D في تطبيقك ، قد ترغب في تأكيد محتوياتها - التحقق من حسابات العقد ، والتحقق في الهندسة الجيولوجية ، أو التأكد من وجود العناصر المتوقعة:
Scene scene = Scene.fromFile("model.obj");
int nodeCount = scene.getRootNode().getChildNodes().size();
System.out.println("Top-level nodes: " + nodeCount);
for (Node child : scene.getRootNode().getChildNodes()) {
if (child.getEntity() instanceof Mesh) {
Mesh mesh = (Mesh) child.getEntity();
System.out.println(child.getName() + ": "
+ mesh.getControlPoints().size() + " vertices");
}
}
مجمع المشهد
يمكنك تحميل العديد من النماذج ودمجها في مشهد واحد:
Scene scene = new Scene();
Scene part1 = Scene.fromFile("chassis.obj");
Scene part2 = Scene.fromFile("wheels.obj");
// Add nodes from each part into the combined scene
for (Node child : part1.getRootNode().getChildNodes()) {
scene.getRootNode().getChildNodes().add(child);
}
for (Node child : part2.getRootNode().getChildNodes()) {
scene.getRootNode().getChildNodes().add(child);
}
scene.save("assembled.gltf");
ما هو التالي
في المقالات القادمة سوف نغطي:
- غمر عميق في الميزات الرئيسية لـ API المسرحية والمواد والوسائل الرياضية.
- دليل عملي للعمل مع كل تنسيق 3D مدعوم - OBJ، STL، glTF، و FBX - بما في ذلك خيارات التحميل / حفظ ونماذج تحويل المجموعة.
ابق متحمسًا ، وشعور حر لاستكشاف المكتبة ومشاركة ردود الفعل الخاصة بك على GitHub.