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

یکشنبه 4 بهمن 1394
8,250 بازدید
درود به دوستان عزیزم. امروز قرار در مورد یک موضوع خیلی خیلی جذاب با هم صحبت کنیم. چرا تخریب ایجاد میشه و چگونه این عمل انجام میشه. فقط قبل از شروع این نکته رو بگم که مفاهیم اصلی این علم و مرور میکنیم و شما نیازی نیست دنبال پلاگین و نرم افزاری خاص باشید. فقط اصول و نحوه انجام این شبیه سازی ها رو یاد میگیریم.
 
بچه ها همه چیز از انرژی شروع میشه. هر تخریبی که بتونید تصور کنید دلیلش از آزاد شدن انرژی سر چشمه میگیره. ولی تنها آزاد شدن انرژی نیست که باعث بوجود امدن یک تخریب یا یک انفجار میشه. اگر زمان رو در کنار آزاد شدن انرژی تعریف کنیم می تونیم به یک فرمول ساده برسیم. آزاد شدن انرژی زیاد در زمان بسیار کم باعث به وجود آمدن تخریب و خسارت میشه. البته یادمون نره که این اتفاق با افزایش دما و سرعت ملکول ها همراه هست که فعلا کاری به این قضیه نداریم. و به این نکته هم دقت کنیم که انرژی با زمان یک تناسب منطقی داره. به زبان ساده ما اجازه نداریم تو زمان زیاد انرژی زیادی اعمال کنیم.
 
01-destruction-in-cg
 
خب پس باید همیشه در نظر داشته باشیم اگر قراره شبیه سازی انفجار رو انجام بدیم. باید در زمان کم انرژی زیادی رو آزاد کنیم. بطور مثال ویدیو زیر ارتباط بین زمان و انرژی آزاد شده رو در 2 سناریو متفاوت بهمون نشون میده.


تو خیلی از موارد هوا و ملکول های هوا عامل انتقال انرژی هستند. مثلا وقتی رعد و برقی به زمین برخورد میکنه. به خاطر اختلاف دمایی که بوجود میاد موج انفجار بوجود میاد و این موج باعث تخریب خیلی زیادی میشه. این موج انفجار همان انتقال دما بین ملول های هوا هست که باعث جنبش زیاد ملکول ها میشه. خب دوستان پس تا اینجای کار به این نتیجه میرسیم که وقتی قراره چیزی رو تخریب کنیم اولین سوالی که باید از خودمون بپرسیم اینه که : چه چیزی باعث این تخریب میشه ؟ چگونه کار میکنه؟ به چه جهاتی انرژی ازاد میشه و به چه مقدار؟ در مرحله بعد باید بفهمیم چگونه باید تخریب کرد. این بخش خیلی خیلی مهم هست و سختترین مراحل کار هم تو این مرحله انجام میشه.
 
02-destruction-in-cg
 
مواد مختلف به خاطر ساختاری مختلف ملکولی و اتمی که دارند در مقابل نیروی زیاد، رفتارهای مختلفی از خودشون نشون میدم. بطور مثال اشیا کریستالی مثل شیشه حالت شکننده گی زیادی دارند و بر خلاف اون چوب دارای ساختار پیوسته و فیبر مانندی هست که اجازه نمی ده مثل شیشه خورد بشه.
خب اینجا دو تا سوال مطرح میشه :
  1. جسم ما چگونه خورد میشه ؟
  2. چگونه باید این کار را انجام داد ؟
خب جواب سوال اول بیشتر تجربی هست و باید دید جسم ما در دنیای واقعی چگونه نسبت به انرژی واکنش نشون میده. باید تحقیق کرد و اطلاعات جمع آوری کرد.
 
و اما جواب سوال دوم. چگونه باید تخریب رو انجام داد. دوستان چون ما قراره از نرم افزارها و پلاگین های فعال تو این زمینه استفاده کنیم باید در نظر بگیریم که باید تمام ساختارهای مورد نیاز رو تعریف کنیم. بطور مثال قبل از شبیه سازی باید بتونیم تعریف کنیم جسم ما چگونه خورد میشه. برای درک بهتر بذارید با مثال بریم جلو. فرض کنید قراره یک تنه درخت رو در معرض یک گلوله قرار بدیم.
 
اولین سوال: چه چیزی قراره باعث تخریب بشه ؟ حرکت سریع گلوله. خب میشه اینگونه استنباط کرد که حرکت سریع گلوله باعث شکسته شدن سریع بافت های چوب میشه. حالا سوال دوم: چوب چگونه واکنش نشون میده؟ برای جواب پیشنهاد میکنم ویدیو زیر رو ببینید.


چوب بخاطر بافتی که داره زیاد اجازه خورد شدن به خودش رو نمیده. و اگر هم خورد بشه در راستای بافت چوبیش خورد میشه. حالا میتونیم با این اطلاعات وارد نرم افزارمون بشیم و تمام موارد که نیاز هست رو شبیه سازی کنیم. برای اینکار اول گلوله رو به تنه درخت شلیک میکنیم. خیلی ساده یک sphere  رو از یک استوانه در طول 10 فرم عبور میدهیم.
 
03-destruction-in-cg
 
حالا نوبت به این میرسه که تنه درخت رو خورد کنیم. تا وقتی گلوله برخورد میکنه با درخت طبق الگویی که ما برای تنه درخت تعریف کردیم خورد بشه. بطور واضح می شه گفت تنه درخت ما میتونه به تیکه هایی در طول بافت خودش خورد بشه. یعنی تصویر A نه B
 
05-destruction-in-cg
 
خورد کردن تنه درخت باعث به وجود اومدن یک مشکل میشه دوستان. باعث میشه دیگه مدل ما یک پارچه نباشه و وقتی وارد شبیه سازی داینامیکی میشه مثل یک تنه عمل نکه و تمام قطعات خورد بشن و بریزند روی زمین.


اینجا باید یک خاصیت جدید رو تعریف کنیم تا بتونیم تیکه های چوب رو به هم بچسبونیم و وقتی از همه جدا بشند که گلوله به اونها برخورد کرده باشه. من میتونم اسمش رو بذارم نیروی بین قطعات یا هر چیزی. با این کار میتونم تمام قطعات رو منسجم کنار هم داشته باشم. ولی باید این نکته رو در نظر بگیرید که برای این نیرو محدودیت بذارید. یعنی اگر گلوله وارد چوب شد بتونه نیرویی بین قطعات رو خنثی کنه و باعث خورد شدن قطعات بشه. برای این منظور من نیرویی بین قطعات رو درست می کنم تا قطعات به هم بچسبند. خط های آبی نیروی بین قطعات هستند که مانند یک طناب قطعات رو کنار هم نگه می دارند. خب در این شرایط اگر گلوله به سمت تنه پرتاب بشه چه اتفاقی می افته؟ تو ویدیو زیر خواهیم دید.
 
07-destruction-in-cg
 
حالا که تنه درخت منسجم شده مانند یک جسم واحد عمل میکنه. تو این مرحله باید سیستمی رو پیاده کنیم تا وقتی گلوله رد میشه یکسری از نیرو ها حذف شوند تا چوب هایی که جلوی گلوله هستند خورد شوند. تو ویدیو زیر که تا حدودی slow motion شده می تونیم شاهد این قضیه باشیم.


حالا میخوایم کاری کنیم که تنه درخت به زمین هم چسبیده باشه تا کل تنه به حرکت گلوله واکنش نشون نده. خیلی ساده بین زمین و تنه رابطه برقرار می کنیم. خطوط قرمز بین زمین و تنه درخت رابطه برقرار کرده. و نتیجه میشه ویدیو زیر.
 
06-destruction-in-cg
 
خب دوستان تا اینجا یاد گرفتیم که چطوری آبجکت رو برای تخریب آماده کنیم و در نهایت بتونیم سیستمی رو برای تخریب آماده کنیم. حالا اگر بخوایم کمی سختتر به قضیه نگاه کنیم، باید این سوال رو بپرسیم که چگونه باید یک دیوار به همراه پنجره رو تخریب کنیم. خیلی سریع این قضیه رو  توضیح میدم و شک ندارم می فهمید باید چکار کنید.
 
04-destruction-in-cg
 
ما چند جنس مختلف داریم که باید بدونیم چگونه این اجسام خورد میشن.
 
شیشه: خورد شدن تیز و کریستالی
دیوار سنگی: علاوه بر اینکه سنگ ها هر کدام یک قطعه برای تخریب هستند خودشان هم خورد می شوند.
چوب دور شیشه یا زوار: خورد شدن در جهت بافت چوب. در این شرایط باید برای هر قطعه کاری که در مثال انجام دادیم رو انجام بدیم و علاوه بر اون لازمه که رابطه ای بین شیشه و زوار - زوار و دیوار شکل بگیره. یعنی لبه های شیشه که با زوار درگیر هستند به زوار وصل بشند و زوار به دیوار.
 
دوستان کلیات این مبحث به زبان ساده همین نکاتی بود که گفتم. امیدوارم برای دوستانی که علاقمند به اینجور مباحث هستند مفید بوده باشه.
حتما تو نظرات شرکت کنید و هر نقد و انتقادی داشتید همینجا مطرح کنید.
تا مقاله و آموزشی دیگر بدرود


اشتراک گذاری:

پست های مرتبط
دیدگاه ها ( 44 نظر )

سلام ناصر جان عالی بود. عالی ... میدونی ناصر این مقالات چون بر گرفته از تجربیات شخصی نوشته میشن مطالعشون خیلی جذابه. چون انگار با مطالعه اونها مسیر سختی که نویسنده مقاله طی کرده رو ما میانبر میزنیم. ناصر بحثی که شروع کردی خیلی جذابه. یک نتیجه گیری عالی هم در انتهای مطلب داشتی. نمونه تصویری که قرار دادی و برای تخریب آنالیزش کردی. درضمن بزودی سعی میکنم توی تالار گفتگو یه تاپیک جدید بسازم و ویدئوهای آموزشی جذابی رو در همین خصوص برای نرم افزار 3ds Max قرار بدم که مطمئنم یک مجموعه ارزشمندی میشه. عالی بود ناصر جان خسته نباشی

سلام مصطفی جان خیلی ممنون که همیشه تو انتشار مقالات کمکم میکنی. آره راستش و بخوای برای نوشتن این مقاله اصلا از نرم افزار حرف نزدم و بیشتر دوست داشتم تا بچه ها مفهوم رو دریابند. با این مطلب تمام دوستان می تونند بفهمند که وقتی قراره تو نرم افزارشون دنبال ابزار مناسب بگردند چه چیزی رو باید یاد بگیرند و دنبال چه ابزارهایی باشند. بی صبرانه منتظر انتشار این آموزش ها برای مکس هستم . ممنون از حضورت مصطفی جان.

حمید معمار
5 سال پیش

خیلی ردیف بود ، لایک

ممنون حمید جان لطف داری عزیز موفق باشی

میثم شجاعی
5 سال پیش

بخش مورد علاقه من :) ناصر جان خیلی خوب و کامل بود ٬ ترکوندی

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

ممنون آقای اسلامی عزیز خسته نباشی ، اطلاعات خوب و مفیدی بود

ممنون محمد رضا جان تشکر از حضورت عزیز

عرشیا
5 سال پیش

ناصر جون بیگ لایک ! آقا خسته نباشی :) . عالی بود :) .

ممنون عرشیا جان. سلامت باشی تشکر از حضورت عزیز

رسول شاکری
5 سال پیش

عالی بود ناصر جان . فقط ای کاش مایا هم تو این زمینه بیشتر تمرکز میکرد هرچند که پلاگین های متعددی از جمله dmm و polldowentو..... وجود دارند اما به هر حال هودینی یک نرم افزار مختص اینگونه کارهاست و امکانات گسترده تریو ارائه میده. البته ناگفته نماند که پلاگین thinking particles برای 3dmax در این زمینه شاهکار عمل کرده.

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

با درود به ناصر اسلامی عزیز عالی , عالیه , بخاطر استفاده از نیروها در تخریب و اثر اون در اجسام مختلف , یه کار 100% آکادمیک بیس . ممنون از آموزشهای ویژه ایی که همیشه زحمت میکشین .

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

time
5 سال پیش

مستر ناصر لایک!!!!!! این گونه مطالب مفهومی باور کن ده ها برابر از آموزش نرم افزاری بهتر و مفید ترن !!! خیلی عالی بود در مورد تجزیه ی آبجکتها یا همون فراگمنت هم می گفتی چون برای خیلی ها{از جمله خودم} سواله که چگونه آبجکتها این شیوه ی آرایش درونی رو به دست میارن!!!!؟؟ خسته نباشید

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

Sharif Taghizadeh
5 سال پیش

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

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

محمد بودات
5 سال پیش

واقعا خسته نباشی پسر. عالی بود عالی

واقعا ممنونم محمد جان. عزیزی تشکر از حضورت عزیز

Emad
5 سال پیش

عالی بود . منطقش مخصوصا. منتظر مقالات شما درباره داینامیک هستیم. ایشالله بیشتر بشه

ممنون عماد جان. تشکر از حضورت عزیز

سیدعارف رضوی
5 سال پیش

سلام ناصر جان. خدا قوت خیلی کامل و خوب شده. درود بر تو

درود بر تو سید جان. ممنون از حضورت عزیز

احسان شمسی
5 سال پیش

خیلی خوب بود ناصر. خیلی وقت ها ما یک افکت رو تولید میکنیم ولی نمیدونیم در پشت پرده نرم افزار بر اساس چی کار میکنه؛ این میشه که اکثرا اون نتیجه ای که میخاهیم رو نمیگیریم ولی اگه بدونیم منطق کار به چه شکلیه باعث پیشرفت چند برابری توی کارمون میشه. به عنوان نمونه علاوه مواردی که توی آموزشت بود این قضیه توی انیمیت هم هست.مثلا وقتی قوانین 12 گانه ی دیزنی رو بررسی میکنیم میبینیم تماما مسائل قیزیک و ریاضی ای هستن که به فرض تو دبیرستان خوندیم و چ بسا فقط درشون عنصر اغراق وجود داره. اینطور آموزش ها به نظرم خیلی کلیدی و کاربردی هستن. موفق باشی رفیق

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

madmaster_3d
5 سال پیش

جالب بود مرسی

ممنون تشکر از حضورت

خسته نباشید آقای اسلامی مطالب ارزشمندی بود و بی صبرانه منتظر قولی که آقای رضایی در خصوص ایجاد یک تاپیک جدید در تالار گفتگو در همین زمینه هستم

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

محمد ایازی
5 سال پیش

سلام و عرض ادب خدمت ناصر عزیز و مصطفی گل آقا ناصر عالی بود منتظر یه همچین مبحثی بودم ، اگه همین مبحث تو Houdini ادامه پیدا کنه عالیه چون خداروشکر مبحث تخریب تو Thinking Particles بستم و تخریب هودینی هم یاد بگیرم دیگه معرکه میشه فقط امیدوارم ادامه داشته باشه مثل مباحث Constraint & Friction و مباحث مفهومی در مورد voronoi و ... باز هم تشکر ، راستی تولدتون هم مبارک باشه :)

درود محمد جان. ببین کل مطلب همین بود خورد می کنی و روابط رو بین قطعات مشخص می کنی و بعد تو محیط داینامیکی همه رو به هم ربط میدی. برای یادگیری می تونی از منو هودینی گزینه help/example file/dynamic node example بعد دنبال مثال های constraint میگردی. در مورد تولد هم خیلی خیلی ممنون بچه ها خیلی لطف دارند واقعا :C تشکر از حضورت محمد جان

houdinian
5 سال پیش

درود بر ناصر عزیز. بسیار مطلب جالبی بود سپاس گزارم. فقط یک مشکلی که توی این شبیه سازی ها هست ناصر جان رفتار عجیب موتوره شبیه سازی bullet هست. اگر شما همین شبیه سازی هایی که ویدیوهاش رو گذاشتین با موتور جسم صلب هودینی انجام بدین، شبیه سازی بسیار بسیار کند جلو میره و اگر از bullet استفاده کنید شبیه سازی پر از ایراد هایی نظیر: پرش قطعات چوب تداخل قطعات چوپ قطعات چوب با سرعت بالایی به دور خودشون میچرخن لرزش و حرکت های عجیب قطعات و.... ناصر جان این جا تکلیف چیه؟ چیکار کنیم؟ bullet موتور خوبیه ولی خیلی باید باهاش سرو کله بزنید تا یک نتیجه ی معمول رو بهتون بده.

سلام آرش ممنون ببین ارش موتور bullet برای شبیه سازی های تا حدودی دقیق هست. یعنی مثلا فرض کن موتور سبکی برای شبیه سازی هایی هست که نیاز نباشه خیلی دقیق باشه و سریع باشه. خب این خیلی خوبه ولی یکسری مشکلاتی بوجود میاد. برای رفع این مشکلات به نظرم سعی کن قطعات ریزی نداشته باشه. یا در نهایت Geometry Representation رو روی concave بذار یا روی همون convex hull یکسری از پارامترهارو باید تغییر بدی. این کارها خیلی بیشتر سیستم رو درگیر میکنه آرش ممنون از حضورت عزیز

مرسی ناصر. مقاله خیلی خوبی و جالبی رو تدارک دیدی. منتظر مقالات این شکلی بعدیتم هستیم...

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

مهدی هادی
5 سال پیش

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

ممنون هادی جان. تشکر از حضورت

نبی سروی
5 سال پیش

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

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

yousef barzgar
5 سال پیش

خیلی خوب و روان بود مرسی واقعا خسته نباشید...

ممنون یوسف جان لطف داری عزیز موفق باشی

عالی بود ناصر جان خسته نباشی

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