باختصار
- يمكن الوصول إلى الكاميرا النشطة عبر `scene.camera` وتغيير قيمة العدسة.
- يمكن تفعيل دليل الأثلاث باستخدام الخاصية `show_composition_thirds` في بيانات الكاميرا.
- يُحدَّد نطاق الحركة باستخدام الخاصيتين `frame_start` و`frame_end`.
- أُوقفت الخاصية `scene.use_nodes` ابتداءً من Blender 5.0؛ ويجب استخدام `scene.render.use_compositing` لإعداد تركيب الصورة.
ما الذي ستتعلمه في هذا الدليل؟
تساعد إدارة إعدادات الكاميرا والتوقيت في مشهد التصوير المعماري عبر Python API في Blender على إنشاء سير عمل قابل للتكرار. في هذا الدليل، نتناول كيفية العثور على الكاميرا النشطة، وتغيير البعد البؤري، وتفعيل دليل التأطير، وتحديد إطاري البداية والنهاية للحركة. وفي القسم الأخير، ستتعرف إلى كيفية تحديد نطاق معاينة أقصر والتحقق من الأخطاء الشائعة.
تعتمد الأمثلة هنا على خصائص Scene وCamera الموضحة في وثائق API الحالية لـ Blender. ليس الهدف أتمتة جميع إعدادات التصيير، بل تطبيق قرارات أساسية مثل تأطير الكاميرا والنطاق الزمني على المشهد بطريقة منضبطة.
المتطلبات
شغّل الأمثلة في بيئة تتيح استخدام Python API في Blender. تفترض الشيفرات أن الوحدة النمطية bpy وسياق المشهد النشط متاحان داخل Blender. وفقًا للوثائق، يمكن الوصول إلى المشهد عبر bpy.context.scene، وتُحفَظ الكاميرا النشطة للمشهد في الخاصية scene.camera.
هذه صفحات API حديثة. وتشير الوثائق أيضًا إلى أن Scene.use_nodes أُوقفت ابتداءً من Blender 5.0، وأن إزالة الخاصية مخططة في الإصدار 6.0. لا يحتاج هذا الدليل إلى هذه الخاصية في أمثلة الكاميرا ونطاق الإطارات، لأنه لا يُنشئ عقد التركيب. ولا تذكر المصادر أي متطلبات لحساب مستخدم.
من الممارسات الجيدة الاحتفاظ بنسخة من ملف المشروع قبل تطبيق الشيفرات، وتجربة القيم في مشهد اختباري صغير. ويساعد ذلك على تجنب تغيير إعدادات المشهد الحالية عن غير قصد، لا سيما في المشاريع التي تتضمن ترتيبات كاميرا أو نطاقات حركة مختلفة.
1. التحقق من الكاميرا النشطة
تحقق أولًا من وجود كاميرا نشطة لاستخدامها في المشهد. تشير Scene.camera إلى الكاميرا النشطة المستخدمة للتصيير. تطبع الشيفرة التالية اسم الكاميرا إن وُجدت، أو تُظهر رسالة تفيد بعدم وجود كاميرا نشطة في المشهد. ويوفر هذا التحقق نقطة بداية آمنة قبل الوصول إلى بيانات الكاميرا في الشيفرات اللاحقة.
scene = bpy.context.scene
camera = scene.camera
if camera is None:
print("Sahnede aktif kamera yok.")
else:
print("Aktif kamera:", camera.name)وجود كاميرا في المشهد لا يعني بالضرورة أنها محددة بوصفها الكاميرا النشطة. لا تصل الشيفرة إلا إلى الكاميرا النشطة عبر scene.camera. إذا أظهر التحقق عدم وجود كاميرا، فحدّد الكاميرا التي ستُستخدم في المشهد قبل الانتقال إلى إعدادات العدسة والتأطير.
2. ضبط قيمة العدسة ودليل التأطير
تُحفَظ إعدادات كائن الكاميرا في كتلة بيانات الكاميرا التي يمكن الوصول إليها عبر camera.data. في الكاميرا المنظورية، تعبّر lens عن البعد البؤري بالملليمتر. القيمة الافتراضية الواردة في الوثائق هي 50,0 mm؛ وفي هذا المثال تُضبط القيمة على 35,0 mm. هذا تغيير رقمي لإعداد عبر API، ولا يضمن وصول المشهد إلى نتيجة معمارية محددة. راجع الصورة لاختيار قيمة مناسبة.
scene = bpy.context.scene
camera = scene.camera
if camera is not None:
camera.data.lens = 35.0يمكنك تفعيل دليل الأثلاث في عرض الكاميرا بتشغيل الخاصية show_composition_thirds في كتلة البيانات نفسها. يساعد الدليل على تقييم مواضع العناصر داخل الإطار، لكنه لا يغيّر الهندسة أو موضع الكاميرا تلقائيًا.
scene = bpy.context.scene
camera = scene.camera
if camera is not None:
camera.data.show_composition_thirds = Trueإذا لم يظهر الدليل، فتحقق من أنك في عرض الكاميرا ومن الكاميرا النشطة. تندرج هذه الخاصية ضمن إعدادات عرض أدلة التكوين في الكاميرا في API. وتورد الوثائق أيضًا أدلة تكوين أخرى، منها المركز والنسبة الذهبية؛ لكن المثال هنا يقتصر على دليل الأثلاث لتقييم التأطير المعماري.
3. تحديد نطاق إطارات الحركة
تُحدَّد نقطتا البداية والنهاية لنطاق التشغيل والتصيير في المشهد باستخدام الخاصيتين frame_start وframe_end. يضبط المثال التالي النطاق من الإطار 1 إلى الإطار 120، وينقل الإطار الحالي للمشهد إلى إطار البداية. هذه قيم توضيحية؛ غيّرها وفقًا لطول الحركة لديك.
scene = bpy.context.scene
scene.frame_start = 1
scene.frame_end = 120
scene.frame_set(scene.frame_start)تحدّث frame_set() الكائنات وطبقات العرض أيضًا عند ضبط الإطار الحالي. لذلك يمكنك استخدام هذه الطريقة لتحديث إعداد الإطار في المشهد بدلًا من الاكتفاء بتخزين رقم الإطار في متغير. وتشير وثائق API إلى أن الطريقة frame_set() تقبل أيضًا قيمة إطار فرعي؛ لكننا نكتفي في هذا الدليل باستخدام الإطارات الكاملة الأساسية.
يمكن كذلك تحديد نطاق بداية ونهاية منفصل للمعاينة، بمعزل عن النطاق الرئيسي. تحدد الخاصية use_preview_range ما إذا كان سيُستخدم نطاق بديل، بينما تحدد frame_preview_start وframe_preview_end حدوده.
scene = bpy.context.scene
scene.use_preview_range = True
scene.frame_preview_start = 20
scene.frame_preview_end = 40في هذا المثال، يمتد نطاق المعاينة من الإطار 20 إلى الإطار 40. ووفقًا لوصف API، يمكن استخدام النطاق البديل لتشغيل الحركة وتصيير عروض المشهد. وقد يكون هذا مفيدًا عندما لا تريد تغيير نطاق الحركة الرئيسي. تحقق من المشهد للتأكد من عمل إعداد المعاينة ضمن النطاق الذي تتوقعه.
أخطاء شائعة
إغفال عدم وجود كاميرا نشطة: إذا كانت قيمة
scene.cameraفارغة، فلن تتمكن من الوصول إلى كتلة بيانات الكاميرا. شغّل التحقق الوارد في المثال الأول قبل المتابعة.البحث عن الإعداد في الكائن الخطأ: توجد العدسة ودليل تكوين الكاميرا في قسم
dataمن كائن الكاميرا، بينما يوجد نطاق الإطارات ضمن خصائص المشهد.الخلط بين نطاق المعاينة والنطاق الرئيسي: تختلف
frame_preview_startوframe_preview_endعن القيمتين الرئيسيتينframe_startوframe_end. تحقق أيضًا من إعدادuse_preview_rangeالذي يفعّل النطاق البديل.استخدام إعداد التركيب القديم: تذكر الوثائق أن الخاصية
Scene.use_nodesأُوقفت ابتداءً من Blender 5.0، وأن ضبطها لا يؤثر، وأن إزالتها مخططة في الإصدار 6.0. استخدم الخاصيةscene.render.use_compositingلتفعيل تركيب الصورة أو تعطيله.نقل القيم التوضيحية إلى المشروع كما هي: لا تُعد 35 mm أو 120 إطارًا الخيار الصحيح لكل مشهد. قيّم التأطير ومدة الحركة وفقًا لمتطلبات المشروع.
الخطوات التالية في سير عمل العمارة والتصوير المرئي
قد تفيد هذه الطريقة فرق التصوير المرئي التي تعيد تطبيق إعدادات تأطير وتوقيت مختلفة على المشهد نفسه، وكذلك الطلاب الذين يتعلمون ترتيب الكاميرا. على سبيل المثال، تشكل هذه المقاطع البرمجية القصيرة أساسًا للعودة إلى نطاق ثابت للمشهد أو لإعادة تفعيل دليل التكوين. لكنها لا تسرّع التصيير ولا تقدم معلومات عن متطلبات أجهزة بعينها. في المشاريع الكبيرة، اختبر التغييرات أولًا على محطة العمل المستخدمة ونسخة من المشروع.
كخطوة تالية، طبّق المقاطع البرمجية واحدًا تلو الآخر في مشهدك، ثم تحقق من تأطير الكاميرا ونطاق الإطارات. وإذا رغبت لاحقًا في تحويل الإعدادات نفسها إلى سير عمل قابل للمشاركة ضمن الفريق، فاستكشف الكائنات والخصائص ذات الصلة في Blender API. وإذا كنت بحاجة إلى تغيير إعدادات التركيب، فاستخدم الخاصية scene.render.use_compositing في API الحالية، ولا تكتب شيفرة جديدة تعتمد على الخاصية القديمة scene.use_nodes.
المصادر والترخيص
أُعدّ هذا الدليل بالاستناد إلى الخصائص الواردة في وثائق Scene وCamera في Blender API. ويُقدَّم المصدران بموجب ترخيص CC BY-SA 4.0: bpy.types.Scene وbpy.types.Camera. كُتبت أمثلة الشيفرة لهذا الدليل باستخدام أسماء API الموضحة في الوثائق.
المصادر
2 مصادرلا نعيد نشر نصوص المصادر؛ الاقتباسات القصيرة مشار إليها، وما تبقى ملخص وتعليق من إعدادنا.
يمثل تعديل إعدادات الكاميرا والتوقيت عبر Blender API نقطة انطلاق عملية للمكاتب التي تكرر تخطيط المشهد نفسه في عمليات تسليم مختلفة. المقاطع البرمجية قصيرة ومحصورة بخصائص المشهد، ما يتيح العمل بخطوات صغيرة قابلة للقياس قبل إنشاء نظام أتمتة معقد.
أما النقطة الأهم للطلاب وفرق التصوير المرئي في تركيا، فهي عدم التعامل مع القيم التوضيحية على أنها وصفة جاهزة. لا يقدم الدليل معلومات عن أداء الأجهزة أو تكاليف الترخيص؛ لذا ينبغي اختبار التغييرات على محطة العمل الحالية، وتقييم شروط الترخيص الخاصة بملفات المشروع بصورة مستقلة.
الأسئلة الشائعة
كيف يمكن الوصول إلى الكاميرا النشطة باستخدام Blender Python API؟
يمكن الوصول إلى المشهد النشط عبر `bpy.context.scene`، ثم إلى الكاميرا النشطة للمشهد عبر `scene.camera`. وقد تكون قيمة `scene.camera` فارغة إذا لم توجد كاميرا.
كيف أغيّر قيمة عدسة الكاميرا في Blender باستخدام Python؟
يمكن ضبط الخاصية `camera.data.lens` في كتلة بيانات الكاميرا النشطة. وتحدد هذه الخاصية البعد البؤري للكاميرا المنظورية بالملليمتر.
هل ينبغي استخدام `Scene.use_nodes` في Blender 5.0؟
تذكر وثائق API الحالية أن هذه الخاصية أُوقفت ابتداءً من Blender 5.0 وأن ضبطها لا يؤثر. وتوصي باستخدام `scene.render.use_compositing` لتفعيل تركيب الصورة أو تعطيله.


