با سلام.   اگر تا اینجا با ما همراه شده باشید می دانید که در پارت های قبلی همه پارامترهای مربوط به موتور رندر Mental Ray در نرم افزار Softimage را بررسی کردیم و با روش های رندرینگ (متدها) پرکاربردی سر و کار پیدا کردیم. در این پارت که به عبارتی پارت آخر از این مجموعه محسوب می شود مطالب را دنبال می کنیم و با آزمایش یک صحنه و بررسی زمان رندر بهینه شده مبحث را به پایان می رسانیم. پس لطفا با ما همراه باشید . . .

تصویر softimage
-
-

4. Acceleration Method
   خوب، و اکنون ایستگاه آخر برای بهینه سازی رندرینگ! در حال حاضر، دو متد شتاب دهنده وجود دارد:

- Ray Classification و
- BSP tree

   BSP tree تنظیم پیش فرض است و در بیشتر مواقع از ray classification سریع تر کار می کند. به عقیده Microsoft Softimage، متد ray classification برای صحنه های سنگین تر از 100000 تا 150000 مثلث بر روی ماشین هایی با مقدار رم پایین نتایج بهتری ارائه می دهد. با ویژگی های ray classification می توانید تعیین کنید که منتال ری از چه مقدار رم در دسترس استفاده کند تا از صفحه بندی بر روی هارد دیسک که پردازش را خیلی کند می کند، جلوگیری شود. به هر حال، من با ray classification تلاش هایی انجام دادم و با اینکه صحنه آزمایش من 360000 مثلث داشت، به هیچ وجه سریعتر از رندرینگ با BSP tree نبود. پیشنهاد من کار با BSP tree است، این متد به اندازه کافی پیچیده است.

   BSP tree دو نوع تنظیم برای ویرایش دارد. Max Depth و Max Size. ما در مطالب قبل خبر داشتیم که این مقادیر به رندرکننده منتال ری (mr renderer) می گوید که چه زمانی عمل بخش بندی صحنه را متوقف سازد (بخش بندی آن به box). مقدار Max Depth و Max Size به نسبت وابستگی بر روی یکدیگر مرتب شده اند، اگر شما یکی از مقادیر را تغییر دهید مقدار دیگر به جایی دیگر شیفت می شود. هر جایی که شما برای اطلاعاتی در مورد بهینه سازی mr renderer جستجو می کنید، هر کسی به شما خواهد گفت که این کار (بهینه سازی mr renderer) بیشتر از اینکه یک علو باشد یک هنر است. هیچ قانون یا روش عینی برای سریعتر کردن زمان رندر وجود ندارد.

من یک متد جالب توجه برای چگونگی بدست آوردن نتایج مناسب و بهینه خواندم:
   بر روی verbose در Render -> Options dialogue box کلیک کنید. درخت BSP خود را با مقادیری مثل 60 و 6 تنظیم کنید، یک فریم رندر بگیرید.
وقتی رندر، UI یا رابط کاربری Softimage را خارج کرد، بر روی Mode در پایین صفحه، status line کلیک نمایید. با این کار یک viewer برای فایل وضعیت Softimage باز می شود که حاوی اطلاعات جزیی از افکت ها، پیام های خطا، رندرینگ، و . . . است.
فایل soft.status معمولا در C:\temp یا پوشه های دیگر temp پیدا می شود. اگر آن فایل بسیار بزرگ است و شما اجازه یا دسترسی برای حذف آن را ندارید، فقط آن را باز کنید، تمام محتویات متنی را کات (جدا) کنید و فایل خالی را دوباره ذخیره کنید. این کار جستجو و یافتن اطلاعات را آسان تر می کند.

Max size:
خب، حالا مقدار search شروع می شود. قبل از رندرینگ، در مرحله پیش-پردازش (pre-processing)، شما مقداری برای بزرگترین نود برگ. (آن را ثبت کنید) سپس شما مقادیر درصدی می بینید که پیشرفت رندر را نشان می دهد. بعد از آن، مقداری وجود دارد که مثلث های کاندید برای هر اشعه را تعیین می کنند. (آن را ثبت کنید)

تکنیک می گوید که اگر این مقادیر بزرگتر از 10 باشد، شما باید max depth درخت BSP را افزایش دهید. سپس شما می توانید max size را کوچکتر کنید. این کار باعث می شود که رندرکننده صحنه را به box های بیشتری تقسیم کند، که زمان پیش-پردازش را افزایش می دهد، اما مقادیر کوچکتر برگ برای رندر سریع تر عمل می کنند.

Max depth:
- حداکثر عمق درخت را مقدار بزرگی تعیین کنید، مثلا 50.
-  شروع به رندرینگ یک فریم کنید، اما به محض اینکه Softimage رندرینگ را در صفحه آغاز کرد آن را لغو (cancel) کنید.
- به داخل فایل status بروید و
- تعداد برگ ها را بررسی کنید. (ان را ثبت کنید)
- max depth را به مقدار کوچکتری تغیییر دهید و همان کارها را دوباره انجام دهید.

این کار را ادامه دهید، و در یک max depth معین درخت تعداد برگ ها باید به طور موثر کاهش یابد. آن مقدار را برای اینکه به تنظیم بهینه برای max depth دست یابید 1+ کنید.

این یک تئوری است. این متاسفانه برای من کار نکرد. اندازه بزرگترین نود برگ، تعداد مثلث های کاندید برای هر اشعه همان مقدار باقی ماند یا افزایش یافت و نسبتا دور از 10 بود (به جدول پایین صفحه نگاه کنید). و تعداد برگ ها به جای اینکه کاهش یابد افزایش یافت.

بنابراین، این متد من است:
   من از پروژه نهایی David Blazetich  به عنوان صحنه آزمایشی استفاده کردم. در ادامه مقادیر Info -> Scene را برای اطلاع می بینید.

363.439 triangles,
652 models,
446 materials,
492 textures,
84 pictures,
64 lights

global settings: Textures 2D, Reflections, Shadows
resolution: 720x342, no anti-aliasing

زمان رندر برای یک فریم وقتی در ابتدا صحنه را به دست گرفتم : 1:45
زمان رندر برای یک فریم اکنون : 0:59

وقتی صحنه را به دست گرفتم، مقادیر max depth و max size به ترتیب 60 و 6 بودند. کارهایی که انجام دادم این ها بودند، رندر یک فریم، وقت نگه داشتن، یادداشت کردن پیش-پردازش و زمان رندرینگ. مقدار depth را کوچکتر قرار می دهیم و دوباره رندر می گیریم. در ادامه جدول روال آن را می بینید:

تصویر جدول بهینه سازی رندرینگ
-جدول بهینه سازی BSP tree

من به سادگی max depth را مقدار دهی کردم تا سریع ترین تنظیمات را بدست آوردم. تغییر max size خیلی قابل بیان کردن نیست. به هر روی، آن را مور آزمون و خطا انجام دهید! با آن بازی کنید، جالب است و امیدوارم که کمی به شما کمک کرده باشم. اگر چیزی در این مقاله آموزشی فراموش شد و یا اشتباه بود، لطفا به من اطلاع دهید.

برای اطلاعات بیشتر و پیچیده تر به راهنمای Softimage 3D Rendering مراجعه نمایید.

نویسنده Christoph Schinko
ترجمه 3D2DAY STUDIO

واژه نامه                                                     

Area Light - مربوط به mr؛ منبع نوری که نور را به جای انعکاس از یک نقطه، از یک سطح انعکاس می دهد.؛ نتایج خیلی دلپسندی ارائه می دهد، اما زمان زیاد رندر را باعث می شود

BSP tree - متد شتاب دهنده رندرینگ

Defragmentation - جابجایی خوشه ها (بخش های کوچک) بر روی هارد دیسک تا همه خوشه های مربوط به یک فایل به شکل پیوسته در کنار هم مرتب شوند

Displacement mapping - مربوط به mr؛ یک مپ (نقش) برجسته را می گیرد و جسم هندسی فعلی را به آن مپ تبدیل می کند

Leaf - برگ

Max depth - حداکثر تعداد مرنبه ای که یک box می تواند تقسیم شود

Max size - حداکثر تعداد برگ ها در یک box قبل از اینکه منتال ری (mr) عملیات بخش بندی را متوقف سازد

Mental ray - موتور رندر قدرتمند برای بدست آوردن تصاویر طبیعی و واقعی

mr - منتال ری (mental ray)

Pre-processing - محاسباتی که قبل از شروع رندرینگ انجام می شوند؛ تقسیم بندی صحنه، بارگزاری فایل های pic (تصویری) برای تکسچرها، شروع روتین های شیدر، . . .

Radiosity - نوعی رندر؛ هر مثلث مقداری دریافت می کند که چگونه بوسیله همه منبع های نوری موجود تاثیر پذیرد، رندر وابسته به دوربین نیست؛ هر بار که صحنه محاسبه می شود، شما می توانید به راحتی در آن حرکت کنید. نتایج زیبایی ارائه می دهد، اما سرعت رندرینگ را به شدت کاهش می دهد

Ray classification - متد شتاب دهنده برای رندر صحنه های بزرگ؛ کنترل خوبی بر روی استفاده از حافظه ارائه می کند

Ray tracing - نوعی رندر؛ اشعه هایی را از سمت دوربین پرتاب می کند و مسیر آن ها را تا زمانی که به آبجکت ها برخورد می کنند دنبال می کند، آن ها را منعکس می کند (reflection) یا آن ها را عبور می دهد (transparency, refraction)

Renderer - موتوری که صحنه را تقسیم و رندر می کند

Shadow pass - زیر-صحنه را مجزا می کند؛ فقط شامل آبجکت هایی که ایجاد سایه می کنند یا سایه ای دریافت می کنند -> رندر تنها سایه ها را نمایش می دهد -> compositing

Subdividing - مرحله پیش-پردازش؛ یک box سرتاسر صحنه قرار می دهد و آن را به box های کوچکتر تقسیم می کند تا زمانیکه BSP tree به او بگوید که کار را متوقف کند

Tessellation - سطوح را به مثلث هایی برای رندرینگ بخش می کند (با 3 گوشه)

UI - رابط کاربری (User Interface)

Volumetric light pass - زیر-صحنه را مجزا می کند؛ فقط شامل نورهای حجمی و آبجکت هایی که تحت تاثیر آن قرار دارند می شود -> compositing Volumetric Light - مربوط به mr؛ منبع نور موضعی (Spot light)، جایی که مخروط نور قابل دیدن است (پرتوهای نور، دود، ...)