آخر الأخبار
كيف تكتب مطالبة لفيديو معماري؟ 5 أمثلة ونصائح لـ Veoتصدير IFC في Archicad 29: إعدادات المترجم والبيانات الصحيحةضبط الوحدات وموضع العناصر في مشهد معماري باستخدام Blender Pythonكيفية تحريك الكاميرا والأجسام باستخدام Follow Path في BlenderSunnyside Studios من تصميم GLUCK+ يخطط لحرم استوديوهات في كتلة واحدة بكوينزإنشاء عناصر منحنية باستخدام Spline Mesh Component في Unreal EngineIntel, Oregon’daki 18A kapasitesinin bir bölümünü Intel 3’e aktaracakNV UEFI Unlocker, GeForce RTX tensor performans sınırını kaldırmayı hedefliyorكيف تضبط مسارات الضوء في رندر داخلي باستخدام Blender Cycles؟استدعاء الدوال في Gemini API: استدعاء الأدوات في سير العمل المعماري
دروس تعليميةBlenderMari

ضبط الوحدات وموضع العناصر في مشهد معماري باستخدام Blender Python

يشرح هذا الدليل، استنادًا إلى وثائق Python API الخاصة بـBlender، كيفية ضبط نظام وحدات المشهد وموضع عنصر والإطار الحالي للرسوم المتحركة برمجيًا. وتُكيّف الأمثلة لتناسب سير عمل النمذجة المعمارية والتصور البصري.

استوديو تصميم معاصر يضم أدوات قياس مترية ومجسمًا معماريًا مضاءًصورة بالذكاء الاصطناعي
صورة تعبيرية مولّدة بالذكاء الاصطناعي.الصورة: 3dsınıfı / FCA AI

باختصار

  1. يمكن ضبط نظام وحدات قياس المشهد على METRIC عبر unit_settings ضمن Scene.
  2. يمكن تعيين قيمة من ثلاثة إحداثيات لموضع عنصر باستخدام الخاصية Object.location.
  3. تحدد الدالة Scene.frame_set() إطار المشهد وتحدّث العناصر وطبقات العرض.
  4. تشرح وثائق Blender API الخصائص ذات الصلة بالمقياس وعرض الوحدات وإدارة العناصر.

ما الذي ستتعلمه في هذا الدليل؟

عند تنفيذ النمذجة المعمارية والتصور البصري في Blender، تساعد برمجة عمليات محددة باستخدام Python API بدلًا من تعديل إعدادات المشهد يدويًا في كل مرة على تطبيق الخطوات نفسها باتساق عبر ملفات مختلفة. في هذا الدليل، ستضبط نظام وحدات المشهد على METRIC، وتغيّر موضع عنصر في المشهد، وتنشئ عنصر إضاءة بسيطًا، وتحدد إطار الرسوم المتحركة. تستند الأمثلة إلى شروح Scene وObject وUnitSettings في وثائق Python API الرسمية لـBlender.

هذه الشيفرات أمثلة أولية صغيرة يمكن تكييفها لتناسب ملفات مشاريعكم. وبما أنها قد تغيّر ترتيب العناصر الحالي في المشهد، فمن الأفضل تجربتها أولًا على نسخة من الملف. ولا تفترض الأمثلة استخدام محرك تصيير أو إضافة أو أداة نمذجة معمارية بعينها.

المتطلبات

يلزم توفر Blender وإمكانية الوصول إلى Python API. والمراجع المستخدمة هي صفحات Blender API الحالية، لكنها لا تحدد رقم إصدار معينًا من Blender. لذا تحقّقوا من توافق الخصائص مع وثائق API الخاصة بالإصدار المثبت قبل استخدام الشيفرة في ملف إنتاجي. ولا تشير الأمثلة إلى الحاجة إلى حساب أو ترخيص مدفوع أو إضافة إضافية.

شغّلوا مقاطع الشيفرة ضمن سياق Python في Blender؛ إذ تستخدم أمثلة الوثائق الوحدة bpy وطبقة العرض النشطة. قبل تشغيل أي أمر، تأكدوا من تفعيل الملف والمشهد وطبقة العرض الصحيحة. يستهدف مثال موضع العنصر أول عنصر في المشهد، لذا أنشئوا عنصرًا أولًا بدلًا من تشغيله في مشهد فارغ.

1. ضبط نظام وحدات المشهد

تتضمن بيانات Scene إعدادات العناصر، إلى جانب إعدادات الوقت والتصيير. ويمكن تحديد نظام الوحدات عبر الخاصية unit_settings للمشهد. تسرد وثائق API الخيارات NONE وMETRIC وIMPERIAL للخاصية system. يضبط المثال التالي نظام المشهد النشط على النظام المتري:

python
import bpy

scene = bpy.context.scene
scene.unit_settings.system = 'METRIC'

تغيّر هذه العملية إعداد النظام فقط. وتشرح الوثائق الخاصية scale_length على أنها المقياس المستخدم للتحويل بين وحدات Blender والأبعاد. استخدموا هذه القيمة بوعي واتساق في المشروع، وخذوا تأثير الإعداد في الحسبان عند مقارنة أبعاد النماذج المستوردة من ملفات مختلفة. وبما أن المصدر يعرض الخيار DEFAULT فقط للخاصية length_unit، فلن نعيّن هنا قيمة غير موثقة.

يمكنكم طباعة الخصائص لمراجعة القيم الحالية لإعدادات الوحدات:

python
import bpy

settings = bpy.context.scene.unit_settings
print(settings.system)
print(settings.scale_length)
print(settings.use_separate)

تُوثّق use_separate بوصفها خاصية تحدد ما إذا كان عرض الوحدات يتم في أزواج. تقرأ هذه الشيفرة القيم ولا تغيّر أي إعداد. قارنوا المخرجات بمتطلبات القياس في المشروع قبل الانتقال إلى الخطوات التالية.

2. تغيير موضع عنصر في المشهد

تمثل location ضمن كتلة بيانات Object موضع العنصر بإحداثيات ثلاثية. تعيّن الشيفرة التالية قيمة جديدة لموضع أول عنصر في المشهد، إذا كان يحتوي على عنصر واحد على الأقل:

python
import bpy

scene = bpy.context.scene
if len(scene.objects) > 0:
    obj = scene.objects[0]
    obj.location = (5.0, 5.0, 5.0)

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

تعرّف الوثائق أيضًا مصفوفة تحويل العنصر في فضاء العالم، إلى جانب معلومات موضعه ودورانه ومقياسه. يقتصر هذا الدليل على الخاصية الأساسية location، ولا يجري حساب التحويل عبر المصفوفة أو علاقة العنصر الأب. وإذا كان الحفاظ على التسلسل الهرمي الحالي في النموذج المعماري ضروريًا، فينبغي تقييم تغيير الموضع بالاقتران مع إعدادات العنصر الأب والقيود ذات الصلة.

3. إضافة عنصر إضاءة إلى المشهد

يوضح مثال API الرسمي إنشاء كتلة بيانات للإضاءة، وربطها بعنصر، ثم إضافته إلى مجموعة طبقة العرض النشطة. يستخدم المثال التالي تسلسل العمليات الأساسي نفسه، مع تغيير اسم الإضاءة وموضعها:

python
import bpy

view_layer = bpy.context.view_layer
light_data = bpy.data.lights.new(name="Mimari Test Isigi", type='POINT')
light_object = bpy.data.objects.new(
    name="Mimari Test Isigi",
    object_data=light_data
)
view_layer.active_layer_collection.collection.objects.link(light_object)
light_object.location = (5.0, 5.0, 5.0)
light_object.select_set(True)
view_layer.objects.active = light_object

ترتيب العمليات مهم: تُنشأ أولًا كتلة بيانات الإضاءة، ثم العنصر الذي يستخدمها؛ وبعد ربط العنصر بالمجموعة النشطة، يصبح ظاهرًا في المشهد. تحدد الأسطر الأخيرة العنصر وتجعله العنصر النشط. ولا تعيّن الأمثلة قيمة لطاقة الإضاءة أو لأي من خصائص الإضاءة الأخرى؛ لذلك لا تضمن سطوعًا أو نتيجة تصيير محددة.

4. تحديد إطار الرسوم المتحركة برمجيًا

تشير الخاصية frame_current ضمن Scene إلى الإطار الحالي. وتوصي وثائق API باستخدام الدالة frame_set() لتحديث بيانات الرسوم المتحركة وطبقات العرض فورًا. على سبيل المثال:

python
import bpy

scene = bpy.context.scene
scene.frame_set(25)

رقم الإطار هنا لأغراض المثال؛ ولا يغيّر تلقائيًا نطاق بداية المشهد ونهايته. وتعرّف وثائق Scene الخاصيتين frame_start وframe_end كلًا على حدة. في مشهد يتضمن رسومًا متحركة أو حركة كاميرا، تأكدوا من وقوع الإطار المستهدف ضمن نطاق المشروع ومن ظهور حالة العنصر المطلوبة عند ذلك الإطار.

ما الفائدة في سير عمل العمارة والتصور البصري؟

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

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

أخطاء شائعة

  • تشغيل شيفرة موضع العنصر في مشهد فارغ: إذا لم يوجد عنصر أول، فلن يكون هناك هدف لإسناد الموضع إليه. يتحقق الشرط الوارد في المثال من هذه الحالة.

  • الخلط بين نظام الوحدات وقيمة المقياس: الخاصيتان system وscale_length منفصلتان في الوثائق. وتغيير إحداهما لا يعني أن الأخرى ستتغير تلقائيًا.

  • إغفال ربط العنصر بالمجموعة: في مثال الإضاءة الرسمي، يُعد ربط العنصر الجديد بالمجموعة النشطة جزءًا من سير العمل لإدراجه في المشهد الحالي.

  • عدم التحقق من نطاق الإطارات: تضبط frame_set() الإطار الحالي، بينما توجد خصائص منفصلة لضبط نطاق البداية والنهاية.

الخطوات التالية

ابدؤوا بتجربة الشيفرة التي تقرأ إعدادات الوحدات وتتحقق منها، ثم شغّلوا مثال الموضع على عنصر اختبار واحد. تحقّقوا من مثال إنشاء الإضاءة في مشهد جديد قبل إدراجه في ملف المشروع الحالي. بعد ذلك، حددوا بوضوح العنصر المستهدف والإحداثيات ورقم الإطار لسير العمل الخاص بكم. ويساعد فحص المشهد وحالة العنصر المتوقعة بعد كل تغيير على تقليل خطر تطبيق الشيفرة على هدف غير صحيح.

المصدر والترخيص

أُعدّ هذا الدليل بتكييف صفحات Object وScene وUnitSettings من وثائق Blender Python API إلى اللغة التركية. وتخضع المصادر الثلاثة لترخيص CC BY-SA 4.0. وتستند الاستخدامات الأساسية لـAPI وشروح الخصائص في أمثلة الشيفرة إلى هذه الوثائق.

المصادر

3 مصادر
D(
docs.blender.org (CC BY-SA 4.0)docs.blender.org/api/current/bpy.types.Object.html
ملخص
D(
docs.blender.org (CC BY-SA 4.0)docs.blender.org/api/current/bpy.types.Scene.html
ملخص
D(
docs.blender.org (CC BY-SA 4.0)docs.blender.org/api/current/bpy.types.UnitSettings.html
ملخص

لا نعيد نشر نصوص المصادر؛ الاقتباسات القصيرة مشار إليها، وما تبقى ملخص وتعليق من إعدادنا.

رأي 3dsınıfı
3dتقييم المحرر

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

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

الأسئلة الشائعة

كيف أضبط نظام وحدات المشهد على METRIC باستخدام Blender Python؟

يمكن إسناد `'METRIC'` إلى الخاصية `unit_settings.system` للمشهد النشط. وتسرد وثائق API الخيارات `NONE` و`METRIC` و`IMPERIAL` لأنظمة الوحدات.

ما الخاصية التي تُستخدم لتغيير موضع عنصر في Blender Python؟

تُسند قيمة من ثلاثة إحداثيات إلى الخاصية `location` في كتلة بيانات Object. وينبغي التحقق مسبقًا من أن الشيفرة تستهدف العنصر الصحيح.

كيف أضبط إطار الرسوم المتحركة باستخدام Blender Python؟

يمكن ضبط الإطار الحالي باستخدام الدالة `frame_set()` في Scene. ولا تغيّر هذه الدالة نطاق إطاري البداية والنهاية.

التعليقات والمنتدى باللغة التركية.شارك في النقاش
+

أخبار ذات صلة