دعم الصيغ

Aspose.3D FOSS لـ Python يمكنه قراءة وكتابة سبعة صيغ ثلاثية الأبعاد باستخدام تمثيل مشهد واحد في الذاكرة. المكتبة تُحوّل كل صيغة إلى كائن مشترك Scene كائن عند التحميل وتُسلسل ذلك الكائن مرة أخرى إلى الصيغة المستهدفة عند الحفظ. هذا يعني أن المشهد المحمّل من OBJ يمكن حفظه مباشرةً إلى glTF دون أي خطوات تحويل وسيطة.


الصيغ المدعومة

الصيغةالامتدادقراءةكتابةفئة الخياراتملاحظات
Wavefront OBJ.objنعمنعمObjLoadOptions.mtl دعم تحميل المواد
STL (binary).stlنعمنعمStlSaveOptionsقراءة ثنائية وASCII؛ الحفظ افتراضيًا بصيغة ثنائية
STL (ASCII).stlنعمنعمStlSaveOptionsتم التحقق من الرحلة ذهابًا وإيابًا
glTF 2.0.gltfنعمنعمGltfSaveOptionsتم الحفاظ على مخطط المشهد الكامل والمواد والرسوم المتحركة
GLB (binary glTF).glbنعمنعمGltfSaveOptionsحاوية ثنائية ملف واحد
COLLADA.daeنعمنعمColladaLoadOptions / ColladaSaveOptionsتسلسل المشهد والمواد
3MF.3mfنعمنعمThreeMfSaveOptionsتنسيق التصنيع الإضافي
FBX.fbxجزئيلاN/Aالمعالج اللغوي يعمل؛ المحلل الكامل قيد التطوير (غير جاهز للإنتاج)

صيغة OBJ

Wavefront OBJ هو أكثر تنسيق تبادل مدعوم على نطاق واسع للشبكات الساكنة. Aspose.3D FOSS يحمل الهندسة (الرؤوس، المتجهات العمودية، إحداثيات UV، والوجوه المتعددة الأضلاع) وباختياري المرافق .mtl ملف المادة.

ObjLoadOptions

خاصيةالنوعالافتراضيالوصف
enable_materialsboolTrueتحليل .mtl الملف المشار إليه برأس OBJ
flip_coordinate_systemboolFalseتحويل من نظام Y‑up الأيمن إلى نظام Z‑up الأيمن
normalize_normalboolTrueتطبيع جميع المتجهات السطحية المستوردة إلى طول وحدة
scalefloat1.0عامل مقياس موحد يُطبق على جميع مواضع الرؤوس

تحميل ملف OBJ

from aspose.threed import Scene
from aspose.threed.formats import ObjLoadOptions

options = ObjLoadOptions()
options.enable_materials = True
options.flip_coordinate_system = False
options.scale = 1.0

scene = Scene()
scene.open("model.obj", options)

print(f"Top-level nodes: {len(scene.root_node.child_nodes)}")

حفظ إلى OBJ

scene.save("output.obj")

يكتب تصدير OBJ مواضع الرؤوس ووجوه المضلعات. إذا كان المشهد يحتوي على LambertMaterial أو PhongMaterial الكائنات، تقوم المكتبة بكتابة ملف مرفق .mtl تلقائيًا.


تنسيق STL

يخزن STL (STereoLithography) شبكات المثلثات كقائمة غير مفهرسة من الوجوه. يتم دعم كل من النسختين الثنائية وASCII للقراءة؛ وتكون الإعدادات الافتراضية للمكتبة هي الثنائية عند الحفظ.

StlSaveOptions

StlSaveOptions ليس له حقول إلزامية. أنشئ نسخة منه لتمريرها إلى scene.save():

from aspose.threed.formats import StlSaveOptions

opts = StlSaveOptions()
scene.save("output.stl", opts)

مثال الجولة الكاملة

from aspose.threed import Scene

##Load
scene = Scene.from_file("model.stl")

##Inspect
for node in scene.root_node.child_nodes:
    if node.entity:
        print(f"{node.name}: {len(node.entity.control_points)} vertices")

##Save
scene.save("roundtrip.stl")

يخزن STL فقط هندسة المثلثات، دون أي متجهات عمودية بخلاف العمودي للوجه، ولا إحداثيات UV، ولا مواد، ولا هيكلية. إذا كان المشهد يحتوي على رباعيات أو مضلعات من رتبة أعلى، يتم تحويلها إلى مثلثات تلقائيًا عند الحفظ.


تنسيق glTF / GLB

glTF 2.0 هو التنسيق الموصى به لتبادل 3D الحديث. يحافظ على رسم المشهد الكامل (تسلسل العقد، العقد المسماة، التحويلات)، المواد (LambertMaterial, PhongMaterial → تحويل PBR)، ومقاطع الرسوم المتحركة. GLB هو النسخة الثنائية ذات الملف الواحد.

GltfSaveOptions

from aspose.threed.formats import GltfSaveOptions

opts = GltfSaveOptions()
scene.save("output.gltf", opts)   # JSON + external .bin
scene.save("output.glb",  opts)   # Self-contained binary

دعم المواد

Aspose.3D مواد FOSS يتم ربطها بـ glTF pbrMetallicRoughness عند التصدير:

from aspose.threed import Scene
from aspose.threed.shading import PhongMaterial
from aspose.threed.utilities import Vector3

scene = Scene()
node = scene.root_node.create_child_node("object")

mat = PhongMaterial()
mat.diffuse_color  = Vector3(0.8, 0.2, 0.2)   # red
mat.specular_color = Vector3(1.0, 1.0, 1.0)
mat.shininess = 50.0
node.material = mat

scene.save("colored.gltf")

التحقق من مخرجات glTF

import json

with open("output.gltf") as f:
    data = json.load(f)

print(f"Asset version : {data['asset']['version']}")
print(f"Nodes         : {len(data.get('nodes', []))}")
print(f"Meshes        : {len(data.get('meshes', []))}")

تنسيق COLLADA

COLLADA (.dae) هو تنسيق قائم على XML يدعم هياكل المشهد، المواد، قنوات UV متعددة، والرسوم المتحركة الهيكلية. Aspose.3D FOSS يقرأ ويكتب شجرة العقد الكاملة وتعريفات المواد.

from aspose.threed import Scene

##Load a COLLADA file
scene = Scene.from_file("model.dae")

##Inspect top-level nodes
for node in scene.root_node.child_nodes:
    print(f"  {node.name}")

##Save back to COLLADA
scene.save("output.dae")

COLLADA خيار جيد عندما تحتاج إلى نقل هياكل الشجرة مع العقد المسماة والمواد دون أي فقدان للبيانات.


3MF Format

3MF (3D Manufacturing Format) targets additive manufacturing (3D printing) workflows. It stores triangle geometry, colour, and print-specific metadata in a ZIP-based container.

from aspose.threed import Scene
from aspose.threed.formats import ThreeMfSaveOptions

scene = Scene.from_file("part.stl")   # Load from STL
opts  = ThreeMfSaveOptions()
scene.save("part.3mf", opts)          # Write as 3MF

3MF is the recommended export format when targeting slicer software (Cura, PrusaSlicer, Bambu Studio, etc.).


تنسيق FBX

الحالة: قيد التقدم (ليس جاهزًا للإنتاج).

FBX (.fbx) الدعم في Aspose.3D FOSS حاليًا في مرحلة المحلل اللغوي. يمكن للمحلل الثنائي لـ FBX تحليل بنية الملف، لكن محلل العقد، الشبكة، والمواد الكامل يحتوي على أخطاء معروفة وغير مكتمل. يجب اعتبار نتائج قراءة FBX تجريبية.

لا تستخدم FBX في خطوط الإنتاج مع هذا الإصدار. إذا كانت بيانات المصدر الخاصة بك بصيغة FBX، فحوّلها إلى glTF أو OBJ أولاً باستخدام Blender أو FBX Review قبل التحميل باستخدام Aspose.3D FOSS.

الكتابة بصيغة FBX غير مدعومة.


الكشف التلقائي عن الصيغة

Scene.from_file() و scene.open() اكتشاف الصيغة تلقائيًا باستخدام امتداد الملف، وعند توفره، بايتات السحر في رأس الملف:

from aspose.threed import Scene

##The library detects each format without being told explicitly
scene_obj  = Scene.from_file("model.obj")
scene_glb  = Scene.from_file("model.glb")
scene_stl  = Scene.from_file("model.stl")
scene_dae  = Scene.from_file("model.dae")
scene_3mf  = Scene.from_file("model.3mf")

إذا كان الامتداد غير موجود أو غامض، فإن المكتبة تلجأ إلى فحص الرأس (بايتات السحر). الملفات غير المدعومة أو غير المعروفة تُثير an IOError مع رسالة وصفية.


نصائح وأفضل الممارسات

  • استخدم glTF أو GLB للأنابيب الحديثة. يحافظ glTF على مخطط المشهد الكامل، والمواد، وبيانات الرسوم المتحركة. إنه أكثر تنسيق كامل للتبادل مع محركات الألعاب وعارضي الويب.
  • استخدم OBJ لتحقيق أقصى توافق. يتم دعم OBJ من قبل كل أداة ثلاثية الأبعاد تقريبًا. هو محدود على الشبكات الثابتة لكنه قابل للنقل بشكل كبير.
  • استخدم 3MF للطباعة. 3MF carries colour, orientation hints, and print settings that STL cannot express.
  • تجنب FBX حتى يصبح جاهزًا للإنتاج. تحقق من ملاحظات الإصدار للنسخة التي يكتمل فيها تحليل FBX بالكامل.
  • طابق امتداد الحفظ مع الصيغة. لا تمرّر a .gltf امتدادًا عندما تريد GLB ثنائي؛ استخدم .glb بشكل صريح. يحدد الامتداد أي مُسلسِل يُستَخدم.
  • تحقق من توافق المضلعات. يتطلب STL و3MF مثلثات. يتم تحويل الأرباع وN‑gons إلى مثلثات تلقائيًا عند الحفظ، لكن عدد الرؤوس سيزداد. إذا كنت بحاجة إلى التحكم في عملية التحويل إلى مثلثات، استدعِ mesh.triangulate() قبل الحفظ.
 العربية