View Full Version : انتخاب ابجک های تو محیط
UfnCod3r
جمعه 27 بهمن 1391, 11:20 صبح
سلام
چطور می تونم ابجکت هایی که تو محیط هستن رو با کشیدن ماوس انتخاب کنم !
مثل بازی های استراتژیک یا مثل ادیتور موتور انجین ها !
ابجکت هام یه BoundSphere دارن !
اگه بتونم مختصات سه بعدی شون رو دو بعدی کنم و اون شعاعشون هم حساب کنم دیگه راحت میشه !:متفکر:
من فقط ماتریس ها رو دارم + نقاط فشار داده شدن و رها شدن کلیک !
:متفکر:
mohamad.zakery
دوشنبه 07 اسفند 1391, 01:36 صبح
سلام
موضوع شما دقیقا همون Mouse Pick هست
یک سرچ ساده در گوگل جواب های زیادی به شما میده.
Ananas
چهارشنبه 09 اسفند 1391, 07:13 صبح
سلام.
دوربین شما یک ماتریس داره که از مکان و موقعیت چرخشی نگاه دوربین بدست میاد. حالا برای این که یک نقطه تو فضا رو مثلا مکان یک box رو ببرید به مختصات ماتریس دوربینتون باید در معکوس ماتریس دوربین اون رو ضرب کنید تا مکان اون نسبت به نگاه دوربین بدست بیاد بعد ازین مرحله میرسیم به پرسپکتیوش که شما باید نسبت به میدان دیدی که دوربینتون داره (مثلا زاویه ی 50 درجه) و همچنین نسبت طول و عرض تصویرتون اون نقطه رو داخل کاد پیدا کنید بعد فاصله ی اون رو مثلا از نقطه ی کلیک شده بسنجید.
یا اینکه بر عکس ، شما بیاید اشعه ی پرتاب شده از موس رو با ماتریس دوربین انتقال بدید به فضای جهانی بعد ببینید شی با اشعه چقدر فاصله داره که حالا اینها همشون فرمول ریاضیش هست و من خودم حفظ نیستم ولی هر وقت لازم میشه از هرجا بشه کپی میکنم. عبارت های ray
intersection
inverse matrix
3D math
viewport
camera
perspective matrix
fov (field of view) میدان دید
و ... رو سرچ کنید.
UfnCod3r
چهارشنبه 09 اسفند 1391, 08:33 صبح
دوربین شما یک ماتریس داره که از مکان و موقعیت چرخشی نگاه دوربین بدست میاد. حالا برای این که یک نقطه تو فضا رو مثلا مکان یک box رو ببرید به مختصات ماتریس دوربینتون باید در معکوس ماتریس دوربین اون رو ضرب کنید تا مکان اون نسبت به نگاه دوربین بدست بیاد بعد ازین مرحله میرسیم به پرسپکتیوش که شما باید نسبت به میدان دیدی که دوربینتون داره (مثلا زاویه ی 50 درجه) و همچنین نسبت طول و عرض تصویرتون اون نقطه رو داخل کاد پیدا کنید بعد فاصله ی اون رو مثلا از نقطه ی کلیک شده بسنجید.
:گیج:
:گیج:
ممنون از همه مشکلم حل شد ! بیشتر برا Unity3D می خواستم که تابعش بود ! Camera.WorldToScreenPoint
اینم تو نت پیدا کردم فکر کنم درست کار می کنه !
Vector2 Convert(Vector3 pos, const Matrix& viewMatrix, const Matrix& projectionMatrix, int screenWidth, int screenHeight)
{
pos = Vector3::Transform(pos, viewMatrix);
pos = Vector3::Transform(pos, projectionMatrix);
pos.X = screenWidth*(pos.X + 1.0)/2.0;
pos.Y = screenHeight * (1.0 - ((pos.Y + 1.0) / 2.0));
return Vector2(pos.X, pos.Y);
}
فقط یه چی مونده اون شعاعی که ابجکت تو محیط 3 بعدی داره معادلش روی پنجره چند میشه اونو چطور محاسبه کنم !:متفکر:
UfnCod3r
چهارشنبه 09 اسفند 1391, 08:34 صبح
فقط یه چی مونده اون شعاعی که ابجکت تو محیط 3 بعدی داره معادلش روی پنجره چند میشه اونو چطور محاسبه کنم !
هیچی فهمیدم !
نقطه گوشه ی ابجکت رو هم بدست میاریم بعد فاطه اون ها می شه شعاع :تشویق:
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.