آخر الأخبار
Pavilion-Labyrinth, Barselona Pavyonu’nda camla mekân algısını dönüştürüyorإعداد اللوحات في Rhino 8: دليل Layout ومشاهد التفاصيل والمقياساكتمل مترو نابولي: ساحة بسقف من الخشب الرقائقي من EMBTدالة IFS في Archicad 29: ترتيب الشروط والنتيجة الافتراضيةدليل Data Visualization في Vectorworks: عرض بيانات النموذج بالألوان والظهوربيانات Image وخامات ImageTexture عبر Blender Python APIأنسجة Noise وVoronoi في Blender: دليل خطوة بخطوة للمواد المعماريةدليل Blender View Layers: تقسيم الرندر المعماري إلى طبقاتإضافة تأثيرات العدسات والأنسجة إلى الرندرات المعمارية باستخدام Blender Compositorتتبّع الكاميرا في Blender: تتبّع اللقطات وحلّها وتنظيف المسارات
دروس تعليميةBlender

بيانات Image وخامات ImageTexture عبر Blender Python API

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

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

باختصار

  1. تمثل كتلة بيانات Image بيانات الصورة المحمّلة من ملف أو المضمّنة أو المنشأة.
  2. يمكن استخدام update() لتحديث الصورة بعد تعديل مخزن البكسلات.
  3. قد لا تُنقل تغييرات المخزن غير المحفوظة إلى النسخة عند نسخ كتلة بيانات Image.
  4. تتضمن خيارات ImageTexture إعدادات للتكرار والقص والألفا والسلوك خارج حدود الصورة.

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

ستتعلم إنشاء كتلة بيانات Image باستخدام Blender Python API، وتغيير حجم مخزن الصورة وتعديل قيم البكسلات. كما سنستعرض دور استدعاء update() في إظهار التعديلات على الصورة، والنقاط التي ينبغي الانتباه إليها بشأن المخزن عند نسخ كتلة بيانات Image. وفي القسم الأخير، سنتناول علاقة خيارات ImageTexture بتكرار الخامة والألفا وحدود الصورة.

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

المتطلبات

  • يلزم الوصول إلى Python API داخل Blender. المصادر هي وثائق Blender API الحالية؛ ولا تحدد هذه الصفحات أقل إصدار من Blender مطلوب للعمليات المذكورة.

  • تستخدم أمثلة التعليمات البرمجية الوحدة bpy في بيئة Python الخاصة بـBlender. لا تذكر المصادر أي متطلبات لحساب خارجي.

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

العمل مع كتلة بيانات Image خطوة بخطوة

1. إنشاء كتلة بيانات للصورة

يمكنك إنشاء كتلة بيانات Image جديدة باستخدام bpy.data.images.new(). يستخدم المثال أدناه حجم البداية الوارد في المستند المصدر. تتيح الخاصية size قراءة عرض مخزن الصورة وارتفاعه بالبكسل.

python
import bpy

image_src = bpy.data.images.new("Mimari_Kontrol", 1024, 102)
print(image_src.size)

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

2. تغيير حجم المخزن وإظهار التعديل على الصورة

تغيّر scale() أبعاد مخزن الصورة. وتتيح الخاصية pixels الوصول إلى مخزن البكسلات المكوّن من قيم فاصلة عائمة. يغيّر المثال أدناه أبعاد الصورة إلى 1024 × 720، ويعدّل القيم الأربع الأولى في المخزن، ثم يحدّث الصورة.

python
image_src.scale(1024, 720)
image_src.pixels[0:4] = (0.5, 0.5, 0.5, 0.5)
image_src.update()

print(image_src.size)
print(image_src.pixels[0:4])

لا يُسنِد هذا الرمز إلا القيم الأربع الأولى في المخزن؛ ولا يعني ذلك ملء الصورة بأكملها. يضمن استدعاء update() تحديث عرض الصورة ليعكس التعديلات التي أُجريت على مخزن القيم العائمة. إذا جاءت النتيجة على غير المتوقع، فتحقق أولًا من أن المتغير المستخدم يشير إلى كتلة بيانات Image الصحيحة، ومن تنفيذ استدعاء التحديث.

3. التحقق من سلوك النسخ

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

python
image_dest = image_src.copy()
image_dest.update()

print(image_dest.size)
print(image_dest.pixels[0:4])

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

4. حفظ الصورة أو تضمينها في ملف المشروع

تعرّف Image API الدالة save() لحفظ الصورة، والدالة save_render() لحفظها في مسار معين باستخدام إعدادات التصيير الخاصة بالمشهد. ويمكن استخدام pack() لإضافة الصورة كبيانات مضمنة في ملف .blend.

python
image_src.pack()

التضمين والحفظ وإعادة التحميل عمليات مختلفة. في API، تُستخدم unpack() لاستخراج الصورة المضمّنة إلى القرص، بينما تُستخدم reload() لإعادة تحميل الصورة من مسار المصدر. ويتوقف اختيار الطريقة المناسبة على كيفية إدارة مسار ملف الصورة والبيانات داخل المشروع. قبل التسليم، تحقق من وجود الصورة في المكان المتوقع ومن حالتها داخل ملف المشروع.

كيف تختار إعدادات ImageTexture؟

تحدد خيارات ImageTexture كيفية التعامل مع الصورة بوصفها خامة. وتحدد الخاصية extension سلوك المساحة الواقعة خارج حدود الصورة. يكرر REPEAT الصورة أفقيًا وعموديًا؛ ويمدّ EXTEND وحدات البكسل عند الحواف؛ بينما يجعل CLIP المساحة خارج أبعاد الصورة شفافة. وتدرج الوثائق أيضًا CLIP_CUBE وCHECKER ضمن الخيارات.

تحدد repeat_x وrepeat_y معاملي التكرار الأفقي والعمودي كلًّا على حدة. لاستخدام الألفا، تتوفر use_alpha، ولعكس قيم الألفا تتوفر invert_alpha. وتؤثر use_interpolation في الاستيفاء، بينما تؤثر filter_size في حجم المرشح المستخدم في الاستيفاء. عند فحص هذه الإعدادات، راعِ قناة ألفا في الصورة المصدر وطريقة استخدام الخامة.

تدرج Image API الخيارات STRAIGHT وPREMUL وCHANNEL_PACKED وNONE لعرض الألفا. وتشرح الوثائق أن CHANNEL_PACKED يُستخدم عندما تكون صور مختلفة معبأة في قناتي RGB والألفا، ويجب ألا تؤثر القنوات بعضها في بعض. إذا لم تكن بنية قنوات الملف المصدر معروفة، فتحقق من كيفية إعداد الصورة قبل تغيير إعدادات الألفا.

أخطاء شائعة

  • افتراض أن النسخة تكرر المخزن أيضًا: قد لا تتضمن النسخة التغييرات غير المحفوظة. افحص أبعاد النسخة وقيم المخزن فيها.

  • إغفال استدعاء update() بعد التعديل: حدّث الصورة بعد إجراء التغييرات على المخزن.

  • عدم التحقق من السلوك خارج حدود الخامة: تعطي REPEAT وEXTEND وCLIP نتائج مختلفة. حدّد السلوك المطلوب عند حواف الصورة.

  • تغيير إعدادات الألفا بمعزل عن الصورة المصدر: تحقق من استخدام قناة ألفا ومن وضع الألفا المناسب.

  • اعتبار الحفظ والتضمين عملية واحدة: تؤدي save() وpack() وunpack() وreload() أغراضًا مختلفة. تحقق بشكل منفصل من حالة الصورة في ملف المشروع وعلى القرص.

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

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

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

يستند هذا الدليل إلى صفحتي bpy.types.Image وbpy.types.ImageTexture في وثائق Blender Python API الرسمية. كلا المصدرين مرخّص بموجب CC BY-SA 4.0؛ وقد جرى تكييف المحتوى إلى التركية.

المصادر

2 مصادر
D(
docs.blender.org (CC BY-SA 4.0)docs.blender.org/api/current/bpy.types.Image.html
ملخص
D(
docs.blender.org (CC BY-SA 4.0)docs.blender.org/api/current/bpy.types.ImageTexture.html
ملخص

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

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

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

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

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

كيف يمكن إنشاء كتلة بيانات Image باستخدام Blender Python API؟

يمكن إنشاء كتلة بيانات Image في بيئة Python الخاصة بـBlender باستخدام `bpy.data.images.new()`. ويمكن قراءة أبعاد الصورة المنشأة عبر الخاصية `size`.

هل تُنسخ تغييرات البكسلات أيضًا عند نسخ Image في Blender؟

ليس دائمًا. توضح وثائق API أن المخازن لا تُشارك بين كتل بيانات Image المختلفة ولا تُكرر عند النسخ؛ لذلك قد لا تنتقل التغييرات غير المحفوظة إلى النسخة.

ما وظيفة REPEAT وCLIP في ImageTexture؟

يكرر `REPEAT` الصورة أفقيًا وعموديًا. أما `CLIP` فيجعل المساحة خارج أبعاد الصورة شفافة.

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

أخبار ذات صلة