آشنایی با اسکریپت نویسی پایتون در مایا
با عرض سلام خدمت همه ی علاقه مندان به نرم افزار حرفه ای مایا.
در این مقاله قصد داریم تا با مقدمات اسکریپت نویسی با زبان پایتون در نرم افزار مایا آشنا شویم.
نرم افزار مایا علاوه بر رابط کاربری گرافیکی، دارای یک رابط کاربری دستوری نیز هست که کاربران حرفه ای اغلب برای افزایش سرعت در انجام کارهای تکراری و نیز برخی دستور های دیگر در نرم افزار از آن استفاده می کنند.
تمام کارهایی که در جلو و در صحنه ی نرم افزار به وسیله ی کاربر انجام داده می شود، در پشت صحنه درواقع یک دستور به زبان MEL است که اجرا می شود. برای بهتر فهمیدن این مطلب پنجره ی Script Editor را باز می کنیم، سپس از منوی History گزینه ی Echo All Commands را انتخاب می کنیم.
مشاهده می کنیم که هر کاری که در صحنه انجام می شود، معادل حداقل یک خط دستور به زبان MEL است . بنابراین برای انجام برخی از کارهایی که روال طولانی دارند و یا انجام چند کار برای تعداد دفعات زیاد اسکریپت ها بسیار مفیدند.
دستورات مایا در اسکریپت های پایتون
در محیط نرم افزار مایا درکنار زبان اصلی آن یعنی MEL، امکان برنامه نویسی و اسکریپت نویسی به زبان Python نیز فراهم شده است. زبان برنامه نویسی قدرتمند و بسیار انعطاف پذیر پایتون علاوه بر مایا در بسیاری از نرم افزار های گرافیکی بزرگ و کوچک دیگر نیز مورد استفاده قرار می گیرد. برای مثال نرم افزار متن باز و رایگان Blender که یک نرم افزار سه بعدی کامل است و به طور کامل با پایتون نوشته شده است و نیز قابل گسترش با پایتون است.
توجه داشته باشید برای اینکه بتوانیم از دستورات مایا در اسکریپت های پایتون استفاده کنیم، باید کتابخانه ی maya.cmds را در ابتدای اسکریپت فراخوانی کنیم.
پس از فراخوانی کتابخانه ی maya.cmds در ابتدای اسکریپت، با استفاده از متدهایی که درون این کتابخانه قرار دارند (که شامل دستورات اصلی برنامه ی مایا است) می توان تمام کارهای متداول در محیط گرافیکی را با سرعت بیشتری انجام داد. البته اگر با صرف وقت لازم مهارت کافی در اسکریپت نویسی را بدست آوریم.
یک مثال با پایتون
برای مثال، اگر بخواهیم یک پیاده راه سنگی بسازیم ابتدا باید یک شیء اولیه داشته باشیم و با استفاده از چند ابزار و دستور ساده مانند جابجایی در مسیر مورد نظر، چرخش و تغییر اندازه بعد از duplicate کردن آن مسیر را بسازیم. انجام این چند کار ساده برای تعداد دفعات زیاد کاری خسته کننده است، بنابراین کارهای تکراری را بسیار ساده می توان با اسکریپت انجام داد.
درصورتی که تسلط کافی به برنامه نویسی ندارید، کافیست یکبار و برای یک مرحله با ابزارهای گرافیکی اینکار را انجام دهید و با استفاده از نکته ی گفته شده در ابتدای مقاله و پیدا کردن دستورهای MEL و مقدارهای درست برای هر دستور، از همان اسکریپت های MEL در یک حلقه ی تکرار برای انجام سریع تر کار و به تعداد دلخواه استفاده کنید. البته اینکار با استفاده از Python هم قابل انجام است.
قطعه کد زیر برای ساخت پیاده راه سنگی عکس بالا مورد استفاده قرار گرفته است. با اتصال نمونه سنگ اولیه به یک motion path و استفاده از افزایش مقدار currentTime در یک حلقه ی تکرار، با جابجا کردن و چرخش و تغییر اندازه ی نمونه duplicate شده پیاده راه سنگی ما در چند ثانیه ساخته می شود.
### PROCEDURAL PATH # USE MOTION PATH TO PLACE THE STONES ############################################# #import modules import maya.cmds as mc import random #variablesf myRandRotate = 0.0 myRandScale = 0.0 moveZ = 0.0 myStone = '' #for loop to loop through number of times to create stones for i in range(0, 96): mc.currentTime( i, edit=True ) myRandRotate = (random.uniform(320, 400)) myRandScale = (random.uniform(0.5, 1.25)) #set moveZ value according to odd/even evaluation if (i % 2 == 0): moveZ = (-1 * (random.uniform(2.5, 5.0))) else: moveZ = (1 * (random.uniform(2.5, 5.0))) mc.select('footStone_1', r=True) myStone = mc.duplicate() mc.scale((myRandScale), 1, (myRandScale)) #parent dup stone under locator, then move it along local Z axis mc.parent (myStone[0], 'locator1', relative=True) mc.move(0, 0, moveZ, relative=True, ls=True) mc.rotate(0, (myRandRotate), 0) #parent dup stone under the path_group node mc.parent (myStone[0], 'path_group', relative=False)
با ما همراه باشید تا قهرمان دنیای مایا و پایتون شوید.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.