max script , max script , max script

پرواز

Member
سلام:rose::rose:

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

جایی نرسید

خب واقعیت هم همینه مشغله کار ی با ارزش بودن وقت و عدم دسترسی دائم افراد مانع از اینه چنین بحثی اغاز و با طی

مراحلی ب اتمام برسد

دنیای اینترنت خود منبعی خوب برای یادگیری زبان برنامه نویسی تری دی مکس است با جستجو کردن در این منبع عظیم

اطلاعاتی میتوان به به اطلاعات خوبی دسترسی پیدا کرد اما ..

اما رفع اشکال با یادگیری متفاوته در یادگیری ما مطالبی را میخوانیم و تمرین میکنیم اما در عمل به مواردی بر میخوریم که

در هیچ جایی شاید اورده نشده باشد اینجاست که نبوغ برنامه نویسان است که باید گره گشا باشد

این مقدمه بهانه ای بود برای ..رفع اشکال
 

پرواز

Member
حالا سئوال

میخوام موقعیت دو شیی رو از نظر محور x y z مقایسه کنم ..خیلی حیاتی

مطمئنم راه ساده ای باید داشته باشه

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

اما نوشتن من مثل اینه که لقمه رو از پشت سر بزاری تو دهن یعنی راه طولانی رو رفتم چون راه استاندارد رو بلد

نبودم

راه من جواب داد اما مشکل اینجاست که کلی باس بنویسم و در مراحل بعدی پروژه ام برای تغییرات دیگر باید همین

روش رو بروم و تغییرش بدم

پس دوستان راه ساده رو برای من بزارند ..

اما راه من
PHP:
aa=$Sphere02
bb=$Sphere01
aaa=aa.pos
bbb=bb.pos
-------------------------------------xxx
xyzx=aaa-bbb
xxq=xyzx as string
xxx=xxq
global n=1
g=xxx.count
for i=1 to g  do(
xa=xxx[n]
if xa!="," do (global n=n+1)
)
gg=g-n+1
xxx=replace xxx n gg ""
global xxx=replace xxx 1 1 ""
global xxx=(execute(xxx))
xxx

------------------------------zzz
xyzy=aaa-bbb
zzq=xyzy as string
zzz=zzq
global n=1
g=zzz.count
for i=1 to g  do(
za=zzz[n]
if za!="," do (global n=n+1)
)
zzz=replace zzz 1 n ""
g=zzz.count
global n=1
for i=1 to g  do(
za=zzz[n]
if za!="," do (global n=n+1)
)
zzz=replace zzz 1 n ""
g=zzz.count
zzz=replace zzz g 1 ""
global zzz=(execute(zzz))
---------------------------------yyy
xyzz=aaa-bbb
yyq=xyzz as string
yyy=yyq
------------
global n=1
g=yyy.count
for i=1 to g  do(
za=yyy[n]
if za!="," do (global n=n+1)
)
yyy=replace yyy 1 n ""
g=yyy.count
global n=1
for i=1 to g  do(
za=yyy[n]
if za!="," do (global n=n+1)
)
g=yyy.count
g=g-n+1
yyy=replace yyy n g ""
global yyy=(execute(yyy))


------------------------------------
xxx
zzz
yyy

من به این صورت رفتم که موقعیت دو شیی رو بدست اوردم

aa=$Sphere02
bb=$Sphere01
aaa=aa.pos
bbb=bb.pos

و از هم کم کردم

xyzx=aaa-bbb

بعد تبدبل به رشته استرینگ کردم

xxq=xyzx as string

برای بدست اوردن محور ایکس از اول شمردم ..

g=zzz.count
for i=1 to g do(

کروشه اول رو حذف کردم رفتم جلو تا به کاما رسیدم

if xa!="," do (global n=n+1)

مابقی رو حذف

xxx=replace xxx n gg ""
global xxx=replace xxx 1 1 ""

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

global xxx=(execute(xxx))

شد عددی از تفریق محور ایکس شیی اول با شیی دوم بدست

اومده

برای محور y و z هم همین راه رو رفتم

ببینید تو رو خدا چقدر نبوغ دارم من :lol:

اگه راه استانداردشو بلد بودم اینهمه سلول خاکستری باد هوا نمیکردم تا سی خط جوک بنویسم بجای دو خط برنامه ادمیزادی :shock:

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

بیایین بهم نخندین محض رضای خدا برام راه حل ساده تری بگین
 

Elton John

Member
من نفهمیدم که شما میخاید چی رو ثابت کنید
زمانی که شما دو point3 رو از هم کم میکنید در واقع فاصله محور های دو موضوع رو بدست میارید

اگه منظورتون اینه که مقادیراز هم کم شده دو موقعیت دو جسم رو بدست بیارید و حالت info بدید باید به این صورت عمل کنید


کد:
point_1 = [10,15,20]
[10,15,20]

point_2 = [14,11,0]
[14,11,0]


point_3 = point_1 - point_2
[-4,4,20]

point_3.x
-4.0
point_3.y
4.0
point_3.z
20.0
 

پرواز

Member
من نفهمیدم که شما میخاید چی رو ثابت کنید
زمانی که شما دو point3 رو از هم کم میکنید در واقع فاصله محور های دو موضوع رو بدست میارید

اگه منظورتون اینه که مقادیراز هم کم شده دو موقعیت دو جسم رو بدست بیارید و حالت info بدید باید به این صورت عمل کنید


کد:
point_1 = [10,15,20]
[10,15,20]

point_2 = [14,11,0]
[14,11,0]


point_3 = point_1 - point_2
[-4,4,20]

point_3.x
-4.0
point_3.y
4.0
point_3.z
20.0
اهان همینه بخدا:rose::rose::rose::rose::rose::rose::rose::rose::rose::rose::rose:
خروجی اون اسکریپت رمان ماننده من در بالا با خروجی چند خط اسکریپت شما یکیه :)
دقیقا همین رو میخاستم

point_3.x
point_3.y
point_3.z

کل اون اسکریپتی رو که من بالا نوشتم به این دلیل بود که این سه خط رو نمی دونستم و مجبور شدم راهی رو برم تا به جواب درست برسم

کلهم شد این
point_1=$Sphere01.pos
point_2=$Sphere02.pos
point_3 = point_1 - point_2
xxx=point_3.x
yyy=point_3.y
zzz=point_3.z

طبق معمول فقط تشکر
مر30
:rose:
 
آخرین ویرایش:

پرواز

Member
سلام
سلام به اقا ارمین و یونگ انیماتور و دیگر دوستان اسکریپتی:green:

باز سئوال ..ولی از اون اسوناش:rose:

بدست اوردن پوزییشن زد در یک ابجکت شد plane01.poz.z


بدست اوردن پوزییشن یک ورتکس در یک اسپیلاین هم شد getKnotPoint $line01 1 1

اما حالا

میخوام پوزیشن زد (pos.z) یک ورتکس در یک اسپیلاین رو بدست بیارم ..چجوری
--------------
سئوال بعدی من فاصله دو کلید در تایم لاین رو میخوام تقسیم بر 2 کنم ولی همونطور که میدونیم زمان در تایم لاین اعشار پذیر نیست ..عدد

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

مثلا 5-10 جواب 2.5 و من باید 2.5 رو بعلاوه زمان اول یعنی 5 کنم تا وسط دو کلید یعنی 7.5 رو بدست اورم ولی نباید اعشار باشد پس چجوری

عدد بدست اومده رو مثلا بکنم 8 اگه اشتباه نکنم در مکس اسکریپت یعنی
integer
 

Elton John

Member
سلام
سلام به اقا ارمین و یونگ انیماتور و دیگر دوستان اسکریپتی:green:

باز سئوال ..ولی از اون اسوناش:rose:

بدست اوردن پوزییشن زد در یک ابجکت شد plane01.poz.z


بدست اوردن پوزییشن یک ورتکس در یک اسپیلاین هم شد getKnotPoint $line01 1 1

اما حالا

میخوام پوزیشن زد (pos.z) یک ورتکس در یک اسپیلاین رو بدست بیارم ..چجوری
--------------
سئوال بعدی من فاصله دو کلید در تایم لاین رو میخوام تقسیم بر 2 کنم ولی همونطور که میدونیم زمان در تایم لاین اعشار پذیر نیست ..عدد

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

مثلا 5-10 جواب 2.5 و من باید 2.5 رو بعلاوه زمان اول یعنی 5 کنم تا وسط دو کلید یعنی 7.5 رو بدست اورم ولی نباید اعشار باشد پس چجوری

عدد بدست اومده رو مثلا بکنم 8 اگه اشتباه نکنم در مکس اسکریپت یعنی
integer


یانگ انیمیتور :green:

کد:
mypoint  = getKnotPoint $line01 1 1
[-65.048,-3.70663,0]

mypoint.z
0.0
کد:
ceil 7.5
8.0

و یا میتونید به صورت دستی هم چنین چیزی نوشت که نتیجه همون خواهد شد:

کد:
(7.5 as integer) + 1
8
 
آخرین ویرایش:

پرواز

Member
ممنون از جوابت:rose::rose::rose:
در ضمن یانگ یا یونگ هرچی هست سخته یه اسم بگو تا باهاش هر جای مجید انلاین هستی صدات بزنیم کسی هم بهمون نخنده:green:
 

پرواز

Member
سلام:rose::rose:


مجبور شدم تا یه کمک کلی از دوستان بگیرم :rose::rose:

کاریه که تو قسمتیش گیر کردم

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

اینکه یه فرمول ریاضی یا چیزی که منطقی باشه یادم بدن

موضوع اینه که در این عکس
1.jpg

url%5D
1.jpg


یه باکس داریم به عنوان پا و یه اسپیلاین بیضی (قهوه ای رنگ ضخیم ) شکل داریم به عنوان کف پا

پا قراره از زمین بیاد بالا ولی کف پا همچنان که به پا لینکه نوک انگشتهای خودشو به زمین می چسبونه ..... با پایین بالا شدن پا انگشتها نبایست از زمین کنده بشن ( نوک انگشتان اینجا پایین ترین

ورتکس اسپیلاین محسوب میشه)محور چرخش کف پا محل اتصالش به پاهه

من این راه رو در نظر داشتم:shock:

این اتفاق در 20 فریم قراره بیفته

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

global aa=1
mypoint = getKnotPoint $spline01 1 1
mypointzz=mypoint.z
global vert = numKnots $spline01 1
for ii=1 to vert do (--b
mypoint = getKnotPoint $spline01 1 aa
mypointz=mypoint.z
if mypointz < mypointzz do( global mypointzz = mypointz global aaa=aa)
aa=aa+1
)--q
mypointzz

در فریم 20 پا بالا امده و کف پا باید بچرخه و موقعیت زد پایین ترین ورتکس خود رو با موقییت ثبت شده برابر کنه ..

در فریم بیست موقییت زد پایین ترین ورتکس کف پا بدست اوده و با موقعییت ثبت شده مقایسه شده و عددی بدست میاد که باید به کف پا

داده بشه تا بر اساس اون بچرخه و خود رو با زمین یعنی موقییت ثبت شده اول مماس کنه ..اینجا باید از ریاضی کمک گرفت که چه درجه ای

بچرخه

یه مثلث اینجاست یه ضلع نقطه اول یه ضلع نقطه فعلی و یه ضلع نقطه اتکا یا محور کف پا ..زاویه نقطه اتکا سوم رو چند درجه بگیرم

..؟؟؟؟؟؟؟؟؟؟؟؟:shock::shock:

یه مورد دیگه

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

بعنوان پایین ترین بدست اورده و با زمین مماس کنیم ..یعنی یه جورایی عملیات رو اصلاح کنیم ..
( بیضی قهوه ای رنگ باریک)

:rose::rose::rose::rose::rose:
 
آخرین ویرایش:

پرواز

Member
سلام :rose:

در مورد پست بالا..

شاید گیچ کننده باشه اما لپ مطلب اینه

اون شیی بیض شکل باید از باکس اویزون شده و بر روی کف کشیده بشه

این اتفاق قراره در فریمهای خاصی بیفته و برای همین دور رکتور رو باید خط کشید

در ضمن شیی بیضی شکل نباید حتما از نوع اسپیلاین باشه میتونه مش هم باشه..فقط بشه:sad:
 

Elton John

Member
سلام :rose:

در مورد پست بالا..

شاید گیچ کننده باشه اما لپ مطلب اینه

اون شیی بیض شکل باید از باکس اویزون شده و بر روی کف کشیده بشه

این اتفاق قراره در فریمهای خاصی بیفته و برای همین دور رکتور رو باید خط کشید

در ضمن شیی بیضی شکل نباید حتما از نوع اسپیلاین باشه میتونه مش هم باشه..فقط بشه:sad:


خوب با رکتور میتونید این کار رو تو فریم های خاصی انجام بدید مثلا بین 10 تا 25 و 40 تا 80
نیازی نیست حتما اسکریپت بنویسید

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

در صورتی میتونید از اسکریپت استفاده کنید
اگه سطح زمین دارای پستی بلندی باشه خوب اون بیضی باید بالا پایین بره برای همین باید از Ray استفاده کنید ولی این خودش کلی کار داره باید از اسکریپت های زنده برای این کار استفاده کنید


شما الان در واقع روی ریگ کار میکنید
فقط یادتون باشه که اگه دوست دارید مکس اسکریپت رو ادامه دهید باید تا حد بالایی با تمام ابزارهای تری دی مکس آشنا باشید در غیر اینصورت به در بسته خواهید خورد

در هنگام ریگ مکس اسکریپت آخرین راه حل خواهد بود

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

=================================================================

من اینجا ریگی که میخواهید درست کردم(بدون اسکریپت) ولی برای بهتر شدن باید بیشتر از اینها کار کرد_بعد از باز کردن فایل کافیه PLAY کنید
دانلود از اینجا_تری دی مکس 2010:


http://s2.picofile.com/file/7119928816/young_animator_.rar.html
 
آخرین ویرایش:

پرواز

Member
خوب با رکتور میتونید این کار رو تو فریم های خاصی انجام بدید مثلا بین 10 تا 25 و 40 تا 80
نیازی نیست حتما اسکریپت بنویسید

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

در صورتی میتونید از اسکریپت استفاده کنید
اگه سطح زمین دارای پستی بلندی باشه خوب اون بیضی باید بالا پایین بره برای همین باید از Ray استفاده کنید ولی این خودش کلی کار داره باید از اسکریپت های زنده برای این کار استفاده کنید


شما الان در واقع روی ریگ کار میکنید
فقط یادتون باشه که اگه دوست دارید مکس اسکریپت رو ادامه دهید باید تا حد بالایی با تمام ابزارهای تری دی مکس آشنا باشید در غیر اینصورت به در بسته خواهید خورد

در هنگام ریگ مکس اسکریپت آخرین راه حل خواهد بود

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

=================================================================

من اینجا ریگی که میخواهید درست کردم(بدون اسکریپت) ولی برای بهتر شدن باید بیشتر از اینها کار کرد_بعد از باز کردن فایل کافیه PLAY کنید
دانلود از اینجا_تری دی مکس 2010:


http://s2.picofile.com/file/7119928816/young_animator_.rar.html

سلام دوست عزیز :rose::rose::rose::rose::rose:
دقیقا مشکل من همینه وقتی چیزی رو حتی اگه ناقص یاد بگیرم با همون اطلاعات ناقصم میخام کار بزرگی انجام بدم
این در مورد مکس هم همینطور بود وقتی تازه مکس رو یاد گرفته بودم 6 ماه رویه انیمیشن 6دقیقه ای کار کردم ولی بعدهاش وقتی تماشا میکردمش بهم میخندیدم که چرا نرفتم راه راحتر رو یاد بگیرم و یا مثلا چرا از این فرمان یا این ابزار استفاده نکردم
مکس اسکریپت بشدت فکرمو مشغول کرده در حالی که من بیشتر از چند روش محدود چیزی ازش بلد نیستم با همینا کاری رو شروع کردم خیلی سخت و بزرگ و نفس گیر در طول کار هم همش از شما کمک گرفتم ..خود شما باس فهمیده باشید که چقدر اماتورم ..ولی واقعا مصمم هستم
کار رو هم خیلی خیلی پیش بردم ولی باز دارم ارتقائش میدم تا بهتر بشه تا در اینده باهاش حرفه ای کار کنم

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

فایل شما رو نتونستم باز کنم فکر کنم چون من هنوز روی مکس 9 موندم خیلی سریع مکس بالاترو نصب میکنم تا ببینمش.طبق معمول فقط میتونم تشکر کنم از اینکه برای کار من وقت میزارید
اما یه سئوال دیگه
واقعا بگو برای فهمیدم مکس اسکریپت چیکار کنم منبعی مرجعی جدیدتر قابل فهمتر ..فقط نگی مثلا برو C رو یاد بگیر که از پاهام شل میشه اخه C فرمانهای مکس رو نمیدونه زبان کامپیوتر رو میدونه و فرمانهای برنامه نویسی رو
بگو خودت غیر از اینکه کار زیاد کردی از کجا عملکرد فرمانهای مکس اسکریپتو یاد گرفتی
در اخر ..اقا ارمین کجاست:rose::rose::rose::rose:
 

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

بالا