بخش پنجم آموزش ریگ بندی در مایا (ریگ بندی دستان و انگشتان)
فهرست مطالب
در بخش پنجم و بخش آخر از ریگ در مایا رسیدیم.
قطعا با پایان این بخش نکات و آموزش های لازم در رابطه با ریگ بندی در مایا تمام نشده و جزئیات بسیار بیشتری از ریگ بندی در مایا باقی مانده است.
اما نکته ای که وجود دارد ، این است که ما قصد آشنایی شما تا حد متوسطه را در مبحث ریگ بندی مایا داریم.
برای بخش پیشرفته شما باید منابع بیشتری را مطالعه کنید.
در بخش قبل ما به ریگ بندی شانه ها و بازوها پرداختیم.
در این بخش قصد ریگ بندی دستان و انگشتان را داریم که در واقع آخرین بخش ریگ بندی ما در مایا می باشد.
پیش نیاز این دوره ی آموزشی تسلط و مطالعه ی آموزش ریگ بندی در مایا (بخش چهارم) می باشد.
و همچنین تسلط بر مدل سازی در نرم افزار مایا .
مقدمه
همانطور که گفته شد در این آموزش، با اضافه کردن اتصالات و کنترل دستها، به ایجاد ریگ برای مش خود ادامه میدهیم.
دستها به عنوان دومین بخش برجسته بدن (پس از صورت) شناخته میشوند، بنابراین ما میخواهیم مطمئن شویم که ریگ به اندازه کافی انعطافپذیر است تا انیماتور بتواند طیف وسیعی از ژستها و حرکات را با دست ها ایجاد کند.
یکی از موضوعاتی که باید بر آن توجه ویژه ای داشته باشیم ، این است که دست باید از زنجیره بازوی FK و IK و همچنین transition بین دو حالت به طور تمیزی پیروی کند.
ما همچنین می خواهیم که کنترل دستی چرخاندن ساعد را نیز به حرکت درآورد.
برای انگشتان، ما استخوانهای metacarpal را اضافه میکنیم، زیرا این امکان را به دست میدهد تا مشتی باورپذیرتر ایجاد کند.
metacarpal پنجم (صورتی) از اهمیت خاصی برخوردار است زیرا بسیار انعطاف پذیر است و در ارتباط با انگشت شست کار می کند تا مهارت زیادی را به شما بدهد.
کنترلرهای مزاحم
برای دوباره کار کردن و مرتب کردن کنترلهای بازوی IK، ابتدا به Create > Polygon > Cube بروید.
Snap to Points را فعال کنید و سپس به Create > CV Curve Tool (Options) بروید.
درجه Curve را روی 1 Linear قرار دهید و سپس بر روی گوشه های مکعب کلیک کنید تا طرح کلی یک کادر ایجاد شود.
پس از تکمیل، کلید Enter را بزنید تا منحنی مکعب مانند ایجاد شود و سپس مکعب چند ضلعی اصلی را حذف کنید.
منحنی را کمی بزرگتر کنید تا اندازه مناسبی برای قرار گرفتن در اطراف دست داشته باشد و سپس برای تمیز کردن transformation channels به Modify > Freeze Transforms بروید.
برای قرار دادن کنترل، منحنی جدید را در زیر l_arm_IK_ctrl قرار دهید و سپس مقادیر translate را در Channel Box صفر کنید.
هنگامی که کنترل در جای خود قرار گرفت، آن را انتخاب کنید و Shift+P را فشار دهید تا از کنترل IK خارج شود.
برای ایجاد کنترل بازوی راست، منحنی را کپی کنید، آن را تحت r_arm_IK_ctrl قرار دهید، مقادیر translate را صفر کنید و سپس منحنی را از حالت اول خارج کنید.
l_arm_IK_ctrl اصلی را انتخاب کنید و چند حرف تصادفی در انتهای نام آن اضافه کنید.
این برای جلوگیری از تضاد نام ها با کنترل جدید ما است.
اکنون اولین مورد از دو کنترل جدید (سمت چپ) را انتخاب کنید و نام آن را به l_arm_IK_ctrl تغییر دهید.
همین کار را برای بازوی راست انجام دهید.
اکنون l_arm_IK_ctrl را تحت l_arm_IK_ctrl_auto و والد r_arm_IK_ctrl را تحت r_arm_IK_auto قرار دهید.
حالا دو کنترل قبلی IK را انتخاب کرده و حذف کنید.
اکنون می خواهیم دسته های IK را با کنترل ها کنترل کنیم.
به این ترتیب، l_arm_IK_ctrl، Shift-select l_arm_IK را انتخاب کنید و سپس Constrain > Point را انتخاب کنید.
همین کار را برای سمت راست انجام دهید.
با انتخاب l_arm_IK_ctrl و r_arm_IK_ctrl، به Modify > Add Attribute بروید.
Data Type را روی Float قرار دهید و کادرهای Minimum، Maximum و Default را خالی بگذارید.
با این تنظیمات، دو اتریبیوت زیر را ایجاد کنید :
elbowTwist
armTwist
در حالی که 2 کنترل هنوز انتخاب شدهاند، ویژگیهای rotate و scale را در Channel Box هایلایت کنید، RMB را نگه دارید و گزینه Lock and Hide Selected را انتخاب کنید.
برای اینکه elbowTwist کار کند، l_arm_IK_ctrl را انتخاب کنید و به Window > General Editors > Connection Editor بروید.
این باید کنترل را در سمت چپ بارگذاری کند.
حالا l_lowerArm_IK_jnt را انتخاب کنید و در پنجره Connection Editor Reload Right را بزنید.
هم اکنون elbowTwist را در سمت چپ هایلایت کنید (باید پایین باشد) و rotate (چرخش به سمت بالا) را در سمت راست هایلات کنید.
حالا برای armTwist. l_arm_IK را انتخاب کنید و Reload Right را در Connection Editor بزنید.
armTwist را در سمت چپ هایلایت کنید و twist را در سمت راست انتخاب کنید.
وقتی بازوی چپ تمام شد، همین مرحله را برای بازوی راست تکرار کنید.
حال می خواهیم ابتدا کنترلها را رنگآمیزی کنیم و سپس سلسلهمراتب را برای کنترلهای شانه دوباره تنظیم کنیم.
برای انجام این کار، کنترلی را که می خواهید رنگ کنید انتخاب کنید و Attribute Editor (Ctrl+A) را باز کنید.
به پایین صفحه نمایش بروید و برگه Drawing Overrides را باز کنید. Enable Overrides
را روشن کنید و رنگ مناسب را از نوار لغزنده Color انتخاب کنید.
ایجاد مفصل کف دست
در حال حاضر، چرخاندن کنترلهای تنه، نتیجهای را که از روی شانهها دنبال میکنیم، به ما نمیدهد.
برای رفع این مشکل، ابتدا l_shoulder_ctrl_offset و r_shoulder_ctrl_offset را انتخاب کنید و Shift+P را بزنید تا آنها را از chest_IK_ctrl حذف کنید.
حالا spineF_IK_jnt را انتخاب کنید، Shift-select l_shoulder_ctrl_offset را انتخاب کنید و به Constrain > Parent بروید.
این مرحله را برای بازوی راست تکرار کنید و سپس می توانیم به سمت دست ها حرکت کنیم.
l_armEnd_jnt را انتخاب کنید و Ctrl+D را بزنید تا کپی شود و سپس Shift+P را از سلسله مراتب فعلی خارج کنید.
نام مفصل را به l_palm_jnt تغییر دهید و سپس با انتخاب آن، کلیدهای Ctrl+D را بزنید تا کپی شود.
نام مفصل جدید را به l_palmEnd_jnt تغییر دهید و آن را در امتداد محور Y ترنسلیت کنید (حتماً هنگام انجام این کار حالت ترنسلیت را روی Local تنظیم کنید).
اکنون l_palmEnd_jnt را در زیر l_palm_jnt قرار دهید.
بیایید اکنون low-res geometry را برای دست ایجاد کنیم.
مش اصلی را انتخاب کرده و آن را کپی کنید.
در حالت Face، همه چهرهها به غیر از صورت دست را انتخاب کرده و حذف کنید.
نام این geometry را به l_hand_proxy_geo تغییر دهید و سپس هندسه را در زیر l_palm_jnt قرار دهید.
ایجاد کنترل کف دست
برای ایجاد کنترل کف دست، Script Editor را باز کنید، createControls.py را بارگذاری کنید و خط زیر را به انتهای اسکریپت اضافه کنید:
(ctrl، s، mo=0)cmds.pointconstraint
l_palm_jnt را انتخاب کنید و سپس اسکریپت را برای ایجاد کنترل اجرا کنید.
مفصل هم نقطه ای و هم جهتی محدود به کنترل خواهد بود.
اکنون کنترل را در حالت CV (F8) ویرایش کنید تا به راحتی قابل انتخاب باشد.
برای اینکه کف دست بتواند پیچش ساعد را ایجاد کند، ویرایشگر Expression را باز کنید (Windows > Animation Editor) و قسمت پایینی l_armTwist_expr را به این صورت تغییر دهید:
;l_lowerArmTwistA_jnt.rotateY = l_palm_jnt.rotateY *.25
;l_lowerArmTwistB_jnt.rotateY = l_palm_jnt.rotateY *.5
;l_lowerArmTwistC_jnt.rotateY = l_palm_jnt.rotateY *.75
حالا l_palm_jnt را انتخاب کنید، Attribute Editor را باز کنید و به ترتیب Rotate را روی YZX تنظیم کنید.
Rotate Order برای l_palm_ctrl را نیز روی YZX تنظیم کنید.
متصل کردن دست به بازو
2 locators ایجاد کنید (Create > Locator) و نام آنها را l_arm_FK_con و l_arm_IK_con تغییر دهید.
l_arm_FK_con را انتخاب کنید و Ctrl+G را بزنید تا به خود گروه بندی شود.
نام این گروه را به l_arm_FK_con_offset تغییر دهید و سپس همین کار را برای l_arm_IK_con انجام دهید.
حالا هر دو l_arm_FK_con_offset و l_arm_IK_con_offset را انتخاب کنید و آنها را در زیر l_palm_ctrl قرار دهید.
اتریبیوت های ترنسلیت و rotate را در Channel Box صفر کنید تا در جای خود قرار گیرند و سپس Shift+P را فشار دهید تا از حالت والد خارج شوند.
برای اینکه locators راحت تر انتخاب شوند، آنها را انتخاب کنید و Local Scale ، X، Y و Z را در Channel Box افزایش دهید (این تنظیم را در SHAPES خواهید یافت).
حالا به این ترتیب انتخاب کنید: l_arm_FK_con، l_arm_IK_con، l_palm_ctrl_offset و به Constrain > Parent بروید.
حالا به این ترتیب انتخاب کنید: l_armEnd_jnt، l_arm_FK_con و به Constrain > Point و سپس Constrain > Orient بروید.
سپس به ترتیب l_armEnd_jnt، l_arm_IK_con را انتخاب کنید و به Constrain > Point بروید.
اکنون دست باید هر دو بازوی FK و IK را دنبال کند.
اکنون می خواهیم از یک Driven Key برای کنترل زنجیره بازویی که باید دنبال شود استفاده کنیم.
پنجره SDK را با رفتن به Animate > Set Driven Key > Set باز کنید و با انتخاب fkIkSwitch_ctrl، Load Driver را بزنید.
سپس گره parentConstraint را که زیر l_palm_ctrl_offset قرار دارد ؛ انتخاب کنید و Load Driven را بزنید.
سپس اتریبیوت L Arm را روی 0 (حالت FK) در fkIkSwitch_ctrl و در گره parentConstraint، L Arm FK Con W0 را روی 1 و L Arm IK Con W1 را روی 0 تنظیم کنید.
روی SDK window ، Key را بزنید.
اکنون fkIkSwitch_ctrl را روی 1 (حالت IK) و در گره parentConstraint ، L Arm FK Con W0 را روی 0 و L Arm IK Con W1 را روی 1 تنظیم کنید.
یک بار دیگر روی پنجره SDK ، Key را بزنید.
اکنون کف دست باید در هر دو حالت FK و IK به درستی بازو را دنبال کند.
بیایید اکنون Outliner را به سرعت مرتب کنیم.
ابتدا، اجازه دهید نام l_arm_FK_con و l_arm_FK_con_offset را به l_palm_FK_con و l_palm_FK_con_offset تغییر دهیم که منطقی تر است (همین کار را برای مجموعه IK انجام دهید).
سپس هر دو l_palm_FK_con_offset و l_palm_IK_con_offset را انتخاب کنید و Ctrl+G را بزنید.
نام این گروه را به l_palm_con_grp تغییر دهید.
ایجاد مفاصل انگشت
برای ایجاد مفاصل انگشت، به نمای Top بروید و Skeleton > Joint Tool را فعال کنید.
از انگشت اشاره شروع کنید، یک زنجیره 5 مفصلی بکشید که از ریشه جایی که استخوان metacarpal شروع می شود، سپس در هر بند انگشت و در نهایت در نوک انگشت قرار می گیرد.
در مورد موقعیت آنها زیاد نگران نباشید، زیرا در ادامه این مورد را اصلاح خواهیم کرد.
اگر اتصالات بسیار بزرگ کشیده شده اند، از Radius در Channel Box برای کوچکتر کردن آنها استفاده کنید.
حالا مفصل ریشه را برای زنجیره انتخاب کنید و آن را به شکل geometry ، دست ترنسلیت کنید.
در حالی که مفصل ریشه هنوز انتخاب شده است، به Skeleton > Orient Joint Tool (Options) بروید.
محور اولیه را روی Y، محور ثانویه را روی X و World Orientation محور ثانویه را روی X (+) تنظیم کنید.
Flexion باید با چرخش X مثبت ایجاد شود.
اکنون از ترکیبی از Joint orient در Attribute Editor و translate Y (طول مفصل) برای قرار دادن اتصالات در جای خود استفاده کنید.
به یاد داشته باشید که بررسی کنید که تمام rotation channels مقادیر صفر داشته باشند، همانطور که کانال ترنسلیت X و Z برای همه مفاصل فرزند دارای مقادیر صفر هستند.
مفصل ریشه می تواند مقادیری در تمام translate channels داشته باشد.
این مرحله را برای بقیه انگشتان و شست تکرار کنید.
توجه داشته باشید که انگشت شست یک زنجیره 4 مفصلی است زیرا یک استخوان کمتر از انگشتان دست دارد.
سعی کنید مفاصل را طوری جهت دهید که وقتی با استفاده از ویژگی rotate X چرخانده می شوند، مشت خوبی با انگشتان به هم چسبیده ایجاد کنند.
دست خود را که از حالت پیش فرض به مشت می رود، تجزیه و تحلیل کنید و این کار را برای اطلاع از نحوه جهت دهی مفاصل انجام می دهید.
تغییر نام مش و joints (اتصالات یا مفاصل)
حالا می رسیم به قسمت کسل کننده ی همیشگی.
ما باید نام مفاصل و هندسه را به درستی تغییر دهیم.
یک اسکریپت در چنین مواقعی به کار میآید و موارد زیادی وجود دارد که میتوانید از Creativecrash استفاده کنید که این کار را انجام میدهند.
در حال حاضر، ما فقط می خواهیم این کار را به صورت دستی انجام دهیم.
در اینجا به تفکیک نامگذاری مفاصل انگشت اشاره و مش اشاره شده است.
برای زنجیره مفصل انگشت اشاره از ریشه تا نوک :
l_indexA_jnt، l_indexB_jnt، l_indexC_jnt، l_indexD_jnt و l_indexEnd_jnt
برای هندسه انگشت اشاره از ریشه تا نوک :
l_indexA_proxy_geo، l_indexB_ proxy_geo، l_indexC_ proxy_geo، l_indexD_ proxy_geo، و l_indexEnd_ proxy_geo
به سادگی این کار را برای بقیه انگشتان تکرار کنید و نام انگشت را جایگزین انگشت اشاره کنید: middle ، ring ، pinky و thumb .
هنگامی که همه چیز برچسب گذاری شد، قطعه geometry مربوطه را در زیر مفصل مربوطه قرار دهید.
ایجاد کنترل های انگشت
ما میخواهیم از اسکریپت createControls.py برای ایجاد کنترلهای انگشتان دست استفاده کنیم،
اما ابتدا باید خط اضافی را که در مرحله 3 به اسکریپت اضافه کردهایم حذف کنیم، زیرا فقط محدود کردن جهتها را می خوایم.
پس از حذف خط، تمام اتصالات انگشت (منهای مفاصل انتهایی) را انتخاب کرده و اسکریپت را اجرا کنید.
اگر کنترلها هنگام ایجاد نسبتاً بزرگ هستند، کاری را که انجام دادید لغو کنید و شعاع خط 16 اسکریپت را کاهش دهید (r=1.25).
اسکریپت را دوباره اجرا کنید و امیدواریم نتیجه ی بهتری را داشته باشید.
F8 را بزنید تا وارد حالت کامپوننت شوید و شکلهای کنترل را دوباره کار کنید تا راحتتر انتخاب شوند.
اکنون باید سلسله مراتب فرزند والدین را با کنترل های خود ایجاد کنیم تا رفتار FK مفاصل خود را تقلید کنیم.
ما روند انگشت اشاره را شرح می دهیم، اما می توانید به سادگی این روند را برای بقیه انگشتان تکرار کنید.
بنابراین، اولین والد l_indexD_ctrl_offset تحت l_indexC_ctrl. سپس l_indexC_ctrl_offset والد تحت l_indexB_ctrl. l_indexB_ctrl_offset والد تحت l_indexA_ctrl_offset.
پس از تنظیم تمام سلسله مراتب های کنترل انگشت، تمام گره های l_”finger”A_ctrl_offset را انتخاب کنید و همه آنها را در زیر l_palm_ctrl قرار دهید.
آخرین کاری که باید انجام دهید این است که تمام زنجیره های مفصل انگشت را زیر l_palm_jnt قرار دهید و همه چیز باید تقریباً خوب باشد.
مهرسا امینی
برنامه نویس ، انیماتور ، سئوکار
در زندگی رویاهات را دنبال کن