نرم افزارهای مخصوص Render Farm

در پست‌های قبل با مفاهیم رند بوسیله کامپیوتر و رندر فارم آشنا شدیم. حال اگر برای رندر یک پروژه از صدها یا هزاران سیستم مختلف استفاده بشود ، مدیریت و پیکربندی این سیستمها بسیار حائز اهمیت خواهد بود.

حتما باید نرم افزارهایی وجود داشته باشند که این عملیات گسترده رندرینگ را بین تمامی Node های یک رندر فارم کنترل کنند و مراقب باشند تا تمامی پلانهای یک پروژه بزرگ بدون هیچ مشکلی رندر شوند.

به نرم افزارهایی که پروسه رندرینگ را روی رندر فارم مدیریت و برنامه ریزی می کنند، اصطلاحا نرم افزارهای مدیریت رندر (Render Manager)  یا مدیریت صف (Queue Manager )  می گویند. منظور از صف، صف فریم ها و پلانهایی است که باید رندر شوند.

برخی از ویژگی هایی که یک نرم افزار مدیریت رندر باید از آنها برخوردار باشند :

  1. کدام فریم ها توسط کدام سیستمها رندر شوند و همچنین از رندر کردن تکراری یک فریم خاص توسط چندین سیستم جلوگیری شود.
  2. خروجی فریم های رندر شده در مکانی خاص ریخته شود.
  3. در صورت قطع شدن رندر ها به هر دلیلی (مثل قطع شدن برق ) ، اطلاعات فریم های رندر شده ذخیره شده تا بعد از رفع مشکل وراه اندازی مجدد سیستم ها ، ادامه پروسه رندرینگ از آخرین فریم رندر شده به صورت خودکار اتفاق بیافتد.
  4. بررسی اولویت پروژه ها برای رندر، پروژه هایی که اولویت بالاتری دارند اول رندر بشوند.
  5. ذخیره اطلاعات Log برای هر فریم رندر شده تا در زمانی که سیستم Error میدهد ، به وسیله اطلاعات Log سیستم عیب یابی شود.
  6. ارسال Log و گزارش عملکرد عملیات رندر به کاربر در زمانی که کاربر حضور فیزیکی در شرکت ندارد (مثلا از طریق ارسال ایمیل یا پیامک)
  7. سازگاری با سیستم عاملها، نرم افزارهای سه بعدی و کامپوزیت و موتور های رندر رایج
  8. امکانات تعیین زمانبندی مناسب برای شروع یا اتمام رندر پروژه ها
  9. پشتیبانی از سیستم پایگاه داده ها یا DataBase برای ذخیره سازی اطلاعات پروژه نظیر وظایف Node ها (Jobs) ، گزارشات عملیات رندر (Log) و غیره (به دلیل وجو داشتن حجم بسیار زیاد اطلاعات مانند شماره فریم ها ، پلانها ، Log ها ، Job ها و غیره، وجود دیتابیس ضروری است)
  10. پشتیبانی از سیستم Remote Control برای انجام تنظیمات رندر فارم از مکانیدیگر
  11. امکان استفاده از Licence نرم افزارها و موتور های رندر روی تمامیNode های رندر
  12. امنیت و Security بالا
  13. امکان تعیین User های مختلف با سطوح دسترسی های مختلف روی نرم افزار مدیریت رندر

این مواردی که ذکر شد، تنها تعدادی از ویژگی ها و امکاناتی هستند که در سیستم Render Farm باید از آنها استفاده شود.

نرم افزار های مدیریت رندر به دو دسته تقسیم میشوند .

  1. نرم افزارهایی که یا مخصوص یک نرم افزار و موتور رندر خاص ساخته شده اند یا عموما با یکی سازگاری بیشتری دارند. (مانندHQueue برای Houdini و Tractor برای RenderMan)
  2. نرم افزارهای جامع که برای تمامی نرم افزار های سه بعدی و کامپوزیت و تمامی موتور های رندر قابل استفاده هستند. ( نظیر Deadline و Backburner که مخصوص نرم افزار های شرکت Autodesk می باشند.)

برنامه Deadline :

بی شک یکی از قویترین و کاملترین نرم افزارهای مدیریت رندر جهان ، برنامه Deadline می باشد. این نرم افزار تقریبا تمامی برنامه های سه بعدی و کامپوزیت نظیر Maya ، Max ، Lightwave ، Softimage ، Blender ،  C4D ، Houdini ، Nuke ، Shake ، After Effect ، Fusion  و تمامی موتور های رندر نظیر RenderMan ، Arnold ، Mental Ray ، Maxwell ، Vray ، Octane و غیره را ساپورت می کند.

این نرم افزار علاوه بر ویژگی‌هایی که قبلا گفته شد، از تعداد بسیار زیادی ویژگی های منحصر به فرد دیگر برخوردار است.

این نرم افزار مجهز به یک سیستم دیتا بیس (Data Base) قدرتمند و پرسرعت است تا تمامی اطلاعات رندر و همچنین Log را به صورت کامل ذخیره سازی کند. بنابراین با وجود حجم زیاد اطلاعات (مثلا اطلاعات و Log چندین هزار فریم رندر شده) هیچ گونه خللی در نحوه عملکرد برنامه به وجود نمی آید .

نحوه کار کردن با این نرم افزار بسیار ساده است، بعد از نصب این برنامه و پیکر بندی Data Base و اطلاعات شبکه، کافیست پلاگین مخصوص این نرم افزار را روی برنامه خودتان نصب کنید، از این به بعد با فشردن یک دکمه در برنامه خودتان، پروژه روی رندر فارم رفته و آماده رندر می‌شود.

معمولا برنامه های مدیریت رندر از دو بخش Masterیا Monitor و Slave یا Client تشکیل شده است. برنامه Monitor یا Master  روی سرور اصلی رندر فارم نصب می‌شود و برنامه Slave باید روی تمامی سیستم های Node نصب شود. با این ساختار پروژه هایی که باید رندر شوند از طریق سرور اصلی و برنامه Monitor  وارد برنامه مدیریت رندر می‌شوند و برنامه های Slave موجود در Node های رندر، از طریق شبکه کامپیوتری به سرور اصلی و برنامه Monitor وصل شده و شروع به رندر کردن پروژه می کنند. برنامه مانیتور همچنین وظیفه یا Job هر سیستم Node را مشخص می کنند تا هر یک تعداد مشخصی از فریم ها را رندر کنند. منظور از وظیفه یا Job مشخص کردن این است که هر یک از سیستم های Slave باید چه پروژه هایی و چه تعداد فریمی را رندر کنند.

به صورت کلی روش کار برنامه های مدیریت رندر به این صورت است که این نرم افزار های به برنامه مخصوص Batch Rendering نرم افزار مورد نطر مثل Maya   وصل می شوند و از طریق آنها شروع به رندر کردن می کنند. بنابراین باید بدانید که خود این برنامه های عملیات رندر را انجام نمی‌دهند، یعنی این برنامه ها موتور رندر نیستند. عملیات رندر در پشت پرده توسط خود نرم افزارهای سه بعدی و موتور های رندر انجام می شوند و نرم افزار های مدیریت رندر تنها نقش Trigger را ایفا می کنند.

استفاده از نرم افزار deadline تنها مختص به سیستم رندر فارم که شامل چندین Node است نمی باشد، شما حتی می توانید از این نرم افزار برای رندر پروژه ها، روی سیستم شخصی خود استفاده بکنید. در این صورت دیگر لازم نیست نگران مدیریت رندر های خود باشید ، هر وقت لازم بود می توانید رندر را قطع کنید و به انجام سایر کارهای خود روی کامپیوتر بپردازید و در پایان فقط با اجرا کردن یک برنامه، عملیات رندر از آخرین فریم انجام شده ادامه می یابد، بدون اینکه نیاز باشد نرم افزار سه بعدی خود را باز کنید و از آخرین فریم رندر شده ، دوباره پروژه را روی رندر بگذارید. حتی می توانید چندین پروژه یا پلان را با انتخاب اولویت رندر، روی Deadline تنظیم کنید. می توانید تلفیقی از پروژه های سه بعدی و کامپوزیت را برای رندر آماده کنید. می توانید از راه دور (مثلا محل کار ) از طریق ایمیل یا غیره، عملیات رندر را روی سیستم شخصی خود کنترل کنید.

عدم نیاز به نصب برنامه های سه بعدی روی تمامی گره های رندر:

یک قابلیت جالب در برخی از موتور های رندر این است که این موتور های رندر (مانند Arnold و RenderMan) پروژه ای را که ساخته اید را ابتدا به فرمت استاندارد و مخصوص خود تبدیل می کنند (مثل فرمت Ass در Arnold و فرمت Rib در RenderMan) و سپس این فایل تبدیل شده را رندر می کنند. به زبانی دیگر پروژه شما مستقیما رندر نمی شود و ابتدا به یک فایل مخصوص تبدیل شده و سپس آن فایل رندر می شود. این روش کار یک مزیت بزرگ دارد و آن این است که در هنگام استفاده از رندر فارم شما نیازی به نصب نرم افزار سه بعدی مثل Maya روی تمامی سیستمهای Node ندارید و تنها کافیست که موتور رندر خود را روی آنها نصب کنید. سپس باید از پروژه سه بعدی خود خروجی فایل مخصوص موتور های رندر را (مثل Ass یا Rib) بگیرید و در نهایت موتور های رندر نصب شده روی سیستم های Node مستقیما این فایل ها را رندر می کنند.

مواردی که هنگام استفاده از نرم افزارهای مدیریت یا صف بندی رندر باید مد نظر داشته باشیم :

در هنگام استفاده از رندر فارم ، نیازی نیست که کل پروژه سه بعدی را به همراه تمامی متریالها و سورسهای آن روی تک تک سیستم ها کپی کرد، تنها لازمه که پروژه به صورت کامل روی سیستم اصلی یا سرور وجود داشته باشد تا تک تک سیستمهای مربوطه بتوانند از آنجا اطلاعات را بخوانند و رندر کنند.

بنابراین لازمه که این موارد را در نظر داشته باشید :

  1. چون بقیه سیستم ها قرار است از طریق شبکه، به فایلهای مربوطه دسترسی داشته باشند ، بنابراین لازم که از لحاظ Permission، دسترسی لازم به این اطلاعات را برایشان در نظر گرفت.
  2. کلیه آدرس ها مانند آدرس پروژه ، پوشه ای که باید خروجی فایلهای رندر شده در آن ریخته شوند و غیره به صورت Local تعیین نشوند ، مثلا به جای ریختن خروجی فریم های رندر شده در آدرس D:\JKProjects\Images از آدرس /192.168.1.1/Images/JKProjects استفاده کنید.
  3. در صورت امکان از کارت شبکه های پر سرعت مثل اترنت ده گیگابایت بر ثانیه استفاده کنید، این امر می تواند در مواقع خاصی، به میزان چشمگیری سرعت رندر شما را بالا ببرد. به این دلیل که در بسیاری از پروژه ها ممکن است حجم بسیار زیادی اطلاعات داشته باشیم که در مرحله رندرینگ باید خوانده شوند ، مثلا فرض کنید پروژه انفجاری را ساخته اید که حجم هر فریم از فایل های Cache انفجار ساخته شده حدود 1.5 گیگابایت است، بنابراین موتور های رندر برای رندر هر فریم از انفجار ، ناچار هستند که حدود 1.5 گیگابایت اطلاعات را پیوسته از طریق شبکه کامپیوتری بخوانند و رندر کنند. مسلما اگر از شبکه های کم سرعت مثل 100Mbps استفاده کنید ، سرعت Read و Write اطلاعات کم می شود و اگر این تاخییر را در تعداد فریم های پروژه ضرب کنید، زمان تاخییر قابل توجهی بدست می آید !
  4. همیشه سعی کنید کل اطلاعات و متریال های مورد نیاز پروژه نظیر Texture ها ، فایل های Cache ، فایل های Reference ، فایل های Alembic و غیره در داخل پوشه پروژه جاری بریزید و بخوانید ، از ریختن آنها در خارج از پوشه پروژه اجتناب کنید ، مثلا اگر با Maya کار می کنید ، همه Texture ها را در پوشه sourceimages پروژه خود کپی کنید ، اگر گره های رندر به این اطلاعات دسترسی یا Permission لازم را نداشته باشند ، این اطلاعات در مرحله رندر مورد استفاده قرار نمی گیرند. بنابراین اگر پروژهای را رندر کردید و متوجه شدید که در یکسری از فریم ها Texture ها Load نشده اند ، به احتمال زیاد ، سیستم هایی که این فریم ها را رندر کرده اند ، امکان دسترسی به این Texture ها را نداشته اند.

اگر از نرم افزار Houdini استفاده می کنید، می توانید به جای ساخت پروژه ، آدرس تمامی فایلها را به جای Absolute ، به صورت Relative نیز تعریف کنید .

  1. در صورت امکان تمامی گره های رندر موجود در رندر فارم را با یک سخت افزار مشابه ببندید. اگر این امکان وجود نداشت، حداقل سعی کنید که CPU های گره های رندر از لحاظ معماری با هم مشابهت داشته باشند ، مثلا همه آنها از یک نسل پردازنده باشند .شاید عجیب به نظر برسد ولی گفته شده است که معماری های مختلف پردازنده ها میتوانند سبب تغییرات جزئی در تصاویر رندر شده بشوند که این امر باعث ایجاد تغییرات اندکی در فریم هایی که توسط پردازنده های مختلف رندر شده اند شود.

چنانچه به یک رندر فارم نیاز دارید ما می‌توانید رندر فارم سورین را بسته به نیاز و کارایی شما پیکر بندی کنیم