virtual reality یا واقعیت مجازی

موازی

کاربر نیمه‌حرفه‌ای
ارسال‌ها
235
امتیاز
4,282
نام مرکز سمپاد
سمپاد شیراز
شهر
شیراز
سال فارغ التحصیلی
93
دانشگاه
RWTH
رشته دانشگاه
مهندسی برق
این یک پیش نویس درمورد واقعیت مجازی هست که به مرور تکمیل میشه. لطفا پست نذارین. فیدبک هاتونو میتونین پ.خ. کنین. با تشکر
واقعیت مجازی اصلا چی هست؟
واقعیت مجازی دنیایی هست که توسط کامپیوتر تولید شده و کاربر میتونه باهاش تعامل داشته باشه و از طریق حواس طبیعی ش باهاش کار کنه.
خب این دنیای کامپیوتری مثلا چه جور دنیایی میتونه باشه؟
میتونه دقیقا شبیه دنیای واقعی ما باشه و با همون قوانین فیزیکی، یا دنیاها و ساختمون هایی که قبلا در گذشته وجود داشتن و الان از بین رفتن، دنیایی که واقعا نمیشه بهش وارد شد مثلا داخل بدن انسان یا داخل کره زمین و حتی دنیاهای خیالی که هیچ کدوم از قوانین دنیای ما توش صدق نمیکنه.
کاربر میتونه دقیقا وارد این دنیای کامپیوتری بشه و با اشیای مجازی ارتباط برقرار کنه. اشیا کاملا سه بعدی هستن و مود های دیگه هم تو این دنیا وجود داره. مثلا صوت، بو و حرکت کردن در این دنیای کامپیوتری کاملا ممکن هستند.
اصل مهمی که تو واقعیت مجازی هست اینه که کاربر توسط این دنیای مجازی کاملا احاطه شده و واقعا فکر میکنه که در اون دنیا هست. به این اصل immersion گفته میشه. به عنوان مثال صندلی ای که تو این دنیای کامپیوتری وجود داره، به این صورت هست که کاربر بتونه روش بشینه. پس واقعیت مجازی خوب در واقع یک توهم خوب هست که دنیای کامپیوتری از دنیای واقعی قابل تمایز نباشه.
دنیایی که در فیلم ماتریکس ساخته میشه مثالی از یک واقعیت مجازی خوب هست که کاملا شبیه دنیای واقعی هست و حتی در بعضی موارد قابل تمایز نیست اما مسلما دنیای واقعی نیست!

خب تو معرفی واقعیت یه مثلث i داریم که خیلی معروفه و اضلاع اون اینا هستن: immersion, imagination و interaction. این مثلث میگه که سه جز اساسی برای اینکه واقعیت مجازی داشته باشیم چیا هستن.
immersion که خدمتتون عرض کردم. بریم سراغ دو ضلع دیگش. interaction هم بیشتر به این مربوط میشه که واقعیت مجازی این امکان رو بهمون بده که با اشیا تعامل کنیم؛ مثلا جابه جاشون کنیم. برای اینتاکشن داشتن با اشیا نیاز داریم که از یه سری دم و دستگاه یا دیوایس استفاده کنیم. مثلا کنترلر یا دستکش یا از این دیوایس هایی که توی ایکس باکس واسه دنبال کردن حرکات بدن استفاده میکنن.(اسمشو نمیدونم :D) درمورد imagination هم خیلی خلاصه بگم که تصور سه بعدی از اشیا بهمون بده و بتونیم مود های دیگه رو هم داشته باشیم.

خب بریم سراغ روش هایی که در حال حاضر سعی کردن واقعیت مجازی رو ایجاد کنن.
۱. این صفحه نمایش هایی که روی سر قرار میگیرن رو حتما دیدین و ممکنه ازش استفاده هم کرده باشین. این صفحه نمایش ها خیلی قدیمی هستن و اولین بار تو سال ۱۹۶۵ ساخته شدن که داستانشو بعد تر میگم.
۲. غار یا CAVE: به صورت یه اتاقک مستطیلی با سه دیوار هست که یکی از دیواره هاش برای رفت و آمد برداشته شده. شما میتونین با عینکتون تو این غار راه برین و چیزهای مختلف سه بعدی رو بررسی کنین ولی کسی که از بیرون داره شما رو تماشا میکنه فقط یک سری تصویر دو بعدی میبینه. بعضی از غارها دیواره ی چهارم هم دارن که به کاربر بیشتر حس واقعیت مجازی رو میدن.
درمورد عینک های واقعیت مجازی یه توضیح علمی کوتاه میدم. توی این عینکا دو تا اصل باید رعایت شه. ۱- Stereo parallax و ۲- Motion parallax. اولی مربوط به اینه که ما دو تا چشم داریم که با هم حرکت میکنن و در طراحی این عینک ها باید به این نکته و ویژگی های چشمی دقت شه. مورد دوم هم مربوط به اینه که وقتی جسمی رو داریم و حرکت میکنیم ممکنه زاویه های مختلفی از اون رو ببینیم. مثلا اگه یه مکعب رو به رومون باشه اگه سرمون رو یکم بچرخونیم باید وجه دیگش رو با زاویه ببینیم و نه صاف و یکنواخت!

خب آدمای مختلف تو این حوزه تعریف های مختلفی از واقعیت مجازی اراءه دادن و چیز مشترکی که تو همشون پیدا کردم اینا بوده: سه بعدی، محیطی که توسط کامپیوتر تولید شده، قابل تعامل

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

خب تو بحث های واقعیت مجازی ۳ تا اصطلاح داریم که نباید با هم قاطیشون کنیم: ۱- سیستم واقعیت مجازی: همون سخت افزار و نرم افزار هایی که واقعیت مجازی رو فراهم کردن.
۲- دنیای مجازی: محتوایی که توسط واقعیت مجازی تولید میشه رو بهش میگیم دنیا. مثلا اشیا و نحوه قرار گیری شون.
۳- محیط مجازی: ترکیب دو تای قبلی یعنی سیستم و محتوا رو میگیم محیط مجازی.

طیف واقعیت:
یه سر این طیف واقعیت محض هست که میشه دنیای خودمون.
یه سر دیگش واقعیت مجازی هست که تا اینجا گفتم.
این وسط دو تا دنیای دیگم داریم. یکیش واقعیت افزوده (Augmented Reality) هست که یعنی بیایم از اجزای مجازی تو دنیای واقعی استفاده کنیم.
یکی دیگشم مجازیت افزوده(!) (Augmented Virtuality) هست که یعنی تو دنیای مجازی یه سری چیز میز واقعی داشته باشیم مثلا دستای خودمون.
مبحث ما از اونجا که از اسمش معموله واقعیت مجازی هست و نه طیف های دیگه.

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

خب وقتشه که درمورد چالش های واقعیت مجازی هم حرف بزنیم.
اول ساختن دستگاه و رابط های ۳ بعدی و چند مودی. الگوریتم های پیچیده و قوی واقعیت مجازی، قابلیت ریل تایم و بلادرنگ بودن، فیزیک اجسام و هوش انسانی(مثلا بخوایم انسان مجازی بسازیم!)
 
آخرین ویرایش:

موازی

کاربر نیمه‌حرفه‌ای
ارسال‌ها
235
امتیاز
4,282
نام مرکز سمپاد
سمپاد شیراز
شهر
شیراز
سال فارغ التحصیلی
93
دانشگاه
RWTH
رشته دانشگاه
مهندسی برق
توی این پست و پست بعدی میخوام بیشتر درمورد رابط کاربری سه بعدی بگم.
اول بریم سراغ تعریف:
۱- تعامل سه بعدی: از اسمش کاملا مشخصه که چی هست. یعنی کاربر بتونه با کامپیوتر به صورت سه بعدی ارتباط داشته باشه و کارهایی که میخواد انجام بده رو به صورت سه بعدی انجام بده.
و البته تمام اپلیکیشن های سه بعدی لزومانیازی به تعامل سه بعدی ندارن. مثلا ساخت تصویر سه بعدی در نرم افزار های سه بعدی کامپیوتری با بالا و پایین کردن یه سری متغیر ساخته میشه و توی محیط ادیتور توی صفحه نمایش کامپیوتر انجام میشه که همه چیز دو بعدی هست. پس الان که کاربر داره از طریق محیط دو بعدی ادیتور در مانیتور یک تصویر سه بعدی میسازه، تعامل دو بعدی داریم. البته از یه دید دیگه هم میتونیم بهش نگاه کنیم که ما داریم از طریق ماوس و کیبورد توی دنیای واقعی سه بعدی با تصویر سه بعدی تعامل میکنیم. و اگر این دید رو در نظر بگیریم میتونیم بگیم تعامل سه بعدی داریم.
اما تعامل سه بعدی میتونه با ابزار های دو بعدی هم انجام شه. در همین مثال، ورودی ما کرسر هست که به عنوان ورودی دو بعدی در نظر گرفته میشه.
امیدوارم این مثال زیادی پیچیده نشده باشه. :D
۲- رابط کاربری سه بعدی یا همون 3DUI: رابط کاربری ای که تعامل سه بعدی رو ممکن میکنه. این رابط میتونه یه کنترل باشه که دکمه ش رو که فشار میدین بتونین به صورت سه بعدی تعامل داشته باشین.
۳- رابط کاربری مکانی یا Spatial User Interface: رابط کاربری ای به وسیله ی اون میتونیم مستقیما حجم اجسام و فضای سه بعدی رو تغییر بدیم. (جالب شد!)
مثالی که ازش داریم اینه که فرض کنید تصویر سه بعدی(مثلا تصویر سه بعدی الن تو شگفت انگیزان!) ای که گفتم تو مانیتور هست بیاد و توی واقعیت مجازی به صورت سه بعدی حضور پیدا کنه. وسیله ای که بتونیم به وسیله ی اون الن رو تغییر شکل بدیم و مثلا دستاشو دراز کنیم رو میگیم رابط کاربری مکانی.
۴- تکنیک تعامل سه بعدی: روش هایی که کمک میکنن تا تعامل سه بعدی محقق شه رو میگن تکنیک!

اجزایی که تعامل سه بعدی رو میسازن چیان؟
این تکنیک ها شامل سخت افزار ها و نرم افزارهای مورد نیاز برای محقق کردن تعامل هستن.
چه سخت افزاری؟
مثلا دستکش یا کنترل یا دیوایس هایی که توی ایکس باکس واسه دنبال کردن حرکات بدن استفاده میکنن. یا عینک یا صفحه نمایشی که تو واقعیت مجازی روی چشم میذاریم. یک دیوایس جالب دیگم هست به نام هپتیک دیوایس که دیزاینر ها واسه طراحی سه بعدی و پزشک ها در شبیه سازی های پزشکی میتونن ازش استفاده کنن. شاید بد نباشه ویدیوش رو از اینجا ببینید.
این سخت افزار های به دو دسته تقسیم میشن: ورودی (مثل دستکش و کنترل) و خروجی(مثل صفحه نمایش).
چه نرم افزاری؟
نرم افزاری که اطلاعاتی که از طریق سخت افزار به دست اومده رو تبدیل کنه به ورودی مناسب سیستم. مثلا فرض کنید شما با یه تفنگ(سخت افزار ورودی) به هدف مجازی شلیک میکنید و میخواید که چیزی که گلوله ی تفنگ بهش خورده رنگش عوض شه. فهموندن اینکه شما شلیک کردین به اینکه هدف شلیک شده و مثلا رنگش باید عوض شه کاری هست که نرم افزار انجام میده.
هم چنین نرم افزار باید خروجی سیستم رو به خروجی قابل درکی واسه ما تبدیل کنه.
پس این اجزا چیا شدن؟
ما --> دیوایس ورودی -->سیستم --> دیوایس خروجی --> ما
ما هدفمون رو از طریق دیوایس ورودی به سیستم می فهمونیم و سیستم هم از طریق دیوایس خروجی نتیجه رو به ما نشون میده. این خروجی میتونه حتی به صورت صدا، بو یا فشار باشه!
* سیستم توی مثال تفنگ مجازی همون دم و دستگاهی هست که شامل هدف هست و بهش شلیک میکنیم و باید رنگش عوض شه. و خروجی هم تغییر کردن رنگ هست.
متافور های تعامل سه بعدی چین؟
اصلا متافور یعنی چی؟ متافور در لغت یعنی استعاره و تشبیه ولی اینجا استفاده کردن از کلمه ای مثل استعاره واقعا گمراه کنندست. متافور ها روش هایی هستن که به کمک اونا تکنیک های تعامل محقق میشه.
استفاده کردن از دستکش یا هپتیک دیوایس یا کنترل تکنیک های مختلف هستن. مثالی که از متافور میشه زد اینه که واسه اینکه یه شی رو تو واقعیت مجازی بخوایم انتخاب کنیم چه متافور هایی میتونیم استفاده کنیم: یه متافور اینه که اسم شی رو بگیم. متافور دیگه اینه که بهش اشاره کنیم یا لمسش کنیم. متافور دیگه حتی میتونه این باشه که به یک شی نگاه کنیم.
سعی کنید متافور و تکنیک رو اشتباه نگیرید.
خب سوالی که ممکنه پیش بیاد اینه که چرا از متافور هایی که تو دنیای واقعی داریم استفاده نکنیم. مثلا تو دنیای خودمون وقتی میخوایم یه شی رو جا به جا کنیم پا میشیم میریم سمتش و برش میداریم و میذاریم جایی که میخوایم. چرا دقیقا همین سناریو رو تو واقعیت مجازی نداشته باشیم.
جواب اینه که سخته! فیزیکش سخته! ریل تایم بودنش سخته! تشخیص برخورد اشیا به همدیگه اونم به صورت ریل تایم سخته! و البته محدوده. مثلا شی خیلی داغ رو نمیتونیم همینطوری جا به جا کنیم. یا ممکنه بخوایم تغییر شکل در اشیا به وجود بیاریم و یه میله آهنی رو خم کنیم. یا میخوایم دست کنیم داخل بدن انسان مجازی و قلبشو دستکاری کنیم! خب در دنیای خودمون در این مسایل محدودیت داریم.
مساله بعدی هم اینه که ممکنه خسته کننده باشه. فرض کنین میخوایم ۱۰۰ تا شی رو جا به جا کنیم. ۱۰۰ بار باید پا شیم بریم سمتش و برش داریم و بذاریم جایی که میخوایم. خب میتونیم در حالیکه رو صندلی لم دادیم با کنترل اشاره کنیم و تمام.
البته متافور های دنیای واقعی هم کاملا حذف نشدن. میتونیم بگیم دو تا دیدگاه داریم: یکیش دیدگاه نظری هست که دقیقا شبیه سازی حرکات دنیای واقعی هست.
دیدگاه دیگه عملی هست که بیشتر برای حل مسایل ازش استفاده میشه.
 

موازی

کاربر نیمه‌حرفه‌ای
ارسال‌ها
235
امتیاز
4,282
نام مرکز سمپاد
سمپاد شیراز
شهر
شیراز
سال فارغ التحصیلی
93
دانشگاه
RWTH
رشته دانشگاه
مهندسی برق
در ادامه ی بحث تعامل با اشیا در واقعیت مجازی دو مرحله اصلی داریم.
۱- انتخاب اشیا: یعنی شی ای که در ادامه میخوایم باهاش کاری انجام بدیم رو انتخاب و تعریف کنیم.
۲- دستکاری یا منیوپولیشن اشیا: مثلا جابه جا کردن شی یا تغییر دادن مکان و یا جهت شی. حتی ممکنه بخوایم در شکل شی تغییری ایجاد کنیم که خارج از بحث ماست.
مراحل انتخاب شی:
برای اینکه بتونیم شی ای رو انتخاب کنیم لازمه سه مرحله زیر رو دنبال کنیم.
۱- نشان کردن شی: اول باید به وسیله اشاره کردن، یا لمس کردن یا روش های غیر مستقیم مثل صدا کردن شی، بگیم که فلان شی رو میخوایم انتخاب کنیم.
۲- تایید انتخاب: معمولا برای اینکه بگیم شی ای که نشون شده همون شی ای هست که ما میخواستیم باید تایید کنیم. تایید کردن میتونه به صورت صوتی باشه یا فشردن دکمه یا غیره. ممکنه حتی مرحله تایید نداشته باشیم!
۳- فیدبک: فیدبک به معنی بازخورد هست. خب حالا که شما شی رو نشون کردی و تایید کردی که آره همین شی رو میخواستم، سیستم به شما بازخوردی نشون میده که میتونه به صورت شنیدنی یا متنی یا دیدنی و یا فشار وارده باشه.

خب بریم سراغ روش های معمول اشاره کردن
۱- Ray Casting یا پرتاب اشعه و پرتو

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

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

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

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

۵- باز هم تکنیک نور فلش توسعه یافته یا روش IntenSelect(انتخاب مصمم!)
میام و درموردش مفصل توضیح میدم. شاید نیاز به خوندن مقاله باشه.

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

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

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

موازی

کاربر نیمه‌حرفه‌ای
ارسال‌ها
235
امتیاز
4,282
نام مرکز سمپاد
سمپاد شیراز
شهر
شیراز
سال فارغ التحصیلی
93
دانشگاه
RWTH
رشته دانشگاه
مهندسی برق
گفتیم یکی دیگه از روش های نشان کردن شی لمس کردن یا در اصطلاح تاچ کردن هست.
در لمس کردن، کاربر به وسیله ی کنترل یا کرسر یا دست مجازی شی رو لمس میکنه. خب این روش خیلی شبیه به روشی هست که تو دنیای خودمون ازش استفاده میکنیم ولی مشکلش اینه که فقط دردمورد اشیایی کار میکنه که در محدوده ی دسترسی ما هستن.
۱- روش Go-Go
خب اومدن راه حلی ارايه کردن که بتونیم اشیایی که در محدوده دسترسی مون نیستن رو هم لمس کنیم. اگه تونستین حدس بزنین این راه کار چیه؟ درسته! باز هم الن در شگفت انگیزان! هیچی، کافیه این توانایی رو در واقعیت مجازی داشته باشیم که دستامون رو هر چقدر خواستیم دراز کنیم!
به این روش Go-Go گفته میشه. برای اینکار بین بازوی واقعی و بازی مجازی مون یک تابع غیر خطی هست که برای اشیای در محدوده دسترسی مون طول بازو متناسب با فاصله از شی هست(تا اینجا رابطه خطی) و برای اشیای خارج از محدوده فاصیله به صورت توان دو محاسبه میشه. خب خوبی این روش اینه که بهمون محدوده ی بیشتری برای دسترسی میده اما اگه یادتون باشه دستای الن هم محدودیت داشتن و تا بینهایت نمیتونستن دراز شن. تو روش Go-Go هم بالاخره تا جایی میتونیم بازو مجازی رو دراز کنیم. و مشکل دیگه ای هم که داریم اینه که وقتی دستمون رو خیلی دراز کنیم کنترل کردنش یکم سخت میشه و خیلی دقیق نیست. یعنی ممکنه راحت از دستمون در بره.

۲- روش HOMER
تو این روش دست مجازی مون از بدنمون جدا میشه و میره سمت شی، شی رو لمس میکنه و برمیگرده سر جاش! البته اول شی به کمک روش پرتاب اشعه انتخاب میشه و بعد دست به سمت اون شی ای که انتخاب کرده حرکت میکنه.

۳- روش Voodoo Dolls
اینجا برعکس روش قبل، یه کپی از شی به سمت دست ما حرکت میکنه و ما لمسش میکنیم و بعد میفرستیمش سر جاش!
تو این روش اومدن این امکان رو هم در نظر گرفتن که از هر دو تا دستامون استفاده کنیم. مثلا با دست چپ یه شی عروسکی رو بگیریم و با دست راست کلاهشو بچرخونیم. تو این روش سایز یا فاصله جسم اهمیتی نداره اما کار کردن با دو دست چالش های زیادی رو واسه تولید کننده ممکنه ایجاد کنه.
میتونید یه نمونه ویدیو از این روش تو یوتیوب از اینجا ببینید.

۴- روش World in Miniature یا ویم یا دنیا با ابعاد کوچک
خب تو این روش یه نسخه کوچیک از محیط ایجاد میکنیم که راحت بتونیم اشیا توش رو جا به جا کنیم. جا به جایی ها تو این نسخه کوچیک شده مستقیما تو دنیای اصلی هم اعمال میشن. مثلا فرض کنید یه خونه اسباب بازی از اتاقتون داشته باشید و همه وسایل عین همون وسایل اتاقتون باشه. اگه بخواین تو اتاقتون تخت رو جا به جا کنید شاید خیلی راحت نباشه. اما توی این خونه کوچولو خیلی راحت میتونید همه چیزو جا به جا کنید.
البته این روش مشکلی هم داره که ممکنه خیلی دقیق نباشه. خب وقتی تخت رو تو ابعاد کوچیک ۱ میلیمتر جا به جا کنید ممکنه تو ابعاد واقعیش ۱ متر جا به جا شه که و اگه ۲ یلیمتر جا به کنید(خیلی به چشم نمیاد) یهو ۲ متر جا به جا شه و نشه خیلی دقیق فاصله ۱.۵ متری رو تنظیم کرد.
فیلمشو میذارم اینجا
 

موازی

کاربر نیمه‌حرفه‌ای
ارسال‌ها
235
امتیاز
4,282
نام مرکز سمپاد
سمپاد شیراز
شهر
شیراز
سال فارغ التحصیلی
93
دانشگاه
RWTH
رشته دانشگاه
مهندسی برق
توی این پست میخوام درمورد دستکاری کردن یا manipulation شی صحبت کنیم.
اول اینکه منظور از دستکاری کردن یعنی تغییر دادن مکان، جهت یا دفرم کردن شی. ما اینجا فقط درمورد تغییر دادن مکان و جهت صحبت میکنیم. این هم به وسیله عملیات ماتریسی به سادگی قابل انجام شدن هست. کافیه مکان اولیه رو در ماتریس چرخش ضرب کنیم یا با میزان جابه جایی جمع کنیم.

۱- روش Simple Grasping یا گرفتن ساده
این روش کاملا شبیه انتخاب شی هست که تو مرحله قبلی گفتیم. اول شی رو نشون میکنیم، بعد تایید میکنیم که گرفتیمش (اینجا شی میاد میچسبه به دیوایس ما) و بعد جابه جایی رو اعمال میکنیم و در نهایت هم به اندازه ای که میخواستیم میچرخونیمش.
نکته ای که هست اینه که ممکنه میزان جابه جایی واقعی و مجازی با هم فرق داشته باشن. مثلا تو روش ویم که ابعاد کوچیک شده هست باید میزان جا به جایی اسکیل بشه و اگه تو ویم ۰.۵ سانت جا به جا میکنیم، در واقع ۰.۰۰۵ * ۱۰۰=۵۰ سانت جا به جا شه.
اما چرخش به همون اندازه ای که داشتیم میمونه.
خب احتمالا این روش یکم خسته کننده به نظر برسه. شما باید با دیوایس یا کنترلر شی رو انتخاب کنین ولی روش های دیگه ای هم هستن که طبیعی تر هستن و شما با دستتاتون میتونین کار کنین.
دیوایس هایی که تو این روش ها استفاده میشه طبیعی تر از کنترل هستن. میتونه دستکش باشه، سنسور هایی که به دست متصل میشن باشه، یا ردیابی انگشت ها به کمک کامپیوتر ویژن باشه. دیوایس دیگه ای که هست ردیابی انگشت ها به کمک دوربین های ماورا سرخ هست که بهش میگن Leap Motion.
بریم سراغ روش ها:

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

۳- روش گرفتن فیزیکی
این روش در واقع میاد تلاش میکنه که عملیات گرفتن رو شبیه سازی کنه. میاد تو کامپیوتر خیلی هندسی و دقیق یه دست میسازه که از نظر محاسباتی خیلی هم سنگین هست و به کمک فیزیک دست، عملیات گرفتن رو تو کامپیتر شبیه سازی میکنه. تو این روش باید بتونیم برخورد اجسام با دست شبیه سازی شده رو از نظر فیزیکی پیاده سازی کنیم و حتی درمورد وزن جسم یه فیدبکی به فردی که جسم رو گرفته بده.
نکته جالبش اینه که اگه دقت کرده باشین وقتی شما با انگشت هاتون به چیزی فشار میارین شکل پوست هم تغییر میکنه و فشرده میشه. این روش(در حالت ایده آل) میاد حتی شکل پوست رو هم تغییر میده.

۴- روش گرفتن به کمک هندسه
روش گرفتن فیزیکی خیلی ایده آل بود و راستش هنوز امکان پیاده سازی واسش نداریم. روش جایگزینی که براش داریم روش هندسی هست.
تو این روش دست رو به صورت ساده شده تری نسبت به روش فیزیکی پیاده سازی میکنیم. به جای اینکه سعی کنیم یه دست کامل رو شبیه سازی کنیم، فقط یه سری نقاط اصلی رو برمیداریم. (میتونم بگم مثل اینه که از یه سیگنال پیوسته، نمونه برداری کنیم) خب این روش به محاسبات کمتری نیاز داره. این روش ترید آفی هست بین اینکه چقدر از نظر فیزیکی دقیق هستیم و محاسبات لازم.
سه روش برای پیاده سازی گرفتن هندسی داریم:
(واقعا توضیح دادنشون سخته. میتونید اسکیپ کنید و البته اتفاقی نمیفته.)
۱- گرفتن بر اساس نظریه آتامتا یا Automata based Grasp
خوبه که درمورد نظریه آتامتا مطالعه داشته باشم!
این روش ۳ استیت اصلی داره. استیت اول وقتی که دست آزاد هست و سنسور های دست فعال نیستن. بعد شی میاد میخوره به دست شبیه سازی شده. در این زمان وارد استیت ۲ میشیم و همه ی سنسور ها شروع به فعال شدن میکنن و عملیات گرفتن شروع میشه. در صورتی که انگشت ها حالت <<گرفتن>>به خودشون بگیرن (وقتی میخوایم چیزی تو دستمون بگیریم انگشت ها رو چه فرمی میکنیم؟) و وارد استیت ۳ میشیم که بهش میگن <گرفتن امن> و شی کاملا در دست های ما هست و همه سنسور ها هم فعالن. حالا اگه بخوایم شی رو ول کنیم چی میشه؟ همه این مراحل واروونه میشن. اول از استیت <گرفتن امن> انگشت هامونو شروع میکنیم به باز کردن و میریم به استیت ۲ که <آغاز گرفتن> بود و بعد شی از دستمون جدا میشه و <دست آزاد> میشه و میریم استیت ۱.

۲- روش صفحه کروی یا Spherical Plane
تو این روش فرض میکنیم که جسم کروی هست یا اگه شکل دیگه ای داره یه کره بهش محاط میکنیم. و با ۳ تا انگشت هم کار میکنیم. این ۳ تا انگشت با همدیگه تشکیل یه مثلث میدن. هر مثلث رو میتونیم با بردار نرمالش مشخص کنیم. وقتی جسم رو جابه جا میکنیم یا تغییر جهت میدیم بردار نرمال مثلث جدید و مثلث قبلی باید با همدیگه مچ شن تا میزان تغییر سنجیده شه.

۳- روش چند تماسی یا Multi Contact
این روش چند تا خوبی داره: یکی اینکه میتونیم همزمان با چندتا شی کار کنیم و دیگه اینکه با هر شی ای و هر شکلی میتونیم کار کنیم.
تو این روش یک <محور گرفتن> تعریف میکنیم که خطی هست که از بین دو تا سنسوری که شی رو گذشتن میگذره. یک مخروط اصطکاک هم داریم که پارامتری هست که براساس سختی و نرمی جسم تعریف میشه. در صورتی که زاویه بین نرمالی که از جسم خارج میشه و <محور گرفتن> داخل مخروط اصطکاک قرار بگیره، میتونیم بگیم که شی گرفته شده. حالا اگه بخوایم جسم رو جا به جا کنیم و سنسور ها(انگشت هامون) رو تکون بدیم دوباره <محور گرفتن> جدیدی ایجاد میشه و باید این شرط رو چک کنیم. در ضمن میزان جا به جایی رو هم از میزان جا به جایی مرکز ثقل <محور گرفتن> در میاریم.
اگه بخوایم با ۳ تا انگشت کار کنیم باید <محور گرفتن> و <مخروط اصطکاک> رو واسه دو تا دوتا سنسورا در بیاریم و مقایسه کنیم. و به جای مرکز ثقل محور، مرکز ثقل مثلث ساخته شده بین ۳ تا انگشت رو داریم. منتها وقتی جسم رو جابه جا میکنیم ممکنه دیگه شرایط <گرفتن> صدق نکنه اما میگیم کاربر نمیخواد جسم رو رها کنه مگه اینکه خلافش ثابت شه. یعنی تنها در صورتی جسم آزاد میشه که کاربر اونو کاااملا رها کنه. پس اگه اون شرط زاویه بین نرمال و محور که گفتم صدق نکرد همچنان میخوایم جسم تو دست کاربر باشه. خب اگه یه وقت این شرط صدق نکرد چیکار کنیم؟ میاییم چیزی به نام ضریب نیرو تعریف میکنیم. در صورتی که ضریب نیرو برابر ۱ باشه یعنی جسمو گرفتیم و همه چیز خوبه. اما اگه ضریب نیرو نزدیک صفر باشه یعنی اون گرفتنه فایده نداره. ضریب نیرو هم دو به دو بین سنسورا محاسبه میشه. کافیه <گرفتن> مربوط به ضریب نیروی پایین رو حذف کنیم و دوباره شرایط رو بررسی کنیم و محاسبات رو انجام بدیم و چک کنیم.
 

موازی

کاربر نیمه‌حرفه‌ای
ارسال‌ها
235
امتیاز
4,282
نام مرکز سمپاد
سمپاد شیراز
شهر
شیراز
سال فارغ التحصیلی
93
دانشگاه
RWTH
رشته دانشگاه
مهندسی برق
اگه یادتون باشه گفتیم برای تعامل با اشیا میتونیم اشیا رو انتخاب و دستکاری کنیم. اما روش های دیگه ای هم برای تعامل با اشیا وجود داره. اصلا تعامل به چه معنی بود؟ تعامل به این معنا هست که کاربر بتونه با اشیا به صورت سه بعدی کار کنه.
سه روش اصلی برای تعامل داریم:
۱- انتخاب و دستکاری: به تفصیل در ۳-۴ پست اخیر گفتیم.
۲- سیستم کنترل: توی این پست درموردش حرف میزنم.
۳- جهت یابی: اینکه بتونیم حرکت کنیم، لازم باشه سفر کنیم! مسیر یابی کنیم، مثلا تو یه خیابون مجازی هستیم و میخوایم جایی رو پیدا کنیم و از این دست مثال ها. البته در مورد این روش ها حالا حالا ها صحبت نمیکنیم :D

خب بریم سراغ سیستم کنترل:
اینجا کاربر سعی میکنه از طریق اینکه به سیستم دستور بده کار میکنه. مثلا مود سیستم یا استیت سیستم رو از طریق وارد کردن کامند یا دستور عوض کنیم. اول مثال دو بعدی بزنیم: مثلا تو صفحه نمایش ویندوز از طریق آیکون ها، کلیک کردن روی منو و یا خط فرمان و نوشتن کد توی ترمینال و اینطور دستور دادنا سیستم رو کنترل میکنیم. اما توی سه بعد یکم داستان فرق داره و به همین سادگی کلیک کردن نیست.
۴ تا دسته بندی داریم واسه سیستم کنترل:
۱- منو های گرافیکی: در ادامه بیشتر توضیح میدم.
۲- کامند صوتی: از اسمش معلومه دیگه. حرف بزنیم و بگیم مثلا لامپ جان خاموش شو!
۳-کامند ژستی و حرکتی: یعنی به وسیله یک حرکتی نشون بدیم که یه کاری انجام شه.
۴-استفاده از ابزار ها

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

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

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

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