باختصار
- يضيف المشغّل النموذجي 1.0 إلى موضع X للعناصر في المشهد النشط.
- بعد تجربة الإضافة في Blender، يمكنك حفظها كملف بامتداد .py وتثبيتها من Preferences.
- عند تفعيل الإضافة، يشغّل Blender الدالة register()، وعند تعطيلها يشغّل unregister().
- يمكن تشغيل Blender في الخلفية من دون فتح الواجهة باستخدام الخيار -b.
ما الذي ستتعلمه في هذا الدليل؟
في هذا الدليل، ستتعرّف إلى كيفية تحويل نص Python بسيط في Blender إلى مشغّل، ثم إلى إضافة قابلة للتثبيت. تحرّك الأداة النموذجية موضع X لكل عنصر في المشهد النشط بمقدار 1.0. ليس الهدف استخدام هذه العملية في كل مشروع معماري، بل توضيح العناصر الأساسية لتطوير الأدوات في Blender، وكيفية حفظ الشيفرة واستدعائها من واجهة المستخدم.
سنتناول أيضًا بعض الخيارات المستخدمة لبدء التصيير في الخلفية من سطر الأوامر. تطوير الإضافات والتصيير مساران مختلفان للعمل؛ وما يجمع بينهما هو تحويل المهام المتكررة إلى خطوات محددة يسهل تتبّعها. من الأفضل تجربة العمليات الواردة في الأمثلة على نسخة من الملف قبل استخدامها في مشروع مهم.
المتطلبات
تحتاج إلى معرفة أساسيات استخدام Blender وتشغيل النصوص البرمجية في مساحة Text Editor. كما يفترض دليل الإضافات في Blender أن تكون لديك معرفة بأنواع البيانات الأساسية في Python ووحداتها وفئاتها. ويُعد تشغيل Blender من الطرفية إحدى الطرق التي يوصي بها الدليل الرسمي لتحليل رسائل الأخطاء بمزيد من التفصيل.
في قاموس bl_info ضمن مثال الإضافة أدناه، تشير القيمة (2, 80, 0) إلى الحد الأدنى لإصدار Blender المطلوب لتشغيل الإضافة. ولا يعني ذلك أن الإضافة متوافقة تلقائيًا مع الإصدارات الأحدث؛ لذا ينبغي اختبار الشيفرة على الإصدار الذي ستُستخدم فيه. أما وثائق سطر الأوامر، فترد في دليل Blender 5.2 LTS.
إنشاء أول إضافة خطوة بخطوة
افتح نصًا جديدًا في مساحة Text Editor في Blender، ثم أضف الشيفرة التالية. تعرّف الشيفرة مشغّلًا باسم
ObjectMoveX. عند تشغيله، يمرّ على عناصر المشهد النشط ويزيد موضع X لكل عنصر بمقدار 1.0. يفعّل الخيارUNDOإمكانية التراجع عن تنفيذ المشغّل.
bl_info = {
'name': 'Move X Axis',
'blender': (2, 80, 0),
'category': 'Object',
}
import bpy
class ObjectMoveX(bpy.types.Operator):
"""Move every scene object along the X axis."""
bl_idname = 'object.move_x'
bl_label = 'Move X by One'
bl_options = {'REGISTER', 'UNDO'}
def execute(self, context):
scene = context.scene
for obj in scene.objects:
obj.location.x += 1.0
return {'FINISHED'}
def register():
bpy.utils.register_class(ObjectMoveX)
def unregister():
bpy.utils.unregister_class(ObjectMoveX)
if __name__ == '__main__':
register()يوفر bl_info معلومات إلى Blender، مثل اسم الإضافة وفئتها؛ كما يحدد حقل الإصدار في المثال الحد الأدنى للمتطلبات. أما execute() فتحتوي على العملية التي تُنفّذ عند تشغيل المشغّل. وهنا يُستمد سياق المشهد عبر context المُمرّر إلى الدالة. ويوصي الدليل الرسمي باستخدام هذه المعلمة في المشغّلات كلما أمكن.
شغّل الشيفرة بالنقر على زر Run Script في Text Editor. في هذه المرحلة، يُسجّل المشغّل، لكن العناصر لا تتحرك بعد. افتح قائمة Operator Search وابحث عن
Move X by One، ثم اضغط Enter. وفي مثال الدليل، يُحدّد الاسم الظاهر في الحقلbl_label.لحفظ النص البرمجي كإضافة، احفظه باسم ملف ينتهي بامتداد
.pyويلتزم بقواعد تسمية وحدات Python. افتح المسار Preferences > Add-ons > Install… في Blender، ثم اختر الملف. فعّل الإضافة بعد ظهورها في القائمة. وإذا أردت أن تظل مفعّلة بعد إعادة التشغيل، فاستخدم خيار Save as Default الوارد في الدليل.
عند تفعيل الإضافة، يستدعي Blender الدالة register()، وعند تعطيلها يستدعي الدالة unregister(). وتتولى هاتان الدالتان في الشيفرة تسجيل فئة المشغّل وإزالتها. يتيح تشغيل النص البرمجي مباشرةً أثناء التطوير إجراء تجربة سريعة، بينما يسمح تثبيت الإضافة لـBlender بإدارتها ضمن قائمة الإضافات في التفضيلات.
الاستخدام في سير عمل العمارة والتصوّر
يؤثر المشغّل في المثال على جميع عناصر المشهد النشط. لذلك، من المهم تحديد العناصر التي ستتحرك عند تشغيله مباشرةً في مشهد معماري. وإذا طُوّرت أداة كهذه في مكتب، فينبغي تحديد نطاق عملها وفق بنية المشروع وتجربتها أولًا في مشهد تجريبي. فهذا المثال ليس أداة جاهزة للتوزيع المعماري، بل تمرين تمهيدي يشرح منطق المشغّلات.
يتضمن دليل الإضافات في Blender مثالًا ثانيًا يضع نسخًا مترابطة من العنصر النشط بين مؤشر 3D والعنصر نفسه. وتُربط النسخ بمجموعة المشهد، ويُحسب موضعها وفق العلاقة بين العنصر والمؤشر. وقد ثُبّت العدد الإجمالي للنسخ في الإصدار الأول عند 10. يوضح المثال كيفية إنشاء أدوات للعناصر المتكررة، كما يشير إلى إمكانية إضافة إعدادات يغيّرها المستخدم.
يمكنك تشغيل Blender في وضع الخلفية باستخدام الخيار -b أو --background لبدء التصيير من سطر الأوامر. ويضبط مثال Cycles الوارد في الوثائق الرسمية إطارًا وجهازًا محددين على النحو التالي:
blender -b file.blend -f 20 -- --cycles-device OPTIXيصيّر هذا الأمر الإطار 20 ويختار جهاز OPTIX. وتسرد الوثائق الخيارات المتاحة لأجهزة Cycles على النحو التالي: CPU وCUDA وOPTIX وHIP وONEAPI وMETAL. وينبغي أن يكون اختيار الجهاز متوافقًا مع النظام المستخدم.
تتضمن الوثائق أيضًا مثالًا منفصلًا لإخراج إطارات الرسوم المتحركة بصيغة PNG:
blender -b animation.blend -o //render_ -F PNG -x 1 -aفي هذا الأمر، يحدد -o مسار الإخراج، ويحدد -F تنسيق الملف، ويشير -x إلى إضافة الامتداد، بينما يطلب -a تصيير إطارات الرسوم المتحركة. ويُفسّر المسار الذي يبدأ بـ// على أنه نسبي إلى ملف .blend. وإذا استُخدمت أحرف # في اسم الملف، فإنها تعمل كعنصر نائب لرقم الإطار. يلبّي المثالان احتياجات مختلفة؛ لذا ينبغي ضبط خيارات الإطار وتنسيق الملف وموقع الإخراج والجهاز وفق نوع التصيير المطلوب.
قد يفيد هذا النهج مستخدمي Blender الراغبين في أتمتة عمليات المشهد المتكررة، والفرق التي تخطط للتصيير خارج الواجهة. لكن المصادر لا تحدد متطلبات عتاد معينة أو تكاليف ترخيص. لذا ينبغي التحقق من توافق الإضافة مع إصدار Blender المستخدم، ومن توافق الجهاز المحدد مع نظام التصيير، مع تحديد إعدادات الإخراج بوضوح.
أخطاء شائعة وخطوات تالية
لا تخلط بين تشغيل النص البرمجي وتشغيل المشغّل. في المثال، تسجّل الخطوة الأولى المشغّل؛ أما تغيير المشهد فيتطلب استدعاءه بشكل منفصل.
راجع نطاق عمل المشغّل. يغيّر المثال موضع X لجميع العناصر في المشهد النشط.
تعامل مع القيمة
(2, 80, 0)فيbl_infoعلى أنها الحد الأدنى لمتطلبات الإصدار، ولا تعتبرها ضمانًا للتوافق مع إصدارات Blender الأحدث.حدّد مسار الملف وتنسيق الإخراج ونطاق الإطارات وجهاز Cycles حسب الحاجة عند التصيير في الخلفية. فقد يتضمن أحد الأمرين النموذجيين إعدادات غير موجودة في الآخر.
في الخطوة التالية، يمكنك مراجعة عنواني bpy.context وbpy.types.Operator في وثائق Blender API. كما يتناول دليل الإضافات الرسمي خصائص المشغّلات وكيفية تحويل القيم الثابتة إلى إعدادات يمكن للمستخدم ضبطها. ومع توسّع الأداة، قد يساعد تحويل قيم مثل عدد النسخ إلى خيارات قابلة للتعديل على تلبية احتياجات المشاهد المختلفة.
المصادر والترخيص
أُعدّ هذا الدليل بالاستناد إلى وثيقتي “Add-on Tutorial” و“Command Line Arguments” في Blender Manual. ونُشرت الوثيقتان بموجب ترخيص CC BY-SA 4.0؛ وقد جرى تكييف المحتوى إلى التركية بما يتوافق مع شروط هذا الترخيص.
المصادر
2 مصادرلا نعيد نشر نصوص المصادر؛ الاقتباسات القصيرة مشار إليها، وما تبقى ملخص وتعليق من إعدادنا.
يوفر مثال صغير على المشغّل أساسًا واضحًا لمكاتب العمارة والطلاب الراغبين في البدء بأتمتة المهام المتكررة في Blender. ولا تكمن الفائدة الأساسية في استخدام عملية تحريك العناصر الواردة في المثال كما هي، بل في فهم العلاقة بين خطوات المشغّل وتسجيله وتشغيله، ثم تكييفها وفق احتياجات المشروع.
قبل التطبيق في تركيا، ينبغي مراعاة خبرة الفريق في Python وإصدار Blender الذي سيُستخدم. ولا تحدد المصادر تكلفة للإضافة أو متطلبات خاصة للعتاد. أما في التصيير في الخلفية، فمن المهم التأكد من توافق جهاز Cycles المختار مع النظام، وتحديد إعدادات الإخراج بوضوح.
الأسئلة الشائعة
كيف تثبّت إضافة Python في Blender؟
احفظ شيفرة الإضافة في ملف بامتداد `.py`. ثم اختر الملف من المسار Preferences > Add-ons > Install… وفعّل الإضافة.
هل يتغير المشهد فور تشغيل مشغّل Blender؟
في المثال، يؤدي تشغيل النص البرمجي إلى تسجيل المشغّل. ولتغيير المشهد، يجب تشغيل المشغّل بشكل منفصل من قائمة Operator Search.
هل يستطيع Blender التصيير من دون واجهة؟
نعم. يشغّل الخيار `-b` أو `--background` Blender في وضع الخلفية من سطر الأوامر.



