Programming - آموزش برنامه نویسی MEL - قسمت دوم- صفحه 1

آموزش  زبان برنامه نویسی Mel – قسمت دوم


مترجم : امیر نوری



حقوق این مقاله برای سایت انیمیشن دیتا محفوظ است



مثال کاربردی


برای جمع بندی بحث این آموزش شما قصد دارید یک پنجره My Setting  برای خود بسازید.



درست مانند دکمه ای که در مثال های قبل ساختید؛ هر دکمه ( button ) در پنجره ، یک فرمان خاص MEL را اجرا خواهد کرد. تفاوت آن ، این است  که شما در اینجا  بدون استفاده از  امکانات Drag and drop  با موس، و تنها با استفاده از MEL ، پنجره و دکمه ها را از  ابتدا میسازید . هدف از ساخت این پنجره ذخیره چندین کلیک موس و دسترسی به یک سری تغییراتی است که  نرم افزار مایا آنها را در پشت دکمه های برنامه پنهان کرده است.
اصل کار به وسیله ضبط فرمان ها از داخل History Pane انجام می شود؛ با این حال یک سری فرمان های رابط کاربری (UI) وجود دارد که باید بدانید:



هر کدام از این چهار فرمان نشان دهنده یک قسمت اصلی از ساخت UI در MEL است. در حال حاضر توضیح مختصری در مورد این  فرمان ها خواهیم داد . پنچره ای که میسازیم شبیه شکل زیر است:
 



تقریباً تمام رابط های کاربری موجود در MEL که شما میسازید ، در یک پنجره قرار می گیرند. شما می توانید یک پنجره را پایه رابط کاربری خودتان بدانید تا بقیه ابزار روی آن یا درون آن ساخته می شود.لایه بعدی بعد از پنچره،  آرایش یا تنظیم جای دکمه ها و فیلد ها و بقیه چیزهاست که به صورت کلی به آنها کنترل گفته می شود(Controls).یک column Layout تنظیم کننده کنترل ها در یک ستون از  بالا به پایین وجود دارد:
 



یک دکمه ، مثالی از کنترل ها در MEL است (مثل فیلد متن یا check box و منوهای انتخاب و هر کنترل دیگری که کاربر می تواند با آن کار کرده یا کنترلش کند.کاربر می تواند یک دکمه را کلیک کند؛  می تواند یک check box را انتخاب کند ؛ یا یک گزینه را از منوی گزینش انتخاب کند و این کار باعث فراخوندن فرمان وصل شده به آن کنترل می شود. بطور مثال وقتی کلیک کرد چه اتفاقی بیافتد.

 




در نهایت یک فرمان Show Window داریم. وقتی شما یک پنچره را میسازید به صورت پیش فرض آن پنچره نامریی است و شما قادر به مشاهده آن نیستید و لذا نیاز به استفاده از این فرمان دارید تا پنجره نمایش داده بشود.
با این توضیحات بهتر است به یک سری کار عملی برسیم.در اینجا مقداری کد برای ساخت یک پنجره است و بقیه کنترل ها داخلش وجود دارد  که در شکل قبل می توانید ببینید:


   

حالا به هر کدوم رسیدگی میکنیم:


پرچم –title کلمه را تعیین میکند که بالای پنجره نمایش داده می شود و در اینجا English Conversation است و می بینید که واقعاً هم همین است.
در حقیقت English Conversation یک رشته است( که به مجموعه ای از حرفها گفته می شود یک رشته) و هر رشته با یک double-quotes یا (") در ابتدا و انتهایش مشخص می شود و اصلاً به صورت فرمان مد نظر قرار نمی گیرد ؛ بلکه یک آرگومان از نوع رشته است و فاصله بین کلمات هم جزو این رشته محسوب میشوند. بعد از آن ما این فرمان را میبینیم:



پرچم –adjustableColumn تعیین میکند که آیا عرض column Layout می تواند تغییر کند یا خیر.(در این صورت وقتی شما پنجره را بزرگ و کوچک میکنید columnLayout  ثابت خواهد ماند).و آرگومان true به معنی بله  است؛ یعنی بله میخواهم اندازه تغییر کند ؛ ولی اگر false بگذارید باعث می شود که تغییر نکند.
پرچم بعدی پرچم –label است که نوشته را روی دکمه نشان می دهد . –label  هم مثل –title است و حالا روی دکمه “Hello How Are You?” نمایش داده میشود.





خوب تا اینجا شما برای خودتان یک رابط کاربری بدون مصرف ساختید!
حالا باید یک سری عملکرد  و اصطلاحاً کار به این رابط اضافه کنیم که آنرا  عملیاتی کند.همانطور که قبلاً اشاره شده بود اینطور رابط ها را می توانید برای تسریع روال تغییر یک سری تنظیمات استفاده کنید. به عنوان مثال فرض کنیم که ما  به طور مکرر نیاز به تغییر اندازه نمایش Jointها یا اتصال ها بین 1 و 0.5  و همینطور حرکت بین حالت رندر سخت افزاری و رندر نرم افزاری(مبتنی بر cpu داریم و همینطور در انتها من خیلی دوست دارم یک کره بسازم و اینطرف آنطرف ببرم.
اولین چیزی که من احتیاج دارم ، یافتن فرمان های مورد نیازم در MEL برای تغییر اندازه نمایش joint است. خوب برای شروع چندتا joint خواهیم ساخت,  script editor را باز کنید و دنبال تنظیمات joint بگردید.
 



بعد از چندتا کلید من اینجارا پیدا کردم Windows > Settings/Preferences > Preferences > Kinematics
 



اگر همه چیز درست پیش برود، من باید بتوانم اندازه joint را به 1.0 تغییر بدهم و بعد فرمان را از script editor بگیرم و آنرا به آن دکمه که ساختم بدهم و دیگر اینهمه دنبال این همه منو نروم!!:

 

عجب ! هیچی نشد که! Joint  بزرگتر شد و  هیچ خروجی در history pane نمی بینیم. از آنجایی که همه چیز در مایا از طریق MEL انجام می شود؛مایا کلی فرمان برای نمایش دارد. از اینرو در حالت عادی همه آنها در اینجا نمایش داده نمی شود و برای اینکه همه را ببینید باید بتوانید Echo All Commands را فعال کنید. در منوی اسکریپت در script editor شما می توانید این گزینه را فعال کنید. حالا شما کلی متن در  ویرایشگرتان در اختیار دارید.
باید بدانید که خیلی فرمان ها از طرف ویرایشگر در این حالت نمایش داده می شود و از جهت دیگر  بسته به کاری که میکنید گزینه Echo all Command  می تواند سرعت کار با مایا را کند کند. پس خیلی بهتر است که فقط وقتی نیاز دارید این قابلیت را فعال کنید. خوب حالا دوباره امتحان می کنیم ؛ اینبار اندازه joint را به 0.5  تغییر می دهیم.

 



اول از فرمان زیر شروع میکنیم:

 

که اندازه joint را به 1 تغییر می دهد. حالا میخواهیم آنرا به دکمه مورد نظر وصل کنیم تا دکمه عملیاتی شده و این فرمان را اجرا کند.
یک پرچم دیگر در  فرمان button وجود دارد که ما هنوز راجع به آن بحث نکردیم , یعنی پرچم –command . که یک ارگومان رشته می گیرد و در حقیقت فرمانی است که ما می خواهیم با زدن دکمه button انجام بشود. پس کد رابط کاربری ما تا اینجا بدین صورت است:



 

دقت کنید که فرمان jointDisplayScale با یک سمی کلن تمام شده است؛ چون در حقیقت این یک فرمانی است که ما به دکمه خودمان می شناسانیم و مثل هر فرمان دیگری باید با سمی کلن تمام بشود. ولی این سمی کلن –command  را تمام نمی کند و برای آنهم سمی کلن خودش را قرار می دهیم.

 

 

                                   صفحه 1                  صفحه 2                     عناوین مطالب

 

آمار بازدیدکنندگان

آنلاین: 5
امروز: 658
دیروز: 292
ماه: 1708
سال: 9076
کل: 191235
آخرین بازدید: 22:22