طراحی لوگو API پیتون مورد استفاده قرار میگیرد. در هر دو نوع پلاگین - in را میتوانید با استفاده از پ لوگو مدیر in یا با استفاده از script (MEL یا پیتون) بارگذاری و تخلیه کنید. The Plug یک راه سریع و آسان را برای بارگیری و تخلیه هر دو پلاگین های C + + و پایتون انجام میدهد.
در پنجره مدیر طراحی لوگو
اگر یک plug - in loaded شود، اطلاعات درباره آیتم میتواند با کلیک روی دکمه "i" پیدا شود. برای توسعه دهندگان که میخواهند scripts برای بارگیری و تخلیه plug را بنویسند، دستورها MEL زیر در دسترس هستند:
نام loadPlugin طراحی لوگو
پارامتر نام پرونده را در فایل شناسایی میکند. برای مثال، فرمان:
ویژگی loadPlugin؛ بارهای پل و اگین به نام "مشخصه" دارند. متغیر محیطی PLUG _ به دنبال پروندهای به نام "feature.so" در لینوکس، "feature.mll" روی ویندوز، و "feature.mll" جستجو میشود.
" ib در Mac OS X. فرمان همچنین میتواند طراو برای بار کردن feature.py روی هر یک از سکوهای پشتیبانی شده ما استفاده شود.
Plug با فرمان MEL تخلیه میشوند: طرو
نام unloadPlugin طراحی لوگو
نام پارامتر نام plug - in است. فرمانهای معادل در پایتون در دسترس هستند.
طراحی لوگو
زمانی که یک طراحی لوگو زبان کامپیوتر جدید یاد میگیرید، اولین برنامهای که احتمالاً میبینید یک برنامه "Hello World" است. کد زیر مجموعه کد مورد نیاز برای "Hello World" به پنجره ویرایشگر متنی در مایا است.
و شامل " <مایا" و "MSimple" هم میشه اچ. اس. اس
و شامل " <مایا" و "M طراحی لوگو Global" هم میشه اچ. اس. اس
DeclareSimpleCommand (helloWorld، "Autodesk"، "۸.۵")؛
MSt طراحی لوگو atus helloWorld:: (const MArgList &)
{…}
MGlobal::displayInfo("Hello World\n"); return MS::kSuccess;
.....
نسخه API پایتون به شرح زیر است:
وارد کردن سیستم لگو وارد کردن maya.Open مایا به عنوان OpenMaya وارد کننده maya.Open به عنوان OpenMayaMPx
= 1.
# scriptedCommand کلاس فرمان (OpenMayaMPx.MPxC ommand): def _ init (خود):
OpenMayaMPx.MPxC ommand. _ _ ((خود، argList): چاپ "سلام جهان! "
# Creator def ():
بازگشت به xPtr (scriptedCommand)
# Initialize خط کدنوشته - initializePlugin (mobject):
mplugin = OpenMayaMPx.MFnP lugin (mobject) تلاش میکند:
mplugin.regi sterCommand (kPluginCmdName، cmdCreator) به جز:
sys.stderr.write( "Failed to register command: %s\n" % kPluginCmdName )
raise طراحی لوگو
# Uninitialize خط کدنوشته - uninitializePlugin (mobject):
mplugin = OpenMayaMPx.MFnP lugin (mobject) تلاش میکند:
mplugin.dere gisterCommand (kPluginCmdName) به جز:
sys.stderr.write( "Failed to unregister command: %s\n" % k طحی گو PluginCmdName )
rais
این مثال فرمان جدید "spHelloWorld" را تعریف میکند. ما از پیشوند "sp" استفاده میکنیم چون این یک plug - in است.
پس از جمعآوری و / یا در دسترس از طریق دوشاخه MAYA، دستور MEL زیر را تای طری گو پ کنید:
loadPlugin "helloWorld"؛ helloWorld؛ unloadPlugin؛ helloWorld
دو پلاگین ها یا پلاگین ها میتوانند با دستورها بالا بارگیری و تخلیه شوند.
همانطور که در مثال helloWorld نشانداده شدهاست، اجرای استاندارد helloWorld - in in آسا طراحی لوگو ن است. پلاگ هیدرات در زیر یک مثال پیچیده از یک plug - in Maya است.
# شامل <ریاضی. h
و شامل " <مایا" و "MSimple" هم میشه اچ. اس. اس
و شامل " <مایا" و "MFnNurbsCurve" هم میشه اچ. اس. اطاحیگو
و شامل " <مایا" و "MPointArray" هم میشه اچ. اس. اس
و شامل " <مایا" و "MDoubleArray" هم میشه اچ. اس. اس
# شامل <مایا یا MPoint. ساعت> # شامل <مایا یا MIOStream است. h طراحی لوگو
DeclareSimpleCommand (مارپیچ، "Autodesk"، "۸.۵")؛
مارپیچ MStatus:: (const MArgList & args) طراحی لوگو
{…}
MStatus stat؛ const unsigned = = ۳؛ / / Number of const const unsigned ncvs = ncvs؛ / / Number of spans const unsigned = spans - ۱؛ / / Number> knots دوتایی = ۴.۰؛ / / Helix شعاع دو برابر = ۰.۵؛ / / Helix.
بدون من،
/ / / / / / / / / / / / / / / / / / / / / طراحی لوگو
برای (i = ۰؛ i + +) اگر (P + +) = = حلقه args.asSt (i، & stat)
& & MS:: = = stat)
{…}
double = args.asDo uble (+ + i، & stat)؛ اگر (MS:: = = stat)
گام = tmp؛ طراحی لوگو
.....
در غیر این صورت اگر (MString) = = حلقه args.asSt (i، & stat)
& & MS:: = = stat)
{…}
double = args.asDo uble (+ + i، & stat)؛ اگر (MS:: = = stat)
شعاع = tmp؛
.....
MPointArray controlVertices؛
MDoubleArray knotSequences؛
طراحی لوگو
/ / / تنظیم cvs و knots برای فرم مارپیچ برای (i = ۰؛ i + +) controlVertices.appe (MPoint) = cos (()، گام * (دوبرابر) i، شعاع گناه ((دو برابر))؛
به ۰ / ۰ من <+ i +
/ / حالا منحنی را ایجاد کنید
منحنی curveFn؛ منحنی MObject = curveFn.crea (controlVertices، knotSequences، deg)
MFnNurbsC urve: kOpen، دروغ، غلط،
: kNullObj، &
if ( MS::kSuccess != stat ) cout << "Error creating curve.\n";
فوراً برگرد.
.....
این مثال نشان میدهد که طراحی لوگو چگونه از API برای تجزیه آرگومانهای دادهشده به یک فرمان استفاده کنیم، چگونه از کلاسهای آرایش استفاده کنیم، چگونه یک منحنی ایجاد کنیم و چگونه وضعیت بازگشت را بررسی کنیم. این عملیات وظایف استاندارد برای توسعه پلاگ است.
یک مثال مشابه با استفاده از API "مایا پیتون" به شرح زیر است:
وارد کردن maya.Open مایا به عنوان OpenMaya وارد کردن maya.Open به عنوان sys وارداتی OpenMayaMPx، ریاضی
= 1.
p = - p = - پیج " - پیج " = - z طراحی لوگو = - radius "
# scriptedCommand کلاس فرمان (OpenMayaMPx.MPxC ommand): def _ init (خود):
OpenMayaMPx.MPxC ommand. _ (خود)
def doit (خود،):
deg = ۳ ncvs = ۲۰
spans = ncvs - deg nknots = spans + ۲ * شعاع ۱ = ۴.۰ - ۰.۵ = ۰.۵
. بحث رو تموم کن
argData = OpenMaya.MArg پایگاهداده ((self.synt، args) اگر argData.isFl agSet (kPitchFlag):
گام = argData.flag ArgumentDouble (kPitchFlag، ۰) اگر argData.isFl agSet (kRadiusFlag):
شعاع = argData.flag ArgumentDouble (kRadiusFlag، ۰)
controlVertices = OpenMaya.MPoi ntArray () kn طراحی لوگو otSequences = OpenMaya.MDou bleArray ()
# تنظیم cvs و گرهها برای مدار رشتهای
<OrderedListItem>. </ OrderedListItem
برای i در محدوده (۰، ncvs): controlVertices.appe (nd)
OpenMaya.MPoi nt (شعاع *)،
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
برای i در محدوده (۰، nknots): knotSequences.appe (i)
# ۱ منحنی را ایجاد کنید
<OrderedListItem>. </ OrderedListItem
curveFn = OpenMaya.MFnN urbsCurve ()
nullObj = OpenMaya.MObj ()
سعی کنید: طراحی لوگو
curveFn.crea te (controlVertices)
، "knotSequences"، "deg"
OpenMaya.MFnNurbsCurve.kOpe n،
۰، ۰، nullObj) به جز:
sys.stderr.write( "Error creating curve.\n" ) raise
# Creator def (): طراحی لوگو
# ایجاد فرمان بازگشت فرمان (scriptedCommand)
# NAME syntaxCreator ():
ترکیب = مالیات OpenMaya.MSyn ()
تاخیر syntax.addF (kPitchFlag، kPitchLongFlag، ble)
تاخیر syntax.addF (kRadiusFlag، kRadiusLongFlag، OpenMaya.MSyntax.kDou ble)
# Initialize خط کدنوشته - initializePlugin (mobject):
mplugin = OpenMayaMPx.MFnP lugin (mobject، "Autodesk"، "۸.۵"، "Any"):
mplugin.regi sterCommand (kPluginCmdName، cmdCreator، syntaxCreator) به جز:
sys.stderr.write( "Failed to register command: %s\n" % kPluginCmdName )
raise
# Uninitialize خط کدنوشته - uninitializePlugin (mobject):
mplugin = OpenM طراحی لوگو ayaMPx.MFnP lugin (mobject) تلاش میکند:
mplugin.dere gisterCommand (kPluginCmdName) به جز:
sys.stderr.write( "Failed to unregister command: %s\n" % kPluginCmdName )
raise
خصوصیاتی که به عنوان پلاگین ها اجرا شدهاند، برای اکثر قسمتها، عملاً از ویژگیهای builtin Maya غیرقابلتشخیص هستند. شما میتوانید یک فرمان و یا یکگره را جستجو کنید تا ببینید آیا توسط یک plug - in اعمال شدهاست یا نه، اما معمولاً نه مایا و نه ویژگیهایی که توسط پلاگین ها اجرا میشوند، باید از تمایز آگاه باشند.
از طریق API های مایا، پلاگین ها میتوانند موارد زیر را اجرا کنند: انواع جدید اشیا، ابزار تعامل، مترجمان فایل داده، و دستور زبان برنامهنویسی جدید. برای فرمانهای جدید، توسعه دهندگان ممکن است انتخاب کنند که undo و دوباره، عملیات batch mode، و رابط کاربری را با همان ظاهر و احساسرابط کاربر مایا اجرا کنند. فرمانهای Plug را میتوان به طور آزادانه در scripts MEL با دستور built (Maya) و دیگر commands (plug - in commands) مورد استفاده قرار داد.
در مایا ۸.۵، پلاگین ها میتوانند موارد زیر را اجرا کنند:
مهم است که توجه د طراحی لوگو اشته باشید که تقریباً تمامی اطلاعات مورد نیاز از یک صحنه مایا از طریق API در دسترس است. ضرورتاً اگر دادهها در DG وجود داشته باشند، به احتمال زیاد راهی برای دستیابی به آن از طریق یک دستور یا مترجم فایل یا اتصال به آن با یکگره سفارشی وجود دارد. این مساله تعداد زیادی از فرصتها برای اصلاح مایا برای برآورده کردن نیازهای گردش کار خاص، یا برای دریافت دقیق اطلاعات از مایا که یک کاربرد خاص نیاز دارد، ایجاد میکند.
API ها در مایا اجازه میدهد تا به م طرا طراحی لوگو حی لوگو حتویات گراف صحنه، محتوای فهرست انتخاب، محتوای DG و غیره دسترسی داشته باشید.
دسترسی به وسیله ابزار: طراحی لوگو
API های مایا با انواع مختلفی از اشیا اجرا میشوند: شی مایا، مجموعههای تابع، اشیا گذرا و موضوعات پیشکار.
طراحی لوگو
اکثر توسعه API را میتوان از طریق اشیا و مجموعههای تابع انجام داد. این رویکرد برای رسیدگی به اشیا از نوع آزاد است. این امر باعث ایجاد سریع of اولیه بدون از دست دادن تایپ دهی قوی میشود هنگامی که این اطلاعات در کد تولید ضروری است.
اشیا مرجع (اشارهگر) برای موضوعات داخلی در مایا هستند. آنها ابزاری را برای ارجاع به انواع اصلی در مایا مانند گرههای DAG، گرههای وابستگی، هندسه و غیره فراهم میکنند. یک مجموعه تابع، گروهی از روشها است که روی یک شی عمل میکنند.
در زیر یک مثال سی + + خلاصه وجود دارد که تفاوت بین اشیا و مجموعههای تابع را نشان میدهد:
MObje طراحیn.chil d ()؛ اگر (obj.hasF n (MFn::))
{…} ط لوگو
دوربین MFnCamera (obj)؛ cam.setH orizontalFieldOfView (cam.hori zontalFieldOfView) / ۲.۰)؛
در این مثال، the یک مرجع طراحیی یک نود دوربین در صحنه است و MFnCamera یک مجموعه تابع است که بر روی یک نود دوربین عمل میکند.
همچنین ایجاد نمونههای جدید از اشیا با استفاده از یک مجموعه تابع امکان پذیر است. برای مثال، در C + +
دوربی لوگو
دوربین MObject = cam.crea (/ args …)؛ این یک دوربین جدید ایجاد می طراحی لو به صحنه مایا اضافه میکند.
اشیا و مجموعههای تابع به شما اجازه میدهند اشیا را ای جاد، پرس و جو کنید و اشیا را اصلاح کنید. زمانی که انواع دیگر اشیا در نسخههای بعدی معرفی میشوند، از طریق این مکانیزم در دسترس خواهند بود.