ورود

View Full Version : دوبعدي ميخوام كار كنم



saed2006
دوشنبه 05 مهر 1389, 11:56 صبح
سلام
چجوري ميتونم ماتريس word رو دو بعدي كنم؟
device.Transform.Projection =device.Transform.World

hi.alir
دوشنبه 05 مهر 1389, 12:45 عصر
فکر نکنم Direct3D دوبعدی باشه. البته اگر همه جا z ها برابر باشند فرقی نمی کنه.

saed2006
دوشنبه 05 مهر 1389, 12:48 عصر
ممنون از پاسخ
الان ماتريس projection
device.Transform.Projection =device.Transform.World

من اينطوريه
اما وقتي شكلم رو ميچرخونم دو بعدي نشون نميده
يه حالت پرسپكتيوي داره
كدوم از ستون ها رو تغير بدم تا ماتريسم دو بعدي بشه و اين مشكل رفع بشه

saed2006
دوشنبه 05 مهر 1389, 13:19 عصر
اگه نتونستم مطلب رو درست توضيح بدم بگين بيشتر بگم در موردش

hi.alir
دوشنبه 05 مهر 1389, 13:36 عصر
بیشتر توضیح بدید.

saed2006
دوشنبه 05 مهر 1389, 13:41 عصر
device من ترسيم هاش رو داخل پنل انحام ميده
خب تا اينجا اوكي؟
حالا من از اين device.Transform.Projection =device.Transform.World براي مقدار دهي ماتريس projection استفاده كردم خب تا اينجا اوكي؟
حالا وقتي يك خط رو ميچرخونم بعد ترسيم ميكنم چيزي كه نمايش ميده حالت 2 بعدي نداره يعني مثلا اگه يك مستطيل رو بچرخونم بعد از اينكه 45 درجه چرخيد ديگه اضلاع اون بر هم عمود نيستن يعني اينكه وقتي ماتريس projection از نوع word باشه شكلم دفورمه ميشه
كجاشو نفهميدين تا بيشتر توضيح بدم

hi.alir
دوشنبه 05 مهر 1389, 14:00 عصر
خب بستگی داره حول کدوم محور بچرخونید.
البته اینجا یه چیزی غیر معمولی هست. Projection = World :گیج:

saed2006
دوشنبه 05 مهر 1389, 17:58 عصر
]چرخش رو با اعمال ریاضی انجام دادم و کاملا درست هست
ماتریس projection برابر چی باشه؟

hi.alir
دوشنبه 05 مهر 1389, 21:02 عصر
واسه Projection معمولا از تابع D3DXMatrixPerspectiveFovLH استفاده میشه ( یا حداقل من معمولا از این تابع استفاده می کنم ). یه جست و جویی بزن ببین معادل این تابع تو .Net چیه.
واسه چرخش هم می تونی از توابع زیر استفاده کنی.
D3DXMatrixRotationX
D3DXMatrixRotationY
D3DXMatrixRotationZ
از اونجا که در حالت عادی ماتریس World تاثیری نداره، می تونی ازش به عنوان ماتریس Transformation استفاده کنی.

saed2006
دوشنبه 05 مهر 1389, 21:35 عصر
ممنون
MatrixPerspectiveFovLr
یعنی چی میشه کمی در موردش توضیح بدین

hi.alir
سه شنبه 06 مهر 1389, 17:11 عصر
تو MSDN کامل توضیح داده.

khorzu
سه شنبه 06 مهر 1389, 18:34 عصر
Projection =? World :گیج:

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

Microsoft.DirectX.Matrix.OrthoLH(...)

saed2006
چهارشنبه 07 مهر 1389, 09:35 صبح
Projection =? World :گیج:

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

Microsoft.DirectX.Matrix.OrthoLH(...)
با اين تابع هم مقدار دهي كردم
باز تغيري نكرد همون مشكل برقراره يعني يك مربع ميكشي اما مستطيل نشون داده ميشه

saed2006
چهارشنبه 07 مهر 1389, 09:41 صبح
ماتريس view :



device.Transform.View = Matrix.Multiply(Matrix.Translation(mov), Matrix.Scaling(zoom, zoom, 1f));


mov vector هست
ايا مشكل از اين دستور ه؟

saed2006
چهارشنبه 07 مهر 1389, 10:36 صبح
اين نمونه برنامش

L u k e
چهارشنبه 07 مهر 1389, 10:39 صبح
ایکس ان ای واسه ساخت بازی دو بعدی گزینه ی خوبیه
آسون و بی درد سر
http://creators.xna.com

saed2006
چهارشنبه 07 مهر 1389, 10:48 صبح
برنامه اي كه گذاشتم رو ببينيد
مربع ميكشي اما مستطيل نشون ميده