موتور فیزیک physics Engine

موتور فیزیک یک برنامه ی کامپیوتری است که یک شبیه سازی تقریبی از سیستم های فیزیکی خاص مثل Rigid Body Dynamics و Soft Body Dynamics و Fluid Dynamics و … در حوزه ی بازی های کامپیوتری و فیلم ها را فراهم می کند .

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

۱ . موتور های Real Time
۲ . موتور هایی با دقت بالا یا High Precision

موتور های High Precision به قدرت پردازشی بسیار بالایی برای محاسبه ی بسیار دقیق فیزیک نیاز دارند و معمولآ توسط دانشمندان و جلوه های ویژه در فیلم ها و … مورد استفاده قرار می گیرند .

موتور های Real Time که بیشتر در بازی های کامپیوتری مورد استفاده قرار می گیرند به نسبت موتور های High Precision به قدرت پردازشی کمتری نیاز دارند و محاسبات را ساده تر انجام می دهند و از دقت کمتری برخوردارند ، اما ذکر این نکته ضروری است که استفاده از این نوع موتور برای بوجود آوردن یک حالت تعادلی بین بازی و فیزیک و روانی گیم پلی و فریم ریت در بازی ضروری است و اگر قرار بود که در بازی ها از موتور های High Precision استفاده می شد ، قدرتمند ترین کارت های گرافیک حال حاظر هم از پردازش فیزیک بازی عاجز بودند .

Scientific engines

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

از سال ۱۹۸۰ به بعد موتور های فیزیک به عنوان یکی از اساسی ترین قسمت ها در ابر کامپیوتر ها برای مدل سازی های دینامیک و سیالات محاسباتی مورد استفاده قرار می گرفت .
از آنجایی که پردازش های فیزیک به سرعت و قدرت بسیار بالایی نیاز دارند ، پردازنده های ویژه ایی به نام Vector برای کامپیوتر ها ساخته شد تا این پردازش ها را انجام دهند .
تکنیک های فیزیکی که این پردازنده ها قادر به پردازش آنها بودند عبارتند از پردازش الگو های آب و هوا در هوا شناسی ها ، الگو های باد و آب برای ساخت هواپیماها و قایق ها و همچنین خنک کننده های حرارتی برای بهبود هیت سینک ها بود.

Physics Processing Unit یا به اختصار PPU یک ریزپردازنده (Microprocessor) است که به صورت اختصاصی فقط برای رسیدگی و پردازش محاسبات فیزیک به خصوص در موتور های فیزیک برای بازی ها ساخته شده است .
به عنوان مثال شبیه سازی های فیزیکی که یک PPU قادر به انجام آنهای می باشد عبارتند از: rigid body dynamics ، soft body dynamics ، collision detection ، fluid dynamics و شبیه سازی های مو و لباس و شکستن و تخریب اجسام و …
هدف اصلی از ساخت PPU این بود که بار پردازشی شبیه سازی های فیزیکی از روی دوش CPU برداشته شود و به PPU واگذار شود .

اولین پردازنده ایی که به عنوان یک PPU ساخته شد ، توسط شرکتی به نام AGEIA ساخته شد و Physx Chip نام گرفت .
در سال ۲۰۰۸ انویدیا شرکت AGEIA را خریداری کرد و طی مرور زمان قابلیت پردازش فیزیک توسط PPU و GPU ها خوده انویدیا را در سیستم هایی که GPU های AMD/ATI به عنوان GPU اصلی در حال کار بودند را برداشت .
با انجام این کار به نظر می رسید که تکنولوجی Physx به صورت ۱۰۰% در انحصار انویدیا در آمده است اما بعدآ انویدیا اعلام کرد که تکنولوجی Physx را به صورت یک استاندارد باز برای استفاده همگان در خواهد آورد .

با گذشت زمان و پیشرفت فوق العاده GPU ها و به لطف استفاده از فناوری General-Purpose Computing on Graphic Processing Units یا به اختصار GPGPU باعث شد یک GPU بسیار مناسب تر از یک PPU برای پردازش های فیزیکی به نظر آید .

GPGPU به واحد های پردازش گرافیکی این امکان را می دهد که بعضی از کارهایی را که فقط واحد های پردازشی مرکزی قادر به انجام آنها بودند را در اختیار بگیرند ، GPU ها به نسبت CPU ها در پردازش های گرافیکی بسیار بسیار سریع تر هستند .

اکنون که با تاریخ پردازش های فیزیک در برنامه های کامپیوتری و انواع موتور های فیزیک آشنا شدیم ، می پردازیم به مبحث فیزیک در بازی های کامپیوتری که مبحث اصلی تاپیک نیز همین موضوع است .

Game Engines

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

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

به صورت کلی تمام شبیه سازی هایی فیزیکی که در حوزه ی بازی های رایانه ایی و فیلم ها و … استفاده می شود جزء دو دسته ی اصلی شبیه سازی های Rigid Body و Soft Body است .
در شبیه سازی های Rigid Body ممکن است که چندین شیء زیر مجموعه ی یک شیء اصلی شوند و حرکاتی که شیء اصلی انجام می دهد بر اساس زیر مجموعه های آن شیء تعیین شود ، اما در شبیه سازی Soft Body ممکن است که بر روی قسمت های مختلف یک جسم شبیه سازی ها گوناگونی انجام شود که هر قسمت آن جسم حرکات مربوط به خود را داشته باشد .

Rigid-Body Dynamics

تمرکز اصلی تکنیک فیزیکی Rigid Body در بازی های رایانه ایی بر روی حرکات قسمت های به هم پیوسته بدن و یا یک شیء تحت تاثیر نیرو های وارده است .
وقتی که می گویند یک چیز Rigid است ، بدان معنی است که آن چیز تحت عمل نیروی های وارده بر آن تغییر شکل نمی دهد و از حالت اصلی خود خارج نمی شود ، به عنوان مثال تکنیک Ragdoll بر اساس این تکنیک می باشد که بعدآ به آن اشاره می شود .


اسکلت داخلی کاراکتر به عنوان یک جسم Rigid در نظر گرفته می شود

Soft-Body Dynamics

تکنیک فیزیکی Soft Body همانطور که از اسمش پیداست شبیه سازی بسیار واقع گرایانه از حرکات نرم اجسام و اشیاء مختلف در حوزه ی بازی های رایانه ایی و فیلم ها است .
بر خلاف تکنیک Rigid Body شکل اجسامی و چیز هایی که تکنیک Soft Body در آنها استفاده می شود قابل تغییر است ، این بدان معنی است که فاصله نسبی بین دو نقطه بر روی یک جسم ثابت نیست .
دامنه یتکنیک Soft Body به نسبت تکنیک قبلی بسیار گسترده تر است که این دامنه شامل شبیه سازی قسمت های نرم از عضوی از بدن مثل ماهیچه ها و عضلات بدن ، چربی ، مو و گیاهان و … و همچنین شبیه سازی های بعضی از اجسام دگریس پذیر مثل لباس و پارچه و … است .
این شبیه سازی ها چون به صورت Real Time انجام می شوند ، سعی می شود تا حدودی زیادی واقع گرایانه باشند ، بر خلاف موتور های High Precise که این شبیه سازی ها توسط آنها بسیار بسیار زیبا و کاملا واقعی انجام می شوند .

در تصاویر زیر شبیه سازی پارچه را مشاهده می کنید ، همانطور که در تصاویر مشاهده می کنید ، پارچه یک شیء دگریس پذیر است که تحت تاثیر نیرو هایی که به آن وارد شده است حالت اولیه خود را از دست داده است ، علاوه بر آن پارچه با جسم Rigid ( منظور ماشین و یا حروف ) که بر روی آن قرار دارد نیز تعامل بر قرار کرده است که این تعاملی که بین پارچه و ماشین برقرار شده است نیز تکنیک Collision Detection است که بعدآ به آن اشاره می شود .

Fluid Dynamics

به صورت خلاصه از این تکنیک به صورت گسترده برای شبیه سازی سیالات ( مایعات و گازها ) استفاده می شود .

Collision detection

در داخل محیط بازی اشیاء مختلف با یکدیگر ، با محیط و بازیکن و … تعامل برقرار می کنند ، اگر Collision Detection داخل یک محیط وجود نداشته باشد اگر به عنوان مثال جسمی به سمت دیواری پرتاب شود ، چون Collision وجود ندارد ، آن جسم از داخل دیوار رد می شود و یا اگر دو جسم به سمت یکدیگر پرتاب شوند به جای برخورد با یکدیگر ، از داخل یکدیگر رد می شوند .
موتوری که در اینجا وظیفه ی رندر کردن را بر عهده دارد هیچی تشخیصی از اینکه دو جسم جامد باید با یکدیگر برخورد کنند ندارد و به همین دلیل دو جسم از درون یکدیگر رد می شوند .

در اکثر بازی های رایانه ایی یکی از مشکلاتی که باعث می شود بازیکن از بازی کردن دست بکشد که اکثرآ هم با نام باگ یاد می شود همین مشکل Collision Detection است ، زمانی که به عنوان مثال در یک بازی شوتر فضایی یک شهاب سنگ به سفینه ی بازیکن برخورد می کند ، باید پس از برخورد متلاشی شود و یا سفینه را متلاشی کند ، مسلمآ در اینجور مواقع اگر شهاب سنگ از داخل سفینه رد شود بدون اینکه حتی یک خط هم به سفینه بیفتد چه حسی به بازیکن دست می دهد ؟

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

[Only registered and activated users can see links.
]

به طور معمول برای هر شیء سه بعدی داخل بازی دو حالت در نظر گرفته می شود ، حالت اول که شکل ظاهری شیء مورد نظر می باشد ، به عنوان مثال یک گلدان همراه با دستگیره هایش ، و حالت دوم که یک حالت نامرئی برای شناساندن شیء به موتور فیزیک می باشد که موتور فیزیک آن گلدان را به عنوان یک استوانه ی بسیار ساده شناسایی می کند.
در این حالت غیر ممکن است که بتوان به عنوان مثال یک میله و یا یک گلوله را از بین دسته های گلدان رد کرد ، زیرا موتور فیزیک در حالت پیش فرض آن گلدان را به عنوان یک استوانه ی کاملآ ساده می شناسد و از دسته های گلدان در این حالت خبری نیست و توسط موتور شناسایی نمی شود .

همچنین به حالت نامرئی ای که برای شناساندن یک شیء به موتور فیزیک در نظر گرفته می شود هندسه برخورد یا Collision Geometry می گویند ، این حالت نامرئی ممکن است که به شکل یک جعبه ، یک استوانه ، یک دایره و … باشد .

موتورهایی که به صورت پیش فرض برای شناسایی اجسام و اشیاء در داخل محیط بازی و همچنین Collision Detection از حالتی به شکل جعبه (مربع و یا مستطیل) و یا دایره استفاده می کنند به عنوان ساده ترین موتور های فیزیک در نظر گرفته می شوند .
به عنوان مثال شما یک گلدان را در نظر بگیرید که بر روی میزی قرار دارد و شکل هندسی که موتور فیزیک برای شناسایی این گلدان استفاده می کند مربع است ، زمانی که ضربه ایی به این گلدان زده می شود و گلدان از روی میز به روی زمین می افتد به دلیل شکل مربعی که موتور فیزیک برای شناسایی گلدان استفاده می کند کاملآ ساده بر روی زمین می افتد و پس از برخورد با زمین به دلیل چهار گوش بودن مربع به همان شکل باقی بماند و تکان نخورد و هر چقدر که شما بیشتر به گلدان ضربه بزنید به دلیل حالت مربعی گلدان تغییر در نحوه ی قرار گیری گلدان بر روی زمین بوجود نمی آید و فقط ممکن است که گلدان از جایش جابه جا شود .

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

Collision Resolution/Response

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

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

این دسته از واکنش ها که یکی از پیچیده ترین و شایع ترین واکنش هایی است که باید در یک بازی اتفاق بی افتد Collision Response نام دارد .

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

اگر Collision Response وجود نداشته باشد ، دو تا توپ پس از برخورد با یگدیگر بدون اینکه یکدیگر را دفع کنند به روی زمین می افتادند .
حال اگر قانون جاذبه یا Gravity در بازی وجود داشته باشد ، دو توپ پس از برخورد با یکدیگر بر روی زمین می افتند ، اگر جاذبه وجود نداشته باشد ، توپ ها پس از برخورد به همان حالت بر روی هوا باقی می ماندند .

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

Particle System

اصطلاح سیستم ذرات یا Particle System به یک تکنیک گرافیکی در کامپیوتر اشاره دارد که در آن با استفاده از ذرات بسیار بسیار ریز برای شبیه سازی یک سری پدیده های به اصطلاح Fuzzy که با استفاده از رندر های معمولی بسیار دشوار یا غیر ممکن است استفاده می کنند به عنوان مثال آتش ، انفجار ، آب در حال حرکت ( مثل آبشار ) ، جرقه ها ، برگ های درختان ، ابر ها ، برف ، مه ، گرد و خاک ، دنباله ی حرکات شهاب سنگ ها و ستارگان و یا جلوه های بصری مثل درخشش یک مسیر از راه و … و … .

این ذرات معلق یا همان Particle ها پس از استفاده به سرعت محو می شوند و دوباره به سرعت از منبعشان ساطع می گردند .

همچنین از این تکنیک برای شبیه سازی اجسام و یا اشیاء ایی که از رشته ها و یا لایه های بسیاری زیادی پدید آمده اند نیزاستفاده می شود به عنوان مثال مو و یا پشم و یا علف ها و … که در این حالت از ذرات Particle برای شبیه سازی تمام منطقه و یا قسمتی از منطقه مورد استفاده قرار می گرد ، به عنوان مثال شما یک مزرعه را در نظر بگیرید ، در این حالت غیر ممکن است که حرکت تک تک رشته های علف ها در مزرعه را به صورت مستقل از هم شبیه سازی کنند ، در این حالت شبیه سازی حرکت علف ها برای تمام منطقه و یا قسمتی بزرگی از منطقه در نظر گرفته می شود ، به همین دلیل است که شما وقتی به مزرعه نگاه می کنید ، مشاهده می کنید که به عنوان مثال تمام علف ها با یکدیگر با یک ریتم مشخص حرکت می کنند .

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

ذرات پارتیکل که از یک Emiter ساطع می شوند دارای پارامتر های مختلفی می باشند ، یکی از این پارامتر ها spawning rate ( به تعداد ذراتی که در یک بازه زمانی خاص از منبع ساطع می شوند ) است و یکی دیگر از پارامتر ها velocity vector ( جهتی که ذرات از منبع ساطع می شوند ) است و یکی دیگر از پارامتر ها particle lifetime ( مدت زمانی که طول می کشد تا هر یک از ذرات پس از ساطع شدن ناپدید شوند ) است و همچنین بسیاری از پارامتر های دیگر مثل رنگ ذرات ساطع شده و … .

مقداری که برای پارامتر های هر یک از Emiter ها در نظر گرفته می شود به جای یک مقدار دقیق عددی ، یک مقدار به اصطلاح Fuzzy است ، به عنوان مثال مقدار زمانی که طول می کشد تا ذرات Particle پس از ساطع شدن از منبع ناپدید شوند به جای مثلآ ۱ یا ۲ ثانیه ، ۵۰ فریم و یا بیشتر است .
هر چقدر که میزان ذرات Particle ساطع شده از Emiter ها بیشتر باشد ، رندر این ذرات نیز سخت تر می شود و اگر سخت افزاری که اقدام به رندر ذرات می کند ضعیف باشد ، افت پرفورمنس و فریم در این حالت مشاهده می شود .

در داخل یک محیط در یک بازی تعداد بسیار زیادی Emiter وجود دارد که از آنها ذرات Particle ساطع می شوند .
برخی از این Emiter ها به طور یکنواخت در یک بازه ی زمانی خاص شروع به ساطع کردن ذرات Particle می کنند و برخی دیگر از Emiter ها تنها زمانی اقدام به ساطع کردن ذرات می کنند که شرایطی که به طور پیشفرض برای آنها در نظر گرفته شده مهیا شود ، به عنون مثال زمانی که یک ساختمان تخریب می شود و بر روی زمین فرو می ریزد و گرد و غبار و … در فضا پخش می شود ، شما به یک باره مشاهده می کنید که فریم بازی افت پیدا می کند و پس از مدتی دوباره فریم به حالت قبلی باز می گردد ، این افت فریم به این دلیل است که وقتی ساختمان تخریب می شود ، Emiter هایی که برای تخریب ساختمان در نظر گرفته شده اند به یک باره اقدام به آزاد کردن میلیون ها میلیون ذره ی Particle در فضا می کنند و در این حالت مقدار فشار وارد شده به سخت افرار برای رندر این ذرات بسیار زیاد می شود و افت پرفورمنس مشاهده می شود ، پس از اینکه ذرات به مرور زمان ناپدید می شود ، فشار وارده به سخت افزار کمتر می شود و فریم به حالت قبل بر می گردد .

Brownian motion

در دنیا واقعی قوانین فیزیک همیشه حاکم و پابرجا است ، در دنیا واقعی تمام ذرات Particle موجود در اطراف ما حرکات براونی انجام می دهند و همیشه هم فعال هستند .
(به حرکات تصادفی ذرات معلق یا همان Particle ها در یک سیال ( مایع یا گاز ) در اثر برخورد با اتم ها و یا مولکول ها در گاز ها و یا مایعات حرکات براونی می گویند .)
اما در دنیا بازی های رایانه ایی فعال بودن این حرکات و ذرات به صورت دائمی جز فشار اظافی به CPU و افت پرفورمنس چیز دیگری در پی ندارد .

در این حالت آن شیء مورد نظر در بازی به حالت غیر فعال قرار می گیرد و اگر به عنوان مثال در یک بازه ی زمانی خاص ، مسافتی مشخصی از مسیر را طی نکند ، شبیه سازی فیزیکی بر روی آن شیء انجام نمی شود ، به عنوان مثال اگر یک کاغذ که بر روی زمین قرار دارد تحت تاثیر هیچ نیرویی قرار نگیرد همان حالت سکون خودش رو حفظ می کند ، اما اگر به عنوان مثال تحت تاثیر باد قرار بگیرد و مثلآ مسافت یک متر را در کمتر از ۲ ثانیه طی کند ، باز هم شبیه سازی فیزیکی بر روی کاغذ انجام نمیگرد و کاغذ فقط از جای خود جابه جا می شود ، اما اگر کاغذ تحت تاثیر باد قرار بگیرد و مدت زمانی که کاغذ در هوا شناور می شود از ۲ ثانیه بیشتر شود ، مشاهده می کنید که شبیه سازی فیزیکی بر روز کاغذ انجام می شود و کاغذ در هوا پشت و رو می شود و به اشکال مختلف در میاد و … .

مثال دیگری که در این باره می شود به آن اشاره کرد ، افتادن برگ درختان می باشد و همچنین گرد و غبار هنگام تخریب یک ساختمان و یا سوختن یک تکه چوب و آتش و … اشاره کرد .

حرکات براونی در بین ذرات Particle ها باعث می شوند که این ذرات در هربار ساطع شدن از Emiter به صورت کاملآ تصادفی در آن محدوده ایی که برای آنها در نظر گرفته شده است به اطراف حرکت کنند که باعث می شود به عنوان مثال یک آتش همیشه به یک صورت نسوزد و یا گرد و غبار حاصل از تخریب یک ساختمان همیشه به یک شکل به هوا بلند نشود و … .

Ragdoll physics

در برخی از موتور های فیزیک کامپیوتری ، فیزیکی به نام Ragdoll وجود دارد که جایگزینی برای انیمیشن های سنتی مرگ کاراکتر ها در یک بازی کامپیوتری و … است .

در بازی های کامپیوتری قدیمی ، زمانی که یک کاراکتر می مرد ، انیمیشنی که برای مردن این کاراکتر در نظر گرفته می شد یک حالت از قبل طراحی شده و بسیار مصنوعی بود ، اما یکی از نکات مثبت این انیمیشن های از قبل طراحی شده این بود که مقدار فشاری که به CPU برای پردازش داده های مرگ این کاراکتر وارد می شد بسیار کم بود .

زمانی که قدرت ساخت افزار ها و CPU ها افزایش پیدا کرد ، شبیه سازی فیزیکی مرگ کاراکتر ها به صورت Real Time در مدت زمان محدودی ممکن شد .

در این حالت برای هر کاراکتر یک اسکلت داخلی طراحی می شد که هر یک از استخوان ها بویسله ی مفصل ها به دیگر استخوان ها متصل می شد که حرکت هر یک از استخوان ها بویسله ی مفاصلی که استخوان ها را به یکدیگر متصل ساخته اند ، از یک استخوان به استخوان دیگر منتقل شود ، درست مانند استخوان های بدن یک فرد اما به صورت بسیار ساده تر .

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

در این حالت به اسکلت داخلی که برای کاراکتر طراحی می شود Ragdoll می گویند .


یک طرح بسیار ساده و اولیه از اسکلت داخلی یک کاراکتر

اولین بازی که در آن از فیزیک Ragdoll استفاده شده بازی Jurassic Park بود که هر چند به علت باگ های متعدد و مشکلاتی که داشت مورد توجه قرار نگرفت ، اما به عنوان اولین بازی که تکنیک جدیدی از فیزیک را وارد بازی های کامپیوتری کرد جای تقدیر و تشکر دارد .

فیزیک Ragdoll که امروزه در بازی های کامپیوتری مورد استفاده قرار می گرد ، بسیار بسیار فراتر از شبیه سازی مرگ کاراکتر ها است .
در بازی های سبک مبارزه ایی مثل Mortal Kombat نیز از این فیزیک به صورت بسیار گسترده تری مورد استفاده قرار می گیرد ، در این حالت بازیکن کنترل یک قسمت از بدن کاراکتری که در حال مبارزه است را در دست می گیرد و بقیه قطعات بدن کاراکتر به دنبال همان قسمتی از بدن که بازیکن کنترل آن را در دست دارد حرکت می کنند .

Projectile

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

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

 

منبع: http://www.overclockingheroes.com

4 نظر در “موتور فیزیک physics Engine”

  1. سلام خیلی خیلی خیلی سایت خوبی دارید
    می خواستم سوال کنم چطوری می تونم از این شبیه ساز فیزیک استفاده کنم ؟
    البته در موتور انریل این شبیه ساز اماده هست
    اما می خواستم بدنم جدا از پروژه بازی سازی مثلا میشه در نرم افزار
    ویژوال استدیو سی پلاس پلاس استفاده کرد ؟
    در واقع یه APi هست ؟ مثل Open Gl هست ؟

    1. با سلام
      استفاده از هرگونه حالت گرافیکی در برنامه نویسی از زبان های شی گرا مانند C و C++ استفاده میشه و باید شما این زبان هارا یاد بگیرید
      موتورهای موجود در سایت همه دارای فیزیک حرفه ای هستند و فیزیک سری موتورهای گورو بسیار پیشرفت کرده

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

بستن
قالب وردپرس