مقدمة
العمل مع محتوى 3D في Java عادة ما يتطلب الاختيار بين الوزن الثقيل محركات الألعاب ومكتبات الرياضيات بار-بونز. aspose-3d-foss الحزمة تقدم A الأرض الوسطى: API المركزة في المسرحية التي تتعامل مع ملفات I/O، هيراخات العقد،, بناء الماس، وتنسيق التحولات دون سحب في تسليم خط أنابيب أو سلسلة إدمانية محلية.
Aspose.3D FOSS for Java هو مكتبة مفتوحة المصدر توزيع تحت ترخيص MIT. يوفر 80 فئة من الإدارة المسرحية، والهندسة الجيومترية، والمواد، وتحويل النموذج. يقرأ المكتبة FBX، glTF/GLB، Wavefront OBJ، وSTL، ويكتب glTF/GLB، OBJ، وSTL (التصدير FBX لا يتم تنفيذها)، مما يجعلها عملية لخادم-جانب المعالجة 3D، ودمج الأدوات، وأنابيب تحويل البيانات التي تعمل على Java 21 أو لاحق.
هذا المنشور يمر من خلال قدرات إدارة المشهد في المكتبة: كيفية بناء المشهد من القذف، وتسجيلها مع الهندسة والترمذيات، وتصدير النتيجة إلى القرص.
ما هو مدرجة
مسرحية الرسومات الأساسية
وَالْمُ Scene فئة هي حاوية الجذر لكل وثيقة 3D. Node, الأصول البيانات الميتا, مقاطع الفيديو الرسوم المتحركة, و sub-المسرحيات. عرض ثم نشرها، أو تحميل ملف موجود مع Scene.fromFile.
import com.aspose.threed.Scene;
import com.aspose.threed.Node;
Scene scene = new Scene();
Node root = scene.getRootNode();
// Add named child nodes to build a hierarchy
Node chassis = root.createChildNode("Chassis");
Node wheel = chassis.createChildNode("FrontLeftWheel");
كل واحد Node يمكن أن يحتفظ Entity (مثل أ Mesh أو Camera) ، أ Transform, قائمة المواد, و المزيد من عقدة الطفل. مرآة نموذج الرسوم البيانية المستخدمة من قبل معظم أدوات الكتابة 3D.
بناء الماس
وَالْمُ Mesh تتيح لك الفصول الدراسية تحديد الهندسة من نقاط التحكم والمتعدد أضف إضافات مع addControlPoint,ثم ربطها في الوجوه مع createPolygon.
import com.aspose.threed.Mesh;
Mesh box = new Mesh("Box");
// Define eight corners of a cube
box.addControlPoint(0, 0, 0);
box.addControlPoint(1, 0, 0);
box.addControlPoint(1, 1, 0);
box.addControlPoint(0, 1, 0);
box.addControlPoint(0, 0, 1);
box.addControlPoint(1, 0, 1);
box.addControlPoint(1, 1, 1);
box.addControlPoint(0, 1, 1);
// Create quad faces
box.createPolygon(0, 1, 2, 3); // back
box.createPolygon(4, 5, 6, 7); // front
box.createPolygon(0, 4, 7, 3); // left
box.createPolygon(1, 5, 6, 2); // right
box.createPolygon(3, 2, 6, 7); // top
box.createPolygon(0, 1, 5, 4); // bottom
scene.getRootNode().createChildNode("Box", box);
ويشمل النار الماس triangulate(), optimize(removeVertices),و بوليان العملية (union, difference, intersectولكن هذه الطرق متوفرة في الإصدار الحالي - يعودون إلى كلوان من الماسد الإدخال دون إجراء العملية المسمى .
تحويلات ومواقف
كل واحد Node يحمل أ Transform التي تسيطر على ترجمتها المحلية، والدورات،, وتتكون هذه من خلال الهرمية بحيث تتحرك عقدة الوالدين يحرك كل أطفالها.
import com.aspose.threed.Transform;
import com.aspose.threed.Node;
Node node = scene.getRootNode().createChildNode("Shifted");
Transform t = node.getTransform();
t.setTranslation(5.0, 0.0, -3.0);
t.setScale(2.0, 2.0, 2.0);
t.setEulerAngles(0, 45.0, 0);
للحصول على استفسارات وضعية مطلقة، اتصل node.getGlobalTransform() من أجل الاستيلاء من المكونات GlobalTransform,أو node.evaluateGlobalTransform(true) للحصول على A Matrix4 وهذا يشمل الأوراق الجيومترية.
PBR المواد
وَالْمُ PbrMaterial تتيح الفئة خصائص التصوير القائمة على الخصائص الفيزيائية: ألبيدو اللون، عامل المعدن، الصلابة، اللون المنبعث، والشفافية. إعطاء مادة إلى عقدة عند إنشاء الطفل.
import com.aspose.threed.PbrMaterial;
import com.aspose.threed.Vector4;
import com.aspose.threed.Vector3;
PbrMaterial mat = new PbrMaterial("RedMetal");
mat.setAlbedo(new Vector4(0.9, 0.1, 0.1, 1.0));
mat.setMetallicFactor(0.8);
mat.setRoughnessFactor(0.3);
mat.setEmissiveColor(new Vector3(0, 0, 0));
scene.getRootNode().createChildNode("Part", box, mat);
تشكيل الكشف
وَالْمُ FileFormat تتوفر فئة البحث والبحث الثابتة.يمكنك حل تنسيق عن طريق توسيع الملف أو استكشاف تدفق لتحديد الملفات غير المعروفة.
import com.aspose.threed.FileFormat;
FileFormat fmt = FileFormat.getFormatByExtension("model.glb");
boolean canRead = fmt.getCanImport();
boolean canWrite = fmt.getCanExport();
نظام التحويل المنسق
AxisSystem يتيح لك تحديد محور الأعلى، محور الأمام، ومدى نظام التنسيق، ثم حساب Matrix4 تحويل الهندسة الجيولوجية بين الاتفاقيات (على سبيل المثال، من نظام اليد اليمنى Z-up إلى Y-up اليد اليسرى ( 1 ).
import com.aspose.threed.AxisSystem;
import com.aspose.threed.Axis;
import com.aspose.threed.CoordinateSystem;
import com.aspose.threed.Matrix4;
AxisSystem source = new AxisSystem(
CoordinateSystem.RIGHT_HANDED, Axis.Z_AXIS, Axis.Y_AXIS);
AxisSystem target = new AxisSystem(
CoordinateSystem.LEFT_HANDED, Axis.Y_AXIS, Axis.Z_AXIS);
Matrix4 conversion = source.transformTo(target);
بدء سريع
إضافة إلى الاعتماد على Maven:
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.5.0</version>
</dependency>قم بإنشاء مشهد بسيط واستخراجها:
import com.aspose.threed.Scene;
import com.aspose.threed.Mesh;
import com.aspose.threed.Node;
import com.aspose.threed.StlSaveOptions;
import com.aspose.threed.FileContentType;
Scene scene = new Scene();
Mesh mesh = new Mesh("Triangle");
mesh.addControlPoint(0, 0, 0);
mesh.addControlPoint(1, 0, 0);
mesh.addControlPoint(0, 1, 0);
mesh.createPolygon(0, 1, 2);
scene.getRootNode().createChildNode("Shape", mesh);
StlSaveOptions opts = new StlSaveOptions();
opts.setContentType(FileContentType.BINARY);
scene.save("output.stl", opts);
تنسيقات مدعومة
| شكل | التمديد | قراءة | كتب |
|---|---|---|---|
| FBX (ASCII و Binary، 6.x-7.x) | .fbx | نعم | لا |
| GST 1.0 / 2.0 | .gltf | نعم | نعم |
| GSTB binary | .glb | نعم | نعم |
| جبهة Wavefront OBJ | .obj | نعم | نعم |
| STL (ASCII وBinary) | .stl | نعم | نعم |
كل شكل مخصص LoadOptions و SaveOptions المدارس (لأنه مثال على ذلك،, FbxLoadOptions, GltfSaveOptions, StlSaveOptions(وهذا يظهر إعدادات محددة للنموذج مثل إعدادات نظام الإحداثيات ونوع المحتوى اختيار.
المصدر المفتوح و الترخيص
Aspose.3D FOSS for Java يتم إصدارها تحت ترخيص MIT. متوفر على GitHub Aspose.3D-FOSS-للجافا. يمكنك استخدام وتعديل وإعادة توزيع المكتبة في التجارة وال المشاريع غير التجارية دون قيود.
بدءاً
- دليل المطور - أضواء المشي و استخدام النماذج
- قاعدة المعرفة كيفية التعامل مع المقالات وال FAQs
- إشارة API - الفئة الكاملة و طريقة الوثائق