باختصار
- يمكن استخدام SDK لإنشاء مشاهد V-Ray أو تحميلها من ملفات .vrscene.
- يبدأ الرندر في الخلفية ضمن خيط منفصل عند استدعاء start().
- وضع Interactive مخصص للمعاينة وتجربة الإعدادات؛ أما Production فلإخراج الصورة النهائية.
- لا تحدد الوثائق إصدارًا معينًا للبرنامج الذي طُبّق فيه SDK.
يتيح V-Ray Application SDK (App SDK) للتطبيقات الخارجية تشغيل محرك V-Ray والتحكم فيه. وتشرح وثائق App SDK من Chaos كيفية تحويل المشهد في الذاكرة إلى إضافات V-Ray أو تحميله من ملف .vrscene، وبدء الرندر، والحصول على النتيجة كصورة. يتناول هذا الدليل التدفق الأساسي لـ SDK، وهو موجّه إلى الفرق التي تطوّر تكاملًا للرندر ضمن أدوات العمارة والتصوّر. وبما أن الوثائق لا تحدد إصدارًا بعينه من V-Ray أو App SDK، فإن الخطوات تنطبق على واجهة App SDK الموثقة.
1. إعداد بيئة تشغيل SDK
المكوّن الأساسي في App SDK هو الفئة VRayRenderer. تجمع هذه الفئة عمليات مثل تحميل المشهد وبدء الرندر والوصول إلى الصورة. قبل البدء، يجب أن يتمكن التطبيق من الوصول إلى موقع ملفات المكتبة.
اضبط متغير البيئة
VRAY_SDKللإشارة إلى موقع SDK. إذا كنت ستستخدم واجهة Python، فيجب أن يكون مجلدpythonداخل SDK ضمن مسارات البحث عن وحدات Python؛ وتورد الوثائق استخدامPYTHONPATHمثالًا على ذلك.تعرض الوثائق برنامجي التشغيل النصي
setenv.batلنظام Windows، وsource setenv.shلنظامي Linux وmacOS. ويضبط هذان البرنامجان متغيري البيئة معًا.عند تعريف
VRAY_SDK، تبحث الواجهة عن الملف الثنائي VRaySDKLibrary وتبعياته داخلVRAY_SDK/bin. وإذا لم يتضمن هيكل مجلد المنتج/bin، فيمكن استخدام المتغيرVRAY_APPSDK_BIN؛ وعندئذٍ يُبحث عن الملفات الثنائية في المجلد المحدد.في عمليات التثبيت التي لا يمكن فيها استخدام متغيرات البيئة، يمكن ضبط مسار البحث عن المكتبات أثناء التشغيل. وتورد الوثائق
vray.setSDKLibraryPath(bin_folder)في Python، والبانيVRayInitفي C++ مثالًا على ذلك.
تكتسب هذه الخطوة أهمية خاصة عند تضمين SDK في برنامج آخر أو عند تطوير تكامل مستقل: إذ يجب أن تتمكن واجهة SDK من العثور على مكتبات V-Ray وتبعياتها قبل بدء الرندر. وينبغي أيضًا الرجوع إلى وثائق الواجهة الخاصة باللغة المستخدمة لمعرفة تفاصيل طريقة التهيئة المناسبة.
2. تحميل المشهد وإجراء الرندر
يتألف سير العمل الأساسي من إنشاء VRayRenderer، وتجهيز مشهد أو تحميله من ملف، وبدء الرندر، والحصول على الصورة، ثم إغلاق الموارد. يمكن إعداد المشهد في الذاكرة من خلال ضبط معلمات إضافات V-Ray، أو قراءته من ملف .vrscene. يوضح المثال التالي تحميل ملف وإخراج صورة PNG باستخدام Python:
import vray
with vray.VRayRenderer() as renderer:
renderer.load('./intro.vrscene')
renderer.start()
renderer.waitForRenderEnd(6000)
image = renderer.getImage()
image.save('intro.png')تعمل start() بصورة غير متزامنة: إذ يواصل محرك V-Ray الرندر في خيط منفصل، من دون ربط تدفق التطبيق الرئيسي بالكامل بعملية الرندر. ويمكن لـ getImage() الحصول على بيانات الصورة الحالية أثناء استمرار الرندر، وليس بعد اكتماله فحسب. وبذلك يستطيع التطبيق عرض صورة مرحلية أو حفظها في ملف باستخدام أحد تنسيقات الضغط المدعومة. وتستخدم الوثائق waitForRenderEnd() لانتظار اكتمال الرندر؛ ولا تشرح المادة المصدرية وحدة المعامل المستخدم في الأمثلة، لذا لا ينبغي افتراض وحدة زمنية هنا.
عند انتهاء التطبيق من عمله، يجب إغلاق renderer وتحرير موارد الذاكرة المخصصة. ويدير مثال مدير السياق في Python دورة حياة renderer؛ أما في واجهات اللغات الأخرى، فينبغي استخدام ما يقابل خطوة الإغلاق في واجهة API المعنية.
3. اختيار الوضع للمعاينة والرندر النهائي
يوفر App SDK وضعين أساسيين للرندر. صُمم Interactive لمعاينة الصورة بسرعة ومتابعة التقدم أثناء تجربة المحتوى أو إعدادات المشهد. أما Production فيُستخدم للحصول على الصورة النهائية المستهدفة بعد إعداد المشهد بعناية، وقد يستغرق تجهيز الصورة كاملة وقتًا أطول.
| الإعداد | القيمة الموصى بها | التأثير |
|---|---|---|
| وضع الرندر | Interactive للمعاينة والتجربة | يوفر ملاحظات سريعة مع تحسن جودة الصورة تدريجيًا. |
| وضع الرندر | Production للصورة النهائية | يهدف إلى إخراج الصورة النهائية من المشهد المُعدّ. |
| نوع الرندر | CPU أو GPU | يستخدم خيار CPU موارد المعالج، بينما يستخدم خيار GPU قدرة المعالجة في بطاقة الرسوميات. |
توضح الوثائق أن الوضع الافتراضي للفئة VRayRenderer هو Interactive (CPU). وبالنسبة إلى GPU، تُدرج CUDA وOptiX لأجهزة NVIDIA، وMetal وMetalRT لأجهزة Apple. ولا يعني ذلك أن كل نوع رندر متاح على كل جهاز كمبيوتر؛ بل ينبغي التحقق من دعم محطة العمل وتثبيت SDK للمسار المختار.
يمكن تحديد الوضع عبر الخاصية renderMode في كائن VRayRenderer. ووفقًا للوثائق، لا يلزم إعادة إنشاء المشهد أو تحميله لتغيير الوضع بين عمليات الرندر. وهذا يتيح العمل بوضع Interactive أثناء التصميم، ثم الانتقال إلى Production في المرحلة النهائية ضمن تدفق التكامل نفسه.
4. تضمين تتبع الحالة والأخطاء في التكامل
أثناء عمل الرندر في الخلفية، يصدر SDK أحداثًا. ويمكن استخدام حدث تغيير الحالة لإبلاغ التطبيق بالانتقالات، مثل بدء الرندر أو اكتماله أو توقفه بسبب خطأ. وتكون الصورة النهائية جاهزة عند حالة IDLE_DONE؛ كما يمكن الحصول على صور مرحلية أثناء استمرار العملية.
يوفر حدث رسائل السجل نص الرسالة ومستوى شدتها. وتسرد الوثائق المستويات: info وwarning وerror وdebug. ويمكن للتطبيق تمرير هذه الرسائل إلى مسار التشخيص الخاص به، لتسهيل اكتشاف المشكلات في مرحلتي تحميل المشهد والرندر.
تُنفذ دوال الاستدعاء العكسية للأحداث في خيط منفصل عن خيط الرندر. ويهدف هذا التصميم إلى منع بطء دالة الاستدعاء العكسية من التأثير في مدة الرندر؛ إلا أن دوال الاستدعاء العكسية البطيئة التي يكتبها المستخدم قد تؤخر تنفيذ دوال استدعاء عكسية أخرى. كذلك، بعد استدعاء start() غير المتزامن، يجب عدم تعديل المشهد أو renderer إلى أن يخرج renderer من حالة PREPARING؛ إذ توضح الوثائق أن التغييرات خلال هذه الفترة ستُرفض.
ما الذي يتغير في سير عمل العمارة والتصوّر المعماري؟
تنبع أهمية App SDK من ربط V-Ray بسير عمل تطبيق آخر، لا من كونه إعدادًا لقائمة بعينها في واجهة النمذجة. فعلى سبيل المثال، يمكن لفريق أن يجمع ضمن أداة إعداد المشاهد الخاصة به خطوات تحميل .vrscene وبدء الرندر والحصول على صورة التقدم وحفظ النتيجة. وتتمثل الفائدة هنا في إمكانية التحكم بمحرك الرندر من داخل التطبيق، وإجراء المعاينة والرندر النهائي باستخدام renderer نفسه.
ينبغي للمكاتب أولًا التحقق من واجهة اللغة التي تستخدمها، وموقع مكتبات V-Ray، وخيار CPU/GPU المتاح على الجهاز المستهدف. ولا توضح المصادر شروط الترخيص أو الأسعار أو التوافق مع برنامج مضيف معين أو متطلبات الأجهزة؛ لذا لا ينبغي افتراض أي معلومات بشأنها. كما أن تتبع حالة المشهد والسجلات يساعد على بناء تكامل أكثر متانة من مجرد توفير زر للرندر للمستخدم.
أخطاء شائعة
بدء واجهة SDK من دون ضبط
VRAY_SDKأو مسار الوحدة عند استخدام Python. إذا تعذر العثور على المكتبة أو وحدة Python، فتحقق أولًا من متغيرات البيئة ومسارات المجلدات.التعامل مع استدعاء
start()كما لو كان عملية متزامنة، وافتراض اكتمال الرندر فورًا. يعمل الاستدعاء في الخلفية، لذا يجب على التطبيق متابعة حالة الاكتمال.تعديل المشهد أو renderer أثناء مرحلة
PREPARING. استخدم حدث تغيير الحالة لتأجيل التعديلات إلى مرحلة آمنة.تنفيذ عمليات طويلة داخل دالة الاستدعاء العكسية. وتشير الوثائق إلى أن ذلك قد يؤخر دوال استدعاء عكسية أخرى؛ لذا عالج المهام الثقيلة خارج معالج الحدث.
المصادر
1 مصادرلا نعيد نشر نصوص المصادر؛ الاقتباسات القصيرة مشار إليها، وما تبقى ملخص وتعليق من إعدادنا.
بالنسبة إلى مكاتب العمارة والتصوّر في تركيا، تكمن القيمة الأساسية لـ App SDK في إمكانية ربط خطوات الرندر المتكررة بأدواتها الخاصة. وقد يساعد فصل سير عمل المعاينة عن إخراج الصورة النهائية على تنظيم الإجراءات الداخلية للفريق بمزيد من التحكم.
مع ذلك، لا يضمن SDK تسريع الرندر بحد ذاته. وقبل تطوير التكامل، ينبغي التحقق بشكل مستقل من شروط الترخيص والتكلفة، والتوافق مع البرامج المستخدمة، وخيارات CPU/GPU على الجهاز المستهدف. كما يجب الانتباه إلى أخطاء متغيرات البيئة، وإغفال طبيعة العمليات غير المتزامنة، وتنفيذ مهام طويلة داخل دوال الاستدعاء العكسية.
الأسئلة الشائعة
ما استخدام V-Ray App SDK؟
يُستخدم لبدء عملية الرندر باستخدام V-Ray والتحكم فيها من تطبيقات خارجية. ويمكن إنشاء المشهد في الذاكرة أو تحميله من ملف `.vrscene`.
ما الفرق بين وضعي Interactive وProduction في V-Ray App SDK؟
صُمم Interactive للمعاينة السريعة والحصول على ملاحظات أثناء تجربة إعدادات المشهد؛ أما Production فمخصص لإخراج الصورة النهائية من المشهد المُعدّ.
ما وضع الرندر الافتراضي في V-Ray App SDK؟
تذكر الوثائق أن الوضع الافتراضي للفئة VRayRenderer هو Interactive (CPU).



