Expression time Help me?

rainbmaya

Active Member
دو تا آبجکت داریم به نام a و b.
میخوایم آبجکت b بر اساس آبجکت a بچرخه ، این پرخش بر اساس زمان باشه.
تا اینجا مشکلی ندارم. ( خیلی هنر کردم نه!:green:)
کد:
b.rotateX = a.rotateX;
a.rotateX = time;
حالا میخوام اتریبی اضافه کنم که زمانو برام کنترل کنه. مثلا تو بهضی جاها تایم اسلایدرم داره میره ولی میخوام آبجکتم نچرخه. و یا سرعت کم و زیاد بشه طوریکه تو حرکت آبجکتم اختلالی بوجود نیاد.
 

پیوست ها

  • Problem Expressions.rar
    12.1 کیلوبایت · بازدیدها: 7
آخرین ویرایش:

maxscript

Well-Known Member
کافیه یه ارگومان بسازی تایمتو ضرب اون ارگومان کنی
C++ Code:

a.rotateX = time*a.rt; b.rotateX = a.rotateX;
 
آخرین ویرایش:

rainbmaya

Active Member
کافیه یه ارگومان بسازی تایمتو ضرب اون ارگومان کنی
C++ Code:

a.rotateX = time*a.rt; b.rotateX = a.rotateX;
مرسی دوست من ، اینکار قبلا انجام دادم ولی خودت تستش کن میبینی زمانی که rt رو تغییر میدی متحرکسازی آبجکتت بهم میخوره! برای rt کی تعریف کن متوجه میشی منظورم چیه؟!
 

Hamed_8

Member
برای زیاد کردن مقدار چرخش میتونی خروجی رو ضربدر عددی بکنی و برای اینکه بچرخه یا چرخه میتونی توی خوده اتربیوت اکسپرشن اونو فعال و غیر فعال کنی
 

Hamed_8

Member
با چه دستوری اینکارو بکنم

دستور خاصی نداره توی تنظیمات اکسپرشنه ، عکس رو ببین
میتونی اون رو نرمال و بلاک کنی و روش راست کلیک بکنی و کلید بزنی

d83_bg.jpg
 

rainbmaya

Active Member
دستور خاصی نداره توی تنظیمات اکسپرشنه ، عکس رو ببین میتونی اون رو نرمال و بلاک کنی و روش راست کلیک بکنی و کلید بزنی
d83_bg.jpg
همون مشکلو بازم دارم. من میخوام وقتی آبچکت می ایسته محاسبه چرخش در زمان هم متوقف بشه! ولی این اتفاق نمی افته!
 

maxscript

Well-Known Member
شما یه ارگومان به نام time بساز جدا از اینکه قراره ارگومانی بسازی که مقدار سرعت رو کنترل کنه ارگومان تایم باید یا از نوع Bool باشه یا Integere مقدار 0 و 1 اون وقت :

کد:
float $kept;
 if(a.time==1){
 a.rotateX=time*360;
 $kept=a.rotateX;
 }
این قطعه کد مشکلی که داره وقتی شما time رو 0 می کنی بعد از فریمی که time صفر شده یه فریم جلوتر ببری بعد time رو 1 کنی مقدار چرخش محاسبه میشه یعنی Frame Pre با frame nex جمع میشن
 
آخرین ویرایش:

rainbmaya

Active Member
خوب متوجه نشدم ، فایلت رو بذار اینجا و دقیقاً بگو چی میخوای تا برات درست کنم
ببینید یه چرخ و فلک در نظر بگیرید. این چرخ و فلک در حال حرکته و توقف میکنه برای سوار و پیاده کردن مسافراش. در زمان توقف چرخ و فلک تایم ما همچنان در حال حرکته. حالا اگه بعد از nframe چرخ و فلک شروع به حرکت کنه محاسبه حرکت از نقطه ایستا باید شروع بشه.فایلی که تو پست اول پیوست کردم رو ببینید و خودتون براش کلید بزنید متوجه منظورم میشید.
 

rainbmaya

Active Member
شما یه ارگومان به نام time بساز جدا از اینکه قراره ارگومانی بسازی که مقدار سرعت رو کنترل کنه ارگومان تایم باید یا از نوع Bool باشه یا Integere مقدار 0 و 1 اون وقت :

کد:

float $kept;
if(a.time==1){
a.rotateX=time*360;
$kept=a.rotateX;
}

این قطعه کد مشکلی که داره وقتی شما time رو 0 می کنی بعد از فریمی که time صفر شده یه فریم جلوتر ببری بعد time رو 1 کنی مقدار چرخش محاسبه میشه یعنی Frame Pre با frame nex جمع میشن
مرسی خیلی بهتر شده. ولی بازم مشکلاتی داره. ولی خیلی خوب روش فکر شده. تشکر.
 

Hamed_8

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

کلاً دو نوع مقدار عددی که بالا میره در اکسپرشن داریم که تایم و فریم هستش ، این دو تا ورودی هم ندارن و فقط خروجی به شما میدن
وقتی شما پلی میکنی این مقدار بالا میره و وقتی پاوس میکنی می ایسته و شما میخواین در حین پلی شدن ، این مقدار بالا نره که نمیشه
بخاطر همینه که شما به مشکل میخورین
حتی میشه سینوس و کسینوس رو توی حالتی تنظیم کرد که آبجکت به صورت دایره بچرخه ولی مشکل باز اینجاس که تا ضرب یا جمع با تایم یا فریم نشن قابل پلی شدن نیستن
این منظقش بود خلاصه
همیشه کلک رشتی حرف اول رو میزنه !!! ، فایل رو ببینید
ترکیبی از مقدار 20 و 1 باعث میشه درست باشه ، اگه یکیش عوض بشه اونیکی رو باید به صورت دستی پیدا کنید
من بودم دستی انیمیت میکردم ، این اذیت میکنه
موفق باشی

http://s1.picofile.com/file/7567690749/te.rar.html
 

davoodice

Well-Known Member
سلام ببخشید مدتی نبودم
این کار خیلی اسونه عزیز
ما یه cube داریم که اتریب راش درست کن به نام speed
حالا در اکسپرشن مربوط به rotateX این رو بنویس
cube.rotateX+=cube.speed
تمام
اگه خواستی وقتی میای تو فریم 1 همه چی ریست بشه میتونی از if استفاده کنی
کد:
pCube1.rotateX += pCube1.aaa; if (frame==1) pCube1.rotateX=0;
 
آخرین ویرایش:

Hamed_8

Member
سلام ببخشید مدتی نبودم
این کار خیلی اسونه عزیز
ما یه cube داریم که اتریب راش درست کن به نام speed
حالا در اکسپرشن مربوط به rotateX این رو بنویس
cube.rotateX+=cube.speed
تمام
اگه خواستی وقتی میای تو فریم 1 همه چی ریست بشه میتونی از if استفاده کنی
کد:
pCube1.rotateX += pCube1.aaa; if (frame==1) pCube1.rotateX=0;

این وسط فریم ها ایست نداره که
 

davoodice

Well-Known Member
باید پارامتر speed رو انیمیت کنی
هرجا خواستی بایسته speed رو صفر میکنی
این کد در زمان تغییر سرعت پرش ایجاد نمیکنه و نقطه قوتش همین جاست و البته به time بستگی نداره واین باعث میشه مشکلی که hamed گفت پیش نیاد
 

Hamed_8

Member
باید پارامتر speed رو انیمیت کنی
هرجا خواستی بایسته speed رو صفر میکنی
این کد در زمان تغییر سرعت پرش ایجاد نمیکنه و نقطه قوتش همین جاست و البته به time بستگی نداره واین باعث میشه مشکلی که hamed گفت پیش نیاد

این سه تا مشکل داره
اول اینکه سرعتش همینطوری بالا میره
دوم اینکه مقدار سرعت چون همینطوری بالا میره وسط کار نمیتونی یه دفعه ایست بهش بدی
مثلاً مقدار اسپید 100 باشه نمیتونی ایست بدی و مقدارش باید بشه 0 که اونم خودش کلی فریم نیاز داره
سوم فایل رو بیبن ( وسط پلی شدن محور چرخش عوض میشه ! )

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

پیوست ها

  • rt.rar
    6.5 کیلوبایت · بازدیدها: 2
آخرین ویرایش:

davoodice

Well-Known Member
اول اینکه سرعتش همینطوری بالا میره
وقتی شما speed رو انیمیت کردی از فریم 1 تا 374 و speed داره هی زیاد میشه پس طبیعیه که سرعت هی چرخش بالاتر بره.
دوم اینکه مقدار سرعت چون همینطوری بالا میره وسط کار نمیتونی یه دفعه ایست بهش بدی
باید در عرض یک فریم speed رو 0 کنی
سوم فایل رو بیبن ( وسط پلی شدن محور چرخش عوض میشه ! )
اون خطای دیده تو سرعت بالا با توجه به این در هر فریم اکسپرشن محاسبه میشه میشه اینطور توضیح داد تو فریم 200 آبجکت 70 درجه میچرخه و تو فریم دو آبجکت 75 درجه دیگه میچرخه و به همین ترتیب... و به عبارتی چون چشم نمیتونه بین فریم ها رو ببینه شاید شما فکر کنید تو سرعت 100 ابجکت داره اهسته تر میچرخه. ااین هم یه ضمیمه
 

Hamed_8

Member
وقتی شما speed رو انیمیت کردی از فریم 1 تا 374 و speed داره هی زیاد میشه پس طبیعیه که سرعت هی چرخش بالاتر بره. باید در عرض یک فریم speed رو 0 کنی اون خطای دیده تو سرعت بالا با توجه به این در هر فریم اکسپرشن محاسبه میشه میشه اینطور توضیح داد تو فریم 200 آبجکت 70 درجه میچرخه و تو فریم دو آبجکت 75 درجه دیگه میچرخه و به همین ترتیب... و به عبارتی چون چشم نمیتونه بین فریم ها رو ببینه شاید شما فکر کنید تو سرعت 100 ابجکت داره اهسته تر میچرخه. ااین هم یه ضمیمه

نه ببین داوود جان توی فایل من توی فریم 300 باکس قشنگ می ایسته و بعد شروع میکنه رو به عقب چرخیدن !
دو تا اولی رو میشه حل کرد ولی این مشکل سازه
 

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

بالا