تور لحظه آخری
امروز : دوشنبه ، 28 آبان 1403    احادیث و روایات:  پیامبر اکرم (ص):بهترين شما كسى است كه براى زنان خود بهتر باشد و من بهترين شما براى زن خود هستم....
سرگرمی سبک زندگی سینما و تلویزیون فرهنگ و هنر پزشکی و سلامت اجتماع و خانواده تصویری دین و اندیشه ورزش اقتصادی سیاسی حوادث علم و فناوری سایتهای دانلود گوناگون شرکت ها

تبلیغات

تبلیغات متنی

صرافی ارکی چنج

صرافی rkchange

سایبان ماشین

دزدگیر منزل

تشریفات روناک

اجاره سند در شیراز

قیمت فنس

armanekasbokar

armanetejarat

صندوق تضمین

Future Innovate Tech

پی جو مشاغل برتر شیراز

لوله بازکنی تهران

آراد برندینگ

خرید یخچال خارجی

موسسه خیریه

واردات از چین

حمية السكري النوع الثاني

ناب مووی

دانلود فیلم

بانک کتاب

دریافت دیه موتورسیکلت از بیمه

طراحی سایت تهران سایت

irspeedy

درج اگهی ویژه

تعمیرات مک بوک

دانلود فیلم هندی

قیمت فرش

درب فریم لس

زانوبند زاپیامکس

روغن بهران بردبار ۳۲۰

قیمت سرور اچ پی

خرید بلیط هواپیما

بلیط اتوبوس پایانه

قیمت سرور dl380 g10

تعمیرات پکیج کرج

لیست قیمت گوشی شیائومی

خرید فالوور

بهترین وکیل کرج

بهترین وکیل تهران

خرید اکانت تریدینگ ویو

خرید از چین

خرید از چین

تجهیزات کافی شاپ

نگهداری از سالمند شبانه روزی در منزل

بی متال زیمنس

ساختمان پزشکان

ویزای چک

محصولات فوراور

خرید سرور اچ پی ماهان شبکه

دوربین سیمکارتی چرخشی

همکاری آی نو و گزینه دو

کاشت ابرو طبیعی و‌ سریع

الک آزمایشگاهی

الک آزمایشگاهی

خرید سرور مجازی

قیمت بالابر هیدرولیکی

قیمت بالابر هیدرولیکی

قیمت بالابر هیدرولیکی

لوله و اتصالات آذین

قرص گلوریا

نمایندگی دوو در کرج

 






آمار وبسایت

 تعداد کل بازدیدها : 1830630103




هواشناسی

نرخ طلا سکه و  ارز

قیمت خودرو

فال حافظ

تعبیر خواب

فال انبیاء

متن قرآن



اضافه به علاقمنديها ارسال اين مطلب به دوستان آرشيو تمام مطالب
archive  refresh

آموزش MaxScript -


واضح آرشیو وب فارسی:سایت ریسک: آموزش MaxScript s_mostafa_h 09 مرداد 1386, 23:25با سلام من داخل فروم گشتم ، چیزی در باره آموزش مکس اسکریپت ندیدم ، از این رو با توجه اهمیت آن به تدریج این مبحث را که از CGaCADEMY ترجمه کردم در اینجا قرار می دهم . امیدوارم که بکار آید . ---------------------------------------------------------------------------------- آرایه : آرایه مجموعه ای است از چند عنصر . خود عناصر می تواند یک آرایه باشد . عناصر آرایه داخل #() قرار می گیرند . theArray = #("Ali" , 2.03 , pi ,$Teapot01,#(1,8) ) همانطوریکه می بینید ، عناصر آرایه از نام ali عدد 2.03 و عدد پی و شی قوری و یک آرایه دیگر تشکیل شده است . پس این آرایه که نام آنرا theArray نامیدیم ، دارای 5 عنصر می باشد که مثلا عنصر سوم آن عدد پی یا 3.14 است . theArray[3] خروجی به صورت ذیل است : 3.14 یا عنصر دوم آرایه از عنصر پنجم آرایه بالا برابر 8 می باشد . زیرا عنصر پنجم این آرایه #(1,8) می باشد . theArray[5][2] 8 عناصر آرایه می تواند حاصل جمع چند تا عدد باشد و یا توان یک عدد . Myarray=#("myname", 2 , 2+2^5) خروجی این مقدار برابر : #("myname", 2, 34) در برنامه نویسی با اسکریپت و در جمع و ضرب و ... اعداد ، همیشه ضرب و تقسیم بر جمع و تفریق مقدم است . در نتیجه ابتدا عدد 2 به توان 5 رسیده و سپس با عدد 2 جمع می شود و حاصل عدد 34 بدست می آید . رشته ها مانند اسامی در داخل یک آرایه باید داخل کوتیشن " " قرار بگیرد . مکس اسکریپت در نام گذاری آرایه ها نسبت به حروف بزرگ و کوچک حساس نیست مثلا : theArray = ThearraY -چند نکته : در آرایه نویسی چند تابع وجود دارد به نامهای append = اضافه کردن عنصر به انتهای آرایه FindItem برای پیدا کردن محتوای عنصر آرایه و بالاخره deleteItem برای حذف عنصر آرایه بکار می رود . مثال : myArray=#("Ali",5,pi,#("Hassan",5.5),9.9,false) #("Ali", 5, 3.14159, #("Hassan", 5.5), 9.9, false) append myArray 20 #("Ali", 5, 3.14159, #("Hassan", 5.5), 9.9, false, 20) findItem myArray 9.9 5 deleteItem myArray 5 #("Ali", 5, 3.14159, #("Hassan", 5.5), false, 20) ------------------------------------------------------------------------------ با زدن دکمه F11 به محیط مکس اسکریپت وارد می شویم ادامه دارد ..... :) hamed-ddd 10 مرداد 1386, 08:31دستت درد نکنه بزن تو مقالات آموزشی منتقلش کردم IRANFOX COMPANY 10 مرداد 1386, 11:03ممون دوست عزیز از این نوع مطلب زیاد تو سایت پیدا نمیشد s_mostafa_h 10 مرداد 1386, 17:36خواهش می کنم و اما ادامه مطلب : -------------------------------- مانند بیشتر برنامه های شی گرا ، مکس اسکریپت دارای ساختار های تکرار است که در این مورد باید به حلقه ها در زبان مکس اسکریپت اشاره بکنیم : یکی از حلقه های تکرار در این زبان for ..... in ..... do می باشد : For indexname in ArrayName do print indexname ArrayName = نام آرایه ،،،، indexname = نام ایندکس که در اینجا از اول حرف index استفاده شده است . myarray=#(5,9,"ali",120,125.14) #(5, 9, "ali", 120, 125.14) for i in myarray do print i 5 9 "ali" 120 125.14 OK می توانیم متغیری تعریف کنیم و به آن مقدار اولیه داده و سر انجام این مقدار را بعد از بکار گیری حلقه در انتها محاسبه کنیم : مثال : myArray=#(1,254,985,3) (1, 254, 985, 3)# mysum=5 5 for i in myArray do mysum=mysum+i OK mysum 1248 می توانیم در جریان تعریف حلقه شرط برای آن تعریف نماییم : مثال : for i in myarray where i>100 do print i 254 985 OK همانطوریکه در این جا ملاحظه کردید ، بعد از in از شرط حلقه Where i>100 استفاده کردیم . بنابراین می توانیم در جریان حلقه ، از گزینه های شرطی هم استفاده کرد . نکته 1 : دراکثر زبان ها برنامه نویسی علایمی وجود دارد که جهت توضیح کد نوشته شده بکار می رود . این علایم نمادی است که به کمپایلر یا مترجم می گوید که این خط از کد را ندیده بگیرد . در مکس اسکریپت از علامت -- برای comment یا توضیحات استفاده می شود : مثال : 1+2+3 -- this is a example for showing the comment in this language 6 نکته 2 : می توانیم کد برای برنامه را در یک خط بنویسیم ، مشروط بر آنکه بعد از ان از ; یا سمی کالمن یا semicolumn استفاده نماییم : مثال : 1+2 ; 25+36 ; 22+3 3 61 25 نکته 3 : برای اجرای هر کد درانتها از کلید enter استفاده نمایید . توجه : نوشته آبی رنگ در کد برنامه بیانگر این است که کامپایلر برنامه را درست ترجمه کرده است ( پاسخ کد بعد از هر بار enter زدن ادامه دارد .....:) pythoN 10 مرداد 1386, 17:58کارات فوق العادس و یه کار جدید . چون کسی اینکارو انجام نمیده . حتما ادامه بده s_mostafa_h 10 مرداد 1386, 18:07امیدوارم که بدرد بخورد . بگذریم ..... ------ بجای do print میتوانیم از collect استفاده کنیم در نتیجه ، خروجی به صورت یک آرایه در یک سطر یا ردیف نوشته می شود . برای طول حلقه می توانیم یک متغییر بدان نسبت دهیم . در نتیجه کافی است نام متغییر در برنامه ذکر گردد و کد اجرا می شود . مثال : myArray=#(1,254,985,3) #(1, 254, 985, 3) for I in myarray where i>100 collect i #(254, 985) filteredArray=for I in myarray where i>100 collect i #(254, 985) filteredArray #(254, 985) هدف تعریف متغییر برای طول کد بالا ، ساده کردن کار است و در برنامه بجای استفاده از کل کد که ممکن است مجددا قابل استفاده باشد ، کافی است نام همان متغییر را بکار ببریم . در اینجا قدری در باره متغییر ها صحبت می کنیم : تعریف متغییر در زبان مکس اسکریپت : بقیه مطالب در ساعت 30/9 شب بعد از خبر سراسری ، فعلا باید بریم نون بخریم ....:lol: s_mostafa_h 10 مرداد 1386, 21:20در اینجا قدری در باره متغییر ها صحبت می کنیم : تعریف متغییر در زبان مکس اسکریپت : قبل ازاین که این مبحث را شروع کنیم ، لازم است راجع طریقه کد نویسی نکاتی را متذکر شویم . فرض کنیم مقدار ذیل را در کد بنویسیم و حاصل آنرا بدست آوریم : b+c -- No ""+"" function for undefined همانطوریکه ملاحظه می شود ، برای کمپایلر b و c ناشناحته است ، در نتیجه نمی تواند آنها را با عملگر + جمع بزند . برای این کار باید b و c به اصطلاح initialize یا در ابتدا مقدار دهی شوند ، در غیر این صورت b و c تعریف نشده باقی می مانند . توضیح : عملگر ها یا operator ها نماد هایی هستند که اعمال خاصی را انجام می دهند . مانند ضرب ، تقسیم ، جمع و منها و عملگرهای منطقی و ... . بدیهی است که عملگر ها بر روی یک یا دو مقدار عمل می کنند . این مقادیر را عملوند یا Operand می نامند . در مثال بالا b و c عملوند های عملگر + می باشند . 12+252+9*25+54 543 این کد را به صورت های مختلف می نویسیم : 12+252+ 9*25+54 543 برای اینکه یک عملیات از کد را مانند فوق در چند خط بنویسیم یا باید انتهای کد به عملگر ختم شود و یا از BackSlash یا استفاده می کنیم . 12+252 +9*25+54 543 تذکر : هیچگاه در ابتدای سطر از عملگر نباید استفاده کرد مگر به روش بالا . همانطوریکه گفتیم ، کلمات مثل Ali ، a ، hassan و غیره در ابتدا باید تعریف شوند ، در غیر اینصئرت چنانچه بخواهیم به عنوان یک رشته کراکتر به کمپایلر بشناسانیم ، باید آنها را داخل کوتیشن یا " " قرار دهیم : "Ali"+"Hassan" "AliHassan" یا "a"+"b" "ab" اگر به تنهایی بنویسیم : A undefined خروجی یک عبارت تعریف نشده است undefined . در مکس اسکریپت متغییر چنین تعریف می شود : variable_name = variable_value مقدار متغییر = نام متغییر نامگذاری متغییر از قانون نام گذاری متغییر ها ، فولدر ها و ... تبعیت می کند . و مانند زبان C++ , CS ، نام ابتدای متغییر نمی تواند با عدد شروع شود ، اما میتوان از زیر خط یا underscore در ابتدای نام متغییر استفاده کرد : 2p=21 -- Compile error: Bad number or time syntax -- In line: 2p= myvariable=12 12 دراینجا 2p نمی تواند به عنوان نام متغییر باشد چون ابتدای نام با عدد شروع شده است . مقدار متغییر بستگی به نوع کار ما می تواند یک عبارت منطقی ، رشته و ... باشد . mytest="I want to test this text in MaxScript " "I want to test this text in MaxScript " نکته مهم : همانطوریکه می بینید مقدار mytest برابر I want to test this text in MaxScript است . تا زمانیکه این مقدار را در طول کد نویسی تغییر ندادیم ، این مقدار همان است که در ابتدا initialize کردیم یا به آن مقدار اولیه دادیم . mytest="I want to test this text in MaxScript " "I want to test this text in MaxScript " anothertest="I test this senteces for second" "I test this senteces for second" mytest "I want to test this text in MaxScript " تا فردا ....:D s_mostafa_h 11 مرداد 1386, 22:10با سلام مجدد ... و اما ادامه مطلب ... می توانیم متغییر ها را که از یک جنس اند با هم ترکیب کنیم : one="MaxScript "; Two = " is fun !" "MaxScript " " is fun !" one + two "MaxScript is fun !" نکته : مکس اسکریپت می تواند اغلب توابع ریاضی مانند sin , cos , tan , cotan , log و ... را محاسبه نماید . tan 25 0.466308 log 23 3.13549 اما بین این توابع دو تابع پرکاربرد در مکس وجود دارد به نام random و incrementing . تابع random به طور تصادفی بین دو مقدار از مقادیر متغییر را نتخاب می کند : random 5 56 28 می توانیم اعداد را به یک متغییر نسبت دهیم : x=5;y=100 5 100 random x y 82 در این جا یادآوری کنیم که خاصیت مهم تابع random در این است که هر بار مکس اسکریپت اجرا می گردد ، مقدار random هم به طور تصادفی تغییر می کند ( بعد از اجرای مجدد نرم افزار ) . توابع افزایشی و کاهشی ماندد زبان C ++ یا CS ، در این جا هم می توان از خاصیت افزایشی و کاهشی در محاسبات استفاده نمود : بجای اینکه بنویسیم x=x+1 می نویسیم X+=1 برای سایر عملگر ها هم می نویسیم : y * = 5 یا y=y*5 دراین جا مقدار y که مقدار دهی اولیه شده بود ، مجددا با عدد 5 ضرب شده و در نهایت مقادر حاصل در داخل مقدار y قرار داده می شود : -- i wanto to initialize the value of y y=5; 5 y+=8 13 ایجاد شی در نما با مکس اسکریپت : در اینجا می توان بدون استفاده از ابزار گرافیکی ، تنها با نوشتن کد های ساده ، به تولید اشیاد بپردازیم : مثلا برای ایجاد یک box کافی است بنویسیم : :)که با زدن Enter کد ذیل تولید می شود : $Box:Box01 @ [0.000000,0.000000,0.000000] در واقع وقتی می نویسیم box() در واقع هیچ پارامتری را مبنی بر مکان دقیق شی و اندازه شی ارسال نکرده ایم در نتیجه سیستم به خودکار مقدار پیش فرض را برای تولید شی درست در مرکز مختصات که همانا 0 , 0 , 0 باشد ، ایجاد می کند . ضمنا می توانیم برای تولید شی یک متغییر هم بدان نسبت دهیم : mybox=box() $Box:Box01 @ [0.000000,0.000000,0.000000] s_mostafa_h 12 مرداد 1386, 09:15در واقع وقتی می نویسیم box() در واقع هیچ پارامتری را مبنی بر مکان دقیق شی و اندازه شی ارسال نکرده ایم ، یعنی داخل پرانتز هیچ آگومانی را انتقال ندادیم ، در نتیجه سیستم به خودکار مقدار پیش فرض را برای تولید شی درست در مرکز مختصات که همانا 0 , 0 , 0 باشد ، ایجاد می کند . ضمنا می توانیم برای تولید شی یک متغییر هم بدان نسبت دهیم : mybox=box() $Box:Box01 @ [0.000000,0.000000,0.000000] mybox متغیر تولید شیء box است . حال توضیحی در باره شی تولید شده : $ در ابتدای شی Box ، در واقع یک مسیری برای تولید یک شی و شبیه مسیر فایل در ویندوز است مانند c:3dsmaxexamplesfile.max ، منتها این مسیر نام یک نوع سلسله مراتبی می باشد که به تولید شی ء ختم میشود . در واقع می خواهیم بگوییم که ما داریم یک شی ای را از نوع box ایجاد می کنیم . Box01 نام شی تولید شده می باشد . مقادیر داخل کروشه هم مختصات سه بعدی شی را در نمای perspective مشخص می کند . نکته : بسته یه نوع شی ای که داریم تولید می کنیم ، با تعریف متغیر برای آن شی ، به راحتی می توانیم به خواص شی دسترسی داشته و آنرا تغییر بدهیم . در واقع استفاده از متغییر برای مدیریت بر خواص شی می باشد . خوب دراینجا می خواهیم نام شی را تغییر بدهیم . بدیهی است با داشتن نام متغییر برای شی به راحتی این کار امکان پذیر می باشد : نکته بسیار مهم : برای دسترسی به خواص یا property شی باید از " . " یا نقطه استفاده کنیم . چون نام شی یک رشته است بنابراین باید نام شی هم در داخل کوتیشن قرار بگیرد . mybox.name="horse" "horse" mybox $Box:horse @ [0.000000,0.000000,0.000000] می دانیم بعضی از اشیا داری طول (length )، عرض (width )، ارتفاع ( height ) هستند ، مانند خود همین box . همچنین دارای موقعیت مکانی ( position ) و چرخش و رنگ و ... می باشند . برای هر یک مثالی در این باره می زنیم : برای تغییر موقیعیت مکانی از کلمه از خاصیت pos استفاده می شود . mybox.pos=[1,2,3] [1,2,3] mybox $Box:horse @ [1.000000,2.000000,3.000000] برای تغییر رنگ از خاصیت wirecolor استفاده می شود . ضمنا توجه داشته که محدوده رنگ RGB بین صفر تا 255 می باشد . mybox.wirecolor=yellow (color 255 255 0) mybox.wirecolor= (color 244 231 12) (color 244 231 12 Box داری طول ، عرض و ارتفاع می باشد . برای تغییر آنها از خاصیت Scale استفاده می شود . mybox.scale=[30 , 25 , 120 ] [30,25,120] mybox.scale=[30 , 25 , 10 ] [30,25,10] mybox.scale=[1 , 1 , 23 ] [1,1,23] s_mostafa_h 12 مرداد 1386, 12:42و اما ادامه ماجرا ........ Box داری طول ، عرض و ارتفاع می باشد . برای تغییر آنها از خاصیت Scale استفاده می شود . mybox.scale=[30 , 25 , 120 ] [30,25,120] mybox.scale=[30 , 25 , 10 ] [30,25,10] mybox.scale=[1 , 1 , 23 ] [1,1,23] اگر به نمای پرسپکتیو بروید ، از نظر ظاهری شکل جسم تغییر کرده ولی تغییری را در مقدار height و width , length در پنل مودیفای ایجاد نمی کند . در صورتیکه می توان با خاصیت height مستقیما این پارامتر را در پنل مودیفای با این کد تغییر داد : mybox.height = 40 دلیل این امر اینست که پارامتر های height و ... مربوط به ایجاد شی یا create ان می باشد در صورتیکه خاصیت Scale مربوط به تولید یک شی یا create آن نمی باشد . به این خاطر مقادیر height , width و length را تغییر نمی دهد . در عین حال چنانچه بخواهیم مقادیر پارامتر های مزبور را نگه داشته باشیم ، باید از خاصیت scale برای تغییر اندازه شی استفاده کنیم . با این حال هر دو متد از نظر ظاهری یر شی یکسان بوده و اندازه شی را تغییر می دهند . نشان دادن کلاس ها و پارامترها و خواص شی با استفاده از توابع تابعی وجود دارد به نام showclass که پارامترهای شی را نشان میدهد : showclass "box" Box : GeometryClass {10,0} OK اگرا می خواهیم به تمام پارامترهای شی دسترسی داشته باشیم از کرکتر عمومی * استفاده می کنیم : showclass "box.*" Box : GeometryClass {10,0} .height : float .length : float .lengthsegs : integer .width : float .widthsegs : integer .mapcoords : boolean .heightsegs : integer OK و اگر بخواهیم پارامتر های گیزمو را هم نشان دهد به صورت ذیل عمل می کنیم : showclass "box*.*" Box : GeometryClass {10,0} .height : float .length : float .lengthsegs : integer .width : float .widthsegs : integer .mapcoords : boolean .heightsegs : integer BoxGizmo : helper {3bc31904,67d 74ec9} .height : float .length : float .width : float .seed : integer OK از تابع showproperties برای نشان دادن خواص اشیا بکار می رود : showproperties mybox .height : float .length : float .lengthsegs : integer .width : float .widthsegs : integer .mapcoords : boolean .heightsegs : integer .realWorldMapSize : boolean false حرکت دادن و موقعیت شی : برای حرکت دادن شی از خاصیت move استفاده می شود . توجه به ان نکته بسیار مهم است که از خاصیت move استفاده می کنید معنی اش این نیست که شی را در یک موقعیت مکانی انتقال دادید بلکه معنی آن اینس که شی را به اندازه چند واحد از نقطه قبلی تغییر مکان دادید یا آنرا به اصطلا هل دادید . این با خاصی مکانی pos کاملا فرق دارد . مثال می زنیم : وقتی که شما برای سه بار تایپ می کنید : mybox.pos=[20,2,2] [20,2,2] mybox.pos=[20,2,2] [20,2,2] mybox.pos=[20,2,2] [20,2,2] در این حالت موقعیت مکانی شی تنها در مرحله اول ( اگر نقطه اولی با موقعیت مکانی اولیه تفاوت داشت مثلا موقعیت مکانی اولیه 0 و 0 و 0 بود ) تغییر می کند و در بقیه مراحل چون مختصات نقطه تغییر نکرد ، شی در همان نطقه اول که مقدار آن 20,2,2 بود باقی می ماند . ولی در مورد move چنین نخواهد بود . شی در هر مرحله نسبت به مرحله قبلی به اندازه مقدار داده شده تغییر مکان می دهد . مثلا 20 واحد در جهت مختصات x و مجددا 20 واحد در جهت x و ... این طبیعی است چون شی را تغییر مکان دادیم و نگفتیم موقعیت مکانی شی دارای این مختصات است . move mybox [20,2,2] OK move mybox [20,2,2] OK move mybox [20,2,2] OK همین قضیه برای scale هم مانند pos صدق می کند . برای چرخش از خاصیت rotation استفاده می کنیم . دراین حالت ابتدا یک متغییر برای چرخش زاویه تنعریف می کنیم : تعریف آن بدین صورت است : eulerangles x y z= نام متغییر برای چرخش و دراینجا : myrotation = eulerangles 20 2 3 (eulerAngles 20 2 3) rotate mybox myrotation OK در ایجا هم مانند move با هر بار اجرای دستور بالا شی مجددا به میزان 3 2 20 در جهت محور های داده شده x y z می چرخد . برای تغییر سایر پارامتر های box مانند تغییر سگمنت های آن می توانیم بنویسیم : mybox.lengthsegs = 10 mybox.widthsegs = 10 mybox.heightsegs = 10 mybox.mapCoords = true اضافه کردن مودیفایر : با دستور addmodifier به نام متغییر شی می توانیم به راحتی یک مودیفایر به آن اضافه کنیم : addModifier mybox (twist angle:50 twist axis:0) OK برای محور x مقدار 0 و برای محور y مقدار 1 و برای محور z مقدار 2 در نظر گرفته می شود . یک مثال برای انیمشن کردن box : برای انیمیشن کردن box به روش ذیل عمل می کنیم : animate on ( at time 0 (mybox.pos = [-100, 0, 0]; mybox.scale = [1, 1, 0.25]) at time 100 (mybox.pos = [100, 0, 0]; mybox.scale = [1, 1, 3]) ) [1,1,3] همانطوریکه می بینید در زمان صفر و 100 موقیعیت مکانی متفاوتی برای شی تعریف شده است . همچنین از نظر اندازه . انیمیشن را یک بار اجرا کنید . میبینید که شی هم حرکت کرده و هم تغییر اندازه می دهد . مروری دیگر بر حلقه ها : در اینجا می خواهیم کپی کردن box را درون یک حلقه بررسی کنیم . دراینجا مقدار ایندکس مقدار دهی اولیه شده و آنرا تا عدد 5 ارتقا داده سپس آن را درون یک بلاک قرار دادیم . بدیهی است این حلقه 5 بار وضعیت داخل بلاک را بررسی می کند و در هر بار یک کپی از box قبلی گرفته و آنرا در موقیت بعدی قرار می دهد . for i=1 to 5 do ( box_copy=copy mybox box_copy.pos=[i*50,0,0] ) OK توجه داشته موقعیت قرار داده شده box های کپی شده به صورت ذیل است : I=1 --> [50,0,0] I=2 --> [100,0,0] … انیمیشن را مجددا اجرا کنید . ادامه دارد ...:D s_mostafa_h 13 مرداد 1386, 00:23عملگر های منطقی : شامل : == یا مساوی ، =! برابر نیست ، > کوچکتر ، >= کوچکتر یا مساوی و < بزرگتر و در نهایت =< بزگتر یا مساوی . توجه در هر حال مقدار خروجی true یا false است . توجه داشته عملگر = یک عملگر انتصاب و عملگر == یک عملگر منطق یا Bolean است . a=2 2 a>3 false درابتدا a مقدار دهی شده و در نهایت این مقدار با عدد 3 مقایسه شده است . مثال دیگر : if a>4 do "yes" "yes" if a>4 then "yes" else "no" "yes" تذکر : چنانچه بخواهیم از جمله else استفاده کنیم باید از then بعد از if استفاده نماییم در غیر اینصورت با خطا جمله شرطی مواجهه می شویم . عملگر های and و or و not : ترکیب چند جمله با and زمانی درست است که همه عبارت درست باشد . ترکیب چند جمله با or زمانی درست نیست که همه عبارت نادرست باشد . Not در واقع تمام عبارت درست را نادرست و و عبارات نادرست را درست نشان می دهد . n=true true not n false ترکیب با and : s=10 10 if (s>= 5 and s<=10) then "print u are right " else " goodbye" "print u are right " ادامه دارد ..... :) if (s>5 and s<10) then "print u are right " else " goodbye" " goodbye" جمله شرطی اول درست است به این دلیل که قسمت اول هر دو عبارت با ترکیب and درست است . اما در عبارت دوم چون s<10 یک عبارت نادرست است ، در نتیجه قسمت اول عبارت که با and ترکیب شده است نادرست و در نتیجه قسمت دوم چاپ می شود . ترکیب با or : if (s>5 or s<10) then "print u are right " else " goodbye" "print u are right " if (s<5 or s>10) then "print u are right " else " goodbye" " goodbye" جمله شرطی اول درست است به این دلیل که حداقل یکی از دو عبارت قسمت اول درست است درنتیجه قسمت اول چاپ می شود . اما در عبارت دوم چون s>10 و s<5 هر دو یک عبارت نادرست هستند ، در نتیجه قسمت اول عبارت که با or ترکیب شده است نادرست و در نتیجه قسمت دوم چاپ می شود . استفاده از not : if not(s<5 or s>10) then "print u are right " else " goodbye" "print u are right " عبارت دوم چون s>10 و s<5 هر دو یک عبارت نادرست هستند ، در نتیجه قسمت اول عبارت که با or ترکیب شده است نادرست و نقیض آن ( not)درست و در نتیجه قسمت اول چاپ می شود . --------------------------------- شناسایی اشیا ء یا objects اشیا داخل صحنه با عبارت objects شناسایی می شوند : فرض کنیم انواع اشیاء در داخل صحنه داشته باشیم از جمله box , torus , star , … و غیره . با تعریف یک متغییر از objects می توانیم به تمام اشیاء داخل صحنه دسترسی داشته باشیم : myobject=objects $objects print myobject $Box:Box01 @ [-2.848055,44.645119,0.000000] $Sphere:Sphere01 @ [56.919224,6.659113,0.000000] $Omni_Light:Omni01 @ [-58.615765,87.341423,-4.035535] $Omni_Light:Omni02 @ [85.713806,38.082672,-58.857872] $Omni_Light:Omni03 @ [5.573021,-26.796534,44.695435] $Star:Star01 @ [-37.091457,-63.684269,0.000000] $NGon:NGon01 @ [-33.312782,8.197544,0.000000] $Point_Helper:Point01 @ [78.336555,-30.129704,0.000000] $Dummy:Dummy01 @ [33.275238,162.508301,0.000000] $Cone:Cone01 @ [-40.788826,-31.512627,3.447527] OK همانطوریکه که می بینید ، تمام اشیاء داخل صحنه لیست شده اند . با این دستور هم می توانیم به اشیاء داخل صحنه دسترسی داشته باشیم : For myobject in objects do print myobject برای دسترسی به geometry ها باید دستور geometry را صادر کنیم : for W in geometry do print W $Box:Box01 @ [-2.848055,44.645119,0.000000] $Sphere:Sphere01 @ [56.919224,6.659113,0.000000] $Cone:Cone01 @ [-40.788826,-31.512627,3.447527] OK ابتدا متغییری به نام W برای geometry تعریف و سپس دستور لیست کردن صادر شده است . همین طور هست برای helpers ها و ... . for W in helpers do print W $Point_Helper:Point01 @ [78.336555,-30.129704,0.000000] $Dummy:Dummy01 @ [33.275238,162.508301,0.000000] OK هرتغییر در صحنه ، مستقیما در لیست کردن اشیا در مکس اسکریپت تاثیر می گذارد . به عنوان مثال چناچه چند شی را انتخاب کرده باشیم و بخواهیم این اشیا انتخاب شده را به ما نشان دهد می توانیم بنویسیم : s= selection $selection for rec in s do print rec $Box:Box01 @ [-2.848055,44.645119,0.000000] $Sphere:Sphere01 @ [56.919224,6.659113,0.000000] OK ابتدا متغییری برای selection به نام s تعریف و ... for s in selection do print s $Box:Box01 @ [-2.848055,44.645119,0.000000] $Sphere:Sphere01 @ [56.919224,6.659113,0.000000] OK چنانچه بخواهیم تعدا اشیای انتخابی نشان دهیم از خاصیت count استفاده می شود : selection.count 2 چنانچه بخواهیم تعدادی از اشیاء داخل صحنه را انتخاب کنیم می توانیم بنویسیم : select $box01 OK دراینجا فقط box با نام box01 را انتخاب می کند . select $box01 OK select $box02 -- No ""select"" function for undefined select $box* OK select geometry OK خط سوم می گوید که چنین شی ای را نداریم و خط بعدی تمام box های داخل صحنه و در نهایت آخرین خط تمام geometry های داخل صحنه را انتخاب می کند . shirani 13 مرداد 1386, 09:00من چون میخوام تو این مبحث مشترک بشم این پست می دم (Sorry ) s_mostafa_h 13 مرداد 1386, 14:29با سلام ضمن تشکر ، از اینکه قصد دارید دراین مبحث و در آموزش آن همکاری داشته باشید . از آن جا که برای این کار از قبل برنامه ریزی کرده ام ، فقط یک خواهش دارم که چنانچه بخواهید همکاری را در این بخش ادامه دهید بر اساس رویه و مباحث ذیل به ترتیب این بخش ها که در ذیل خواهد آمد ، این مبحث را با همکاری شما و هر دوست دیگری که بخواهد در این بخش همکاری نماید به پیش ببریم . بخش مکس اسکریپت به خصوص مباحث اولیه آن بسیار با اهمیت است . حال بخش های آن : ... رفرنس : CG Acadmy filtering object sets working with general Node properties Filtering By Mesh Properties Mass-Changing Properties Randomizing Properties , Renaming Nodes Attack of The Instanced Clone Working With Modifier Working With Animation Key Working With Material Saving Objects Vector : The Basic 3 Dimensional Vector Unit Vector Trigonometry and Vector Operations Barycentric Coordinate Ray Intersection The Matrix: Expalined Vectors and Matrix 3 Values Sub-Object Transformation Camera and ... A basic Rendering Pipeline Implementing Textures Phong and Blinn Highlights RayTrace .... این بخش آموزشی باید با حوصله نوشته شود و شاید جهت تکمیل این بخش حداقل 2 ماه و پشت سرهم زمان نیاز باشد . به امید موفقیت :) hamed-ddd 31 مرداد 1386, 09:51سلام آقا مصطفی من یه مشکلی پیدا کردم من میخوام یه ابجکت اطلاعات psition در یک محور خاص رو از یه ابجکت دیگه با یه فرمول بگیره مثلا ابجکت a مقدار ارتفاع در محور z از ابجکت b بگیره با این شرایط L به توان 2 منهای Z به توان 2 در اینجا L یک عدد ثابت و Zارتفاع ابجکت B همون قضیه فیثاغورث) Mostafa_Amol 10 شهريور 1386, 23:00سلام آقا خیلی آموزشتون باحال و تک بود ... ولی چرا ادامه نمی دید؟ یه مشکلی هم داشتم ؛ نمی دونم چرا من بعضی وقتها یه دستور ور تایپ می کنم هیچ تاثیری در جسم نداره و وقتی که همون دستور رو از نوشته های شما کپی می کنم و در اونجا وارد می کنم جواب می ده و اگه باز خودم اون دستور رو وارد کنم جواب می ده و کار می کنه ... می دونید دلیلش چیه ؟ ( مطمئنم دستور رو درست وارد می کنم ) max_s63 22 شهريور 1386, 20:26آموزش فوق العاده ای بود ، امیدوارم که ادامه داشته باشه. میشه مرجعی برای Max Script معرفی کنید. در ضمن واقعا حیفه اگه این پست رها بشه. لطفا ادامه بدید. :)




این صفحه را در گوگل محبوب کنید

[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 412]

bt

اضافه شدن مطلب/حذف مطلب







-


گوناگون

پربازدیدترینها
طراحی وب>


صفحه اول | تمام مطالب | RSS | ارتباط با ما
1390© تمامی حقوق این سایت متعلق به سایت واضح می باشد.
این سایت در ستاد ساماندهی وزارت فرهنگ و ارشاد اسلامی ثبت شده است و پیرو قوانین جمهوری اسلامی ایران می باشد. لطفا در صورت برخورد با مطالب و صفحات خلاف قوانین در سایت آن را به ما اطلاع دهید
پایگاه خبری واضح کاری از شرکت طراحی سایت اینتن