فواید ریگینگ بصورت Procedural با پایتون
به نام ایزد منان، سلام خدمت همه ی دوستان و عزیزان؛
بخش حساس و تاثیرگذار ریگینگ در پروژه های انیمیشن می تواند کاملا visual یا procedural و یا بصورت تلفیقی انجام گیرد، که این امر بستگی به استودیو و افراد متخصص بخش ریگینگ دارد. خب طبیعی است که هر یک از روش های ذکر شده خوبی ها و بدی هایی دارند که در این مقاله قصد داریم فواید ریگ به روش رویه ای را بررسی کنیم.
در این روش باید خروجی بخش مدلسازی کاملا تمام شده و کامل باشد. در ساختار پروژه که در عکس ابتدای صفحه مشاهده میشود باید بخش های مدل، کتابخانه های مورد استفاده، اسکریپت ریگ کاراکتر و کومپوننت ها جدا از هم باشند. در این روش با استفاده از پایتون یک ساختار اینچنینی تعریف می شود و پس از اتمام اسکریپت های ریگ و کتابخانه ها، در صحنه ی سه بعدی مایا روی کاراکتر اعمال می شود.
خب چرا پایتون؟ جواب آن را بدین صورت میدهیم که زبان برنامه نویسی پایتون (درمقابل زبان MEL نرم افزار مایا) یک زبان کامل با تعداد بیشماری از کتابخانه های بزرگ و کوچک و پشتیبانی انواع داده ای و داده ساختارهای مختلف است، و برای کمک به سرعت و دقت در انجام اینکار استثنایی است.
برای ریگ به روش رویه ای میتوان فواید زیر را ذکر کرد؛
- کاهش زمان در انجام بخش های تکراری
در ریگ به روش رویه ای ما با نوشتن توابع و استفاده ی مکرر از آنها به جای ریگ دستی زمان زیادی را در طول انجام کار حفظ می کنیم. این کاهش زمان در تکرار بخش هایی از کار یک امر بسیار مهم و واضح در برنامه نویسی اصولی است، یعنی وقتی یک بخش از کد تکراری است ویا نتیجه ی حاصل از اجرای چند خط کد یکی است، طبیعتا رویه و تابع است که زمان را برای ما حفظ میکند.
- اصلاح ریگ های خراب شده با دوباره سازی
در برخی از موارد ممکن است صحنه ای از کاراکتر و اشیاء که در میانه ی مراحل ریگ و یا بعد از پایان آن ذخیره شده باشد و پس از بارگذاری مشاهده می شود که بخشی از ریگ به درستی کار نمیکند؛ خب در برخی از مواقع ممکن است مجبور شویم بخشی از ریگ را دوباره از اول انجام دهیم و دوباره کاری بصورت دستی بسیار وقت گیر و حوصله بر خواهد بود! اما با استفاده از توابع و رویه های نوشته شده به سرعت دوباره سازی را انجام میدهیم.
- قابلیت تغییر و تست سریع
از دیگر قابلیت های اسکریپت ها و توابع، امکان تست و تغییر سریع تر در آنها نسبت به حالت ویژوال است. همانطور که میدانید روال ریگینگ بدین صورت است که پس از پایان هر تکه از ریگ، با تست کردن از عملکرد درست آن اطمینان حاصل میشود. برای مثال در حالت رویه ای با تغییر یک پارامتر در کد به سرعت حالت های مختلف ریگ را امتحان میکنیم، حال آنکه این عمل ممکن است درحالت ریگ دستی به این راحتی و سرعت نباشد.
- پیشگیری از خطاهای انسانی و فراموشی اضافه کردن tweak
از ویژگی های منحصربه فرد اسکریپت نویسی این است که تمام اسکریپت ما یکبار بوسیله ی مفسر بازخوانی شده و خطاهای نحوی و دستوری را به نویسنده ی اسکریپت گوشزد میکند، این امر باعث می شود رویه ای که درحال ساخت آن هستیم بدون خطای ساختاری ذخیره شود.
حال اگر اشتباه و خطایی در نحوه ی عملکرد آن باشد پس از اجرای آن و الحاق آن به آبجکت ها، دوباره مفسر دقیقا جای مشکل را به ما نشان می دهد؛ این درحالی است که درحالت ویژوال پیدا کردن مشکل معمولا به این راحتی نیست و بعضا مشکل یک بخش ممکن است از یک بخش دیگر بروز داده شود! (مثلا وقتی IK برای دست استفاده کردید، بعد از اینکه joint شانه را میخواهید بچرخانید، میبینید channel مربوط به rotate آن بسته شده است، خب برای افراد حرفه ای این چیز واضحی است ولی اگر اولین بارمان باشد چه؟)
- سازگاری با pipeline با استفاده از توابع کتابخانه ای
این روش در کارهای بزرگ و تولیدات pipeline بسیار مقیاس پذیر و منعطف است، بدین معنی که در استودیوهایی که کارها بصورت pipeline انجام میگیرد، این رویه ها و ساختاری که درابتدا معرفی شد و نیز کتابخانه های نوشته شده، بسیار کارآمد و قابل استفاده ی چندباره در طول مراحل مختلف و بخش های مختلف پروژه هستند.
- به اشتراک گذاری بلاک های کد و استفاده ی مجدد از آنها
از دیگر ویژگی های برنامه نویسی، استفاده ی مجدد از بخشی از کدها و یا استفاده از بخشی از یک کد به عنوان تابع و رویه به کرات است. این ویژگی در ریگینگ رویه ای به ما کمک میکند که هرجاکه نیاز بود، بخشی از کد را دوباره استفاده کنیم و یا یک تابع جدید از چند خط کدی که زیاد استفاده میشود بسازیم؛ درحالی که استفاده ی مکرر از چند عمل بصورت دستی به این شکل آسان و کارا نیست. (گرچه اینکار را اکثر مدلسازها و انیماتورها انجام میدهند و برایشان هم آسان است، اما درمقایسه با روش رویه ای میتوان گفت که چیزی به حساب نمیاید! با این حال این ترفند و استفاده از چندین خط دستورات زبان MEL بصورت یک تابع را در قالب یک مقاله منتشر خواهیم کرد)
- قابلیت جابجایی آسان کار بین افراد
واضح است که با توجه به یکی از ویژگی های برنامه نویسی یعنی قابلیت انتقال آسان کد، در پروژه هایی که ریگینگ رویه ای انجام شده است افراد میتوانند به آسانی و بدون دردسر پروژه را بین خود جابجا کنند و نیز، با توجه به اینکه فهمیدن کار دیگران از روی گراف های ساختاری داخل صحنه ها بسیار سختتر از فهمیدن کدهایشان است، بنابراین این جابجایی در مواردی که شخصی قرار است ادامه ی کار فرد قبلی را انجام دهد ویا آن را اصلاح کند، بسیار مؤثر است.
- اسکریپت نویسی ریگ در بسیاری از تولیدات رده بالا کاری استاندارد است
در بسیاری از پروژه های بزرگ سینمایی و سرگرمی روز دنیا، چه در شبیه سازی های دینامیکی، جمعیت، آب و هوا و … . چه در ریگ های پیچیده و اساسی کار از روش رویه ای استفاده میشود و این امر به یک استاندارد در این سطح تبدیل شده است؛ این استاندارد بازار کاری بسیار پردرآمد برای برنامه نویسانی است که به زمینه ی سه بعدی علاقه دارند و یا علاوه بر برنامه نویسی در زمینه ی سه بعدی مهارت هایی کسب کرده اند.
در این مقاله سعی شد بصورت واضح و خلاصه فواید استفاده از روش رویه ای در ریگینگ و کلا پروژه های سه بعدی مطرح شود. ان شاءالله در مقاله های بعدی، یک پروژه ی عملی ریگ را بصورت رویه ای با پایتون در مایا خواهیم داشت و نیز شبیه سازی جمعیت بصورت رویه ای یکبار با پایتون و یکبار با MEL انجام خواهیم داد.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.