ساخت چرخ ماشین

rainbmaya

Active Member
کسی راه حلی برای چرخ ماشین نداره که تو هر زاویه ای که بچرخونیمش مشکلی براش بوجود نیاد. با set driven key که اینکارو میکنم فقط تو جهتی که کلید تعیین کردم قابل انجامه و زمانی که تو یه محور دیگه میچرخونمش مشکل پیدا میکنه
مثلا Rotate X Driven و Translate Z Driver تو این جهت یعنی Z مشکلی نداره ولی به محض رفتن تو Translate X از کار می افته و دیگه کار نمیکنه. از Expression هم که استفاده میکنم فقط تو یه جهت جواب میده. خیلی ضروریه لطفا از هر روشی میتونید کمک کنید.
( Maya 2012 SAP x64 ) نود ادیتورهم دارم ولی از اون هم نشد.
 

maxscript

Well-Known Member
شما اول محیط چرخ رو داخل Expression محاسبه کن یعنی R رو بدست بیار بعد توی یه متغیر قرار بده بعد برای هر زاویه ای که خواستی می تونی به ارگومانی که تعریف کردی داخل Expression نسبت بدی
 

rainbmaya

Active Member
شما اول محیط چرخ رو داخل Expression محاسبه کن یعنی R رو بدست بیار بعد توی یه متغیر قرار بده بعد برای هر زاویه ای که خواستی می تونی به ارگومانی که تعریف کردی داخل Expression نسبت بدی
تشکر از جواب خوبت. من از این استفاده کردم جواب نداد.
تو MEL و برنامه نویسی تازه کار

object1rotateZ=-object2.translateX*(2*3.14)*360;
object1.rotateZ=-object2.translateZ*(2*3.14)*360;


object1 آبجکت چرخ


object2 آبجکت هدف مثل locator یا هر چیز دیگه که باعث حرکت چرخ بشه.
این فقط تو یه جهت جواب میده و تو جهت دیگه جوابنداد!
لطفا یه نمونه بذار
 
آخرین ویرایش:

maxscript

Well-Known Member
یه نکته شما باید شعاع دایره رو بدست بیارید برای این کار به منوی Create برید و بعد Measure Tool سپس Distance Tool رو بزنید و بعد از مرکز چرخ به خروجی بزنید

درواقع محور z کنترل اصلی باید به محور X کنترل تایر در بیاد

[CPPS]//Create expression for wheel
float $roll=3.14*(1.64*2);
joint1.rotateX =(nurbsCircle1.translateZ/$roll)*360;
[/CPPS]
 
آخرین ویرایش:

rainbmaya

Active Member
یه نکته شما باید شعاع دایره رو بدست بیارید برای این کار به منوی Create برید و بعد Measure Tool سپس Distance Tool رو بزنید و بعد از مرکز چرخ به خروجی بزنید

درواقع محور z کنترل اصلی باید به محور X کنترل تایر در بیاد

C++ Code:

//Create expression for wheel float $roll=3.14*(1.64*2); joint1.rotateX =(nurbsCircle1.translateZ/$roll)*360;



مشکل همینه
درواقع محور z کنترل اصلی باید به محور X کنترل تایر در بیاد
من میخوام تو همه جهات بدون مشکل حرکت کنه. اگه بتونی یه صحنه کوچی بسازی و برام بذاری که دیگه گل بودی گل تر میشی.
خیلی نیازمه.
اگه صحنه برام آپ کنی خودم متوجه میشم چکار باید بکنم.
تشکر
یه فایل هم پایین گذاشتم یه ماشین فوق العاده است اگه چرخهاش اینجوری باشه که خیلی توپه.
 

پیوست ها

  • Truck_v1.0.rar
    996.7 کیلوبایت · بازدیدها: 30
آخرین ویرایش:

rainbmaya

Active Member
گولی از خودتونه اینم یه فایل کوچک ساختم امیدوارم مشکلتون حل شه:

http://uplod.ir/zzr0eb1609fj/File_.zip.htm

دوست من متاسفانه ارور میده شاید ورژن مایاتون 2013 اگه اینجوره لطفا *.ma ذخیره کنید. اگه ممکنه همینجا بذاریدش مدیریتش خیلی بهتره. تو تنظیم های بیشتر - مدیریت پیوست
بازم تشکر
file -f -options "v=0" -typ "mayaBinary" -o "Desktop/Wheel.mb";addRecentFile("C:/Users/-------------/Desktop/Wheel.mb", "mayaBinary"); // Error: line 0: Unknown Maya file version: 2013. //
// File read in 0 seconds. //
// Warning: Errors have occurred while reading this scene that may result in data loss.
Please check the Script Editor for details. //
// Error: Error reading file. //
// Error: Error reading file. //
 
آخرین ویرایش:

rainbmaya

Active Member
دوست من این فایلو بالاخره تو مایا 2012 باز کردم ( با NotPad ورژن جدید ویرایشش کردم ) ولی همچنان مشکلاتش پا برجاست
اگه 90 درجه بچرخونیش از حرکت میمونه ، اگه 180 درجه بچرخونیش برعکس میچرخه!
 

maxscript

Well-Known Member
شما دقیقا چطور می خواهید چرخ بچرخه یه کانسپتی رسم کنید من متوجه بشم دقیقا شما چی می خواهید
 
آخرین ویرایش:

Hamed_8

Member
فایل که گذاشتین فقط توی یه محور کار میکنه و اون دوستمون میخواد توی همه محورها کار کنه
یه پلاگین هست برای این کار ، اسمش یادم نیست ولی بگردی پیداش میکنی
 

davoodice

Well-Known Member
کسی راه حلی برای چرخ ماشین نداره که تو هر زاویه ای که بچرخونیمش مشکلی براش بوجود نیاد. با set driven key که اینکارو میکنم فقط تو جهتی که کلید تعیین کردم قابل انجامه و زمانی که تو یه محور دیگه میچرخونمش مشکل پیدا میکنه
مثلا Rotate X Driven و Translate Z Driver تو این جهت یعنی Z مشکلی نداره ولی به محض رفتن تو Translate X از کار می افته و دیگه کار نمیکنه. از Expression هم که استفاده میکنم فقط تو یه جهت جواب میده. خیلی ضروریه لطفا از هر روشی میتونید کمک کنید.
( Maya 2012 SAP x64 ) نود ادیتورهم دارم ولی از اون هم نشد.

با سلام
حقیقتا چیز سختی رو خواستی
من یه فایل برات تنظیم کردم
جهت اطلاع دوستان
همون طور که میدونید ما برای این کار نیاز داریم مسافتی که چرخ طی می کنه رو محاسبه کنیم
من در این فایل در چرخ دوتا اتریب گداشتم یکی برای سرعت چرخش چرخ و یکی برای فریمی که باید چرخش ها ریست بشن(لحظه شروع حرکت)
البته قطعا میشه اکسپرشن رو طوری توسعه داد که نیاز به این دو اتریب نباشه اما من حالشو نداشتم
ولی همینم کاملا کار میکنه

roll.rar
اقا این فایل آپلودر مجید آنلاین کجا رفته؟:mad:
 
آخرین ویرایش:

maxscript

Well-Known Member
شما با دستکاری داخل کدهای مل و اکسپرشن می تونید توی همه جهات چرخ رو به حرکت در بیارید من فقط یه محور رو درست کردم شما می تونید توی تمامی محورها با دستکاری کدها به نتیجه برسی
 

m2_farzan

Active Member
من که آخرش منظورت رو نفهمیدم!

وللش بابا، بفهمم هم فکر نکنم کاری از دستم بر بیاد.
 

rainbmaya

Active Member
شما با دستکاری داخل کدهای مل و اکسپرشن می تونید توی همه جهات چرخ رو به حرکت در بیارید من فقط یه محور رو درست کردم شما می تونید توی تمامی محورها با دستکاری کدها به نتیجه برسی

آقا من برنامه نویسیم افتضاحه . یه بزرگواری کنید و کاملش کنید.

با سلام
حقیقتا چیز سختی رو خواستی
من یه فایل برات تنظیم کردم
جهت اطلاع دوستان
همون طور که میدونید ما برای این کار نیاز داریم مسافتی که چرخ طی می کنه رو محاسبه کنیم
من در این فایل در چرخ دوتا اتریب گداشتم یکی برای سرعت چرخش چرخ و یکی برای فریمی که باید چرخش ها ریست بشن(لحظه شروع حرکت)
البته قطعا میشه اکسپرشن رو طوری توسعه داد که نیاز به این دو اتریب نباشه اما من حالشو نداشتم
ولی همینم کاملا کار میکنه
دوست من این فایلی که گذاشتی عالیه فقط یه مشکل داره و عقب نمیره. البته من خود چرخو جابجا کردم فکر نکنید خیلی هم خنگما. جدای از Motion path. میشه زحمت بکشی کامل بذاریش. من تازه شروع کردم ، دارم MEL یاد میگیرم و نمیتونم اینو تغییر بدم. یه توضیح هم برای استفاده اش بذار.
خوشبحالتون که برنامه نویسی بلدید.:rose: کاشکی من هم بلد بودم.:cry:
راستی من دارم کتاب برنامه نویسی به زبان MEL در MAYA رو میخونم این کتاب خوبه؟ تازه 60 صفحه ازش خوندم! <:C
خنگولها روکتاب آموزش مایا آرم LightWave زدن :snap:
من بهتر نیست برنامه نویسی به زبانی مثل Delphi یا زبان دیگه ای یاد بگیرم . مستقیم MEL و اکسپرشن یاد بگیرم کافیه؟
از همه دوستان سپاسگذارم.
 
آخرین ویرایش:

maxscript

Well-Known Member
بازم سلام من الان دارم Python یاد می گیرم اینده داخل این برنامه نویسی هست که توی همه برنامه های تری دی وجود داره. مل اسکریپ خیلی راحته برای یادگیری واقعی مل شما باید به زبان C++ مسلط باشی در غیر این صورت هیچ وقت نمی تونی الگریتمهای خودتو توی مل پیاده کنی درباره چرخ هم شما از پلاگین Craft هم می تونی استفاده کنی که برای این کار ساخته شده برای قدرتشم همین بس که Pixar , EA , ACTIVISION کاربراشن

یا علی
 

rainbmaya

Active Member
بازم سلام من الان دارم Python یاد می گیرم اینده داخل این برنامه نویسی هست که توی همه برنامه های تری دی وجود داره. مل اسکریپ خیلی راحته برای یادگیری واقعی مل شما باید به زبان C++ مسلط باشی در غیر این صورت هیچ وقت نمی تونی الگریتمهای خودتو توی مل پیاده کنی درباره چرخ هم شما از پلاگین Craft هم می تونی استفاده کنی که برای این کار ساخته شده برای قدرتشم همین بس که Pixar , EA , ACTIVISION کاربراشن

یا علی
یه کرکتر روباته و craft بدردم نمیخوره. خودت زحمت ملشو بکش . بشدت نیازمه.
 

davoodice

Well-Known Member
دوست من این فایلی که گذاشتی عالیه فقط یه مشکل داره و عقب نمیره. البته من خود چرخو جابجا کردم فکر نکنید خیلی هم خنگما. جدای از Motion path. میشه زحمت بکشی کامل بذاریش. من تازه شروع کردم ، دارم MEL یاد میگیرم و نمیتونم اینو تغییر بدم. یه توضیح هم برای استفاده اش بذار.
خوشبحالتون که برنامه نویسی بلدید. کاشکی من هم بلد بودم.
راستی من دارم کتاب برنامه نویسی به زبان MEL در MAYA رو میخونم این کتاب خوبه؟ تازه 60 صفحه ازش خوندم! <:C
خنگولها روکتاب آموزش مایا آرم LightWave زدن
من بهتر نیست برنامه نویسی به زبانی مثل Delphi یا زبان دیگه ای یاد بگیرم . مستقیم MEL و اکسپرشن یاد بگیرم کافیه؟
از همه دوستان سپاسگذارم.

roll V2

در این ورژن از فایل مشکل دنده عقب هم رفع شده
برای حرکت دستی مسیر رو حذف کنید
برای حرکت چرخ از کنترلر زیر آن استفاده کنید حتما
برای یاد گیری مل نیازی به یاد گیری کامل C++ نیست فقط در حدی که با انواع حلقه ها عبارات شرطی، سینتاکس یا قواعد نوشتاری، متغیر ها انواع آنها و روش تعریف آنها اشنا بشید.
نکته:
در این فیل حتما باید اول آبجکت خودتو انیمیت کنی بعد تایم اسلایدر رو حرکت بدی تا چرخش رو ببینی. اگه دیدی چرخ حالت سر حوردن داره ، خود چرخو انتخاب کن و اتریب k رو تنظیم کن
 
آخرین ویرایش:
سلام
کاری که شما میخواید انجام بدید اگر حرکتتون متوش منحنی داشته باشه کمی پیچیده.ست! مخصوصا اگر تو حرکتتون منحنی داشته باشین. من براتون پروسه رو خورد میکنم و راه حل رو میذارم؛ اما تبدیل به کد MEL کردنش با خودتون (ببخشید واقعا از حوصله.م خارج بود) یکی دو مرحله رو از script editor کدهاشو نگاه کنین، باقیش دستتون میاد (فقط حتما echo all commands روشن باشه)
ببنید میزان چرخش شما میشه مسافت طی شده تقسیم بر محیط دایره، پس اول باید سراغ بدست آوردن مسافت طی شده بریم.

A: مسافت طی شده (جای سختش!:wink: ):
1. انیمیشن رو bake کنید ( edit => keys => bake simulation ). ببینید ما تک تک کلید فریم ها کار داریم. (چون میخوایم میزان جابجایی چرخ رو با بالاترین دقت ممکن بدست بیاریم)

از اینجا به بعد تا جایی که عرض خواهم کرد رو تو یک حلقه for با شرایط زمانی قرار بدین

2. بعد از نرم افزار بخواین locator $i رو بسازه و اون رو زیر چرختون point constraint کنه و بعد خود constraint رو پاک کنه.
3. محل locator رو تو یک متغیر vector ذخیره کنین
4. از نرم افزار بخواین به فریم بعدی بره و مرحله 2 و 3 دوباره اجرا بشه؛ با این تفاوت که محل locator $i+1 او یک متغیر vector جدید ذخیره میشه
5. یه متغیر float درست کنین و اندازه فاصله دو تا locator رو توش بذارین
6. یه متغیر float دیگه درست کنین و مقدار متغیر مرحله 5 رو دائما بهش اضافه کنین

انتهای حلقه for

7. از float آخری پرینت بگیرین. این شد مسافت طی شده شما!

(تا اینجا کلا MEL بود دوستان، باید تو script editor مینوشتین. از اینجا به بعد میریم تو expression editor)

B: محاسبه میزان چرخش چرخ:
1. حالا برای چرخش به جلو این کد رو تو expression editor برای جهت دلخواهتون که به جلوست بنویسین:
[LTR]$rotation = (مسافت طی شده) / 4 x 3.1415 x شعاع چرخ[/LTR]
انگلیسی هم مینویسم چون فکر میکنم فارسی و انگلیسی همراه هم بدخوانی میشه
[LTR]$rotation = $totalWay / 4 x 3.1415 x wheels radius[/LTR]
2. مقدار رو ار رادیان تبدیل به درجه کنین و داخل جهتی که میخواین چرخش رو به جلو باشه بذارین.

فقط بیزحمت اگه جاییش اشکال داشت حتما بهم بگین تا بیشتر روش فکر کنم.
 
آخرین ویرایش:

rainbmaya

Active Member
سلام
کاری که شما میخواید انجام بدید اگر حرکتتون متوش منحنی داشته باشه کمی پیچیده.ست! مخصوصا اگر تو حرکتتون منحنی داشته باشین. من براتون پروسه رو خورد میکنم و راه حل رو میذارم؛ اما تبدیل به کد MEL کردنش با خودتون (ببخشید واقعا از حوصله.م خارج بود) یکی دو مرحله رو از script editor کدهاشو نگاه کنین، باقیش دستتون میاد (فقط حتما echo all commands روشن باشه)
ببنید میزان چرخش شما میشه مسافت طی شده تقسیم بر محیط دایره، پس اول باید سراغ بدست آوردن مسافت طی شده بریم.

A: مسافت طی شده (جای سختش! ):
1. انیمیشن رو bake کنید ( edit => keys => bake simulation ). ببینید ما تک تک کلید فریم ها کار داریم. (چون میخوایم میزان جابجایی چرخ رو با بالاترین دقت ممکن بدست بیاریم)

از اینجا به بعد تا جایی که عرض خواهم کرد رو تو یک حلقه for با شرایط زمانی قرار بدین

2. بعد از نرم افزار بخواین locator $i رو بسازه و اون رو زیر چرختون point constraint کنه و بعد خود constraint رو پاک کنه.
3. محل locator رو تو یک متغیر vector ذخیره کنین
4. از نرم افزار بخواین به فریم بعدی بره و مرحله 2 و 3 دوباره اجرا بشه؛ با این تفاوت که محل locator $i+1 او یک متغیر vector جدید ذخیره میشه
5. یه متغیر float درست کنین و اندازه فاصله دو تا locator رو توش بذارین
6. یه متغیر float دیگه درست کنین و مقدار متغیر مرحله 5 رو دائما بهش اضافه کنین

انتهای حلقه for

7. از float آخری پرینت بگیرین. این شد مسافت طی شده شما!

(تا اینجا کلا MEL بود دوستان، باید تو script editor مینوشتین. از اینجا به بعد میریم تو expression editor)

B: محاسبه میزان چرخش چرخ:
1. حالا برای چرخش به جلو این کد رو تو expression editor برای جهت دلخواهتون که به جلوست بنویسین:
$rotation = (مسافت طی شده) / 4 x 3.1415 x شعاع چرخ

انگلیسی هم مینویسم چون فکر میکنم فارسی و انگلیسی همراه هم بدخوانی میشه
$rotation = $totalWay / 4 x 3.1415 x wheels radius

2. مقدار رو ار رادیان تبدیل به درجه کنین و داخل جهتی که میخواین چرخش رو به جلو باشه بذارین.

فقط بیزحمت اگه جاییش اشکال داشت حتما بهم بگین تا بیشتر روش فکر کنم.
اهورا مزدای پاک مرا مورد مرحمت و الطاف خویش قرار داده تا هر چه زودتر فرصتی پیدا کرده تا کتاب برنامه نویسی به زبان MEL در Maya را که ناشر تماما دیوانه آن آرم LightWave3D را بر رویش چاپ نموده و نشان دهنده هر کی هر کی بودن آن انتشارات نابخردانه است و هم اکنون 60 صفحه آنرا خوانده ام را تمام کنم و با سواد شده و مل و اکسپرشن یاد گرفته و این اطلاعات را به زبان شیرین مل تبدیل بنمایم. در ورای این قسمت آخری که فرموده اند :
فقط بیزحمت اگه جاییش اشکال داشت حتما بهم بگین تا بیشتر روش فکر کنم.
توبه نموده و استغفار کرده که تماما اشکال است به هنگام نه برای عرایض طلا کوب گشته شما بلکم به خاطر سواد کم من.
فی الحال تا تمام کردن این کتاب گرانبها سر در لاک خویش فرو برده و دست دعا به سمت شما دوستان مل بلد و کاربلد دراز کرده و اشک ریخته تا شاید فرجی گشته بلکم این مشکل حل شود و یا معجزه ای رخ داده ، حوصله شما از خارجه و فرنگ ، دیار کفار دانشمند برگردد و این عبارات بر صفحه این تارنما به تبدیل در آیند و MEL شوند.
مناجات مل اکسپرشن نامه rainbmaya جلد 54 صفحه 2 اون ته مهاش.
 

davoodice

Well-Known Member
[CSS]
float $ax; float $ay;
float $bx;
float $by;
float $rotVal ;
float $frameA;
int $resetframe = pPipe1.resetframe;
if (frame == $resetframe) {
$ax= p.translateX;
$ay= p.translateZ;
$bx= p.translateX;
$by= p.translateZ;
$rotVal = 0;
pPipe1.rotateY = 0;
$frameA = 0;
}
if (frame != $resetframe) {
$bx= p.translateX;
$by= p.translateZ;
$x = sqrt(($bx - $ax) * ($bx - $ax) + ($by - $ay) * ($by - $ay));
if (frame > $frameA )
$rotVal = $x + $rotVal;
else
$rotVal = $rotVal - $x ;
$ax= $bx;
$ay= $by;
$frameA = frame;
print $rotVal ;
pPipe1.rotateY = -$rotVal* pPipe1.k;
}


[/CSS]

خوب در این کد فاصله ای که جسم طی می کنه در هر فریم محاسبه میشه a نقطه اول b نقطه دوم که از طریق فرمول جذر x[SUP]2[/SUP] + y[SUP]2 [/SUP]در محاسبه میشه. (وتر مثلث قائم الزاویه )
سپس این وتر ها با هم در هر فریم با هم جمع میشن و مسافت طی شده به دست میاد.البته اگه چرخ دنده عقب بیاد با این فاصله طی شده در هر فریم از مسافت کل کم بشه.
 

جدیدترین ارسال ها

بالا