PDA

View Full Version : سوال: استفاده از عکس در محیط سه بعدی



mohsencom
جمعه 16 اردیبهشت 1390, 20:29 عصر
با سلام خدمت همه :لبخندساده:

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

به نظرتون واسه انجام این کار چه اعمالی باید انجام بدم؟؟؟ هر چی فکر میکنم چیزی به ذهنم نمیرسه :ناراحت:

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

tabatabaeefar
شنبه 17 اردیبهشت 1390, 10:54 صبح
سلام
لطفا یه کم بیشتر توضیح بده. منظورت رو متوجه نشدم.

mohsencom
شنبه 17 اردیبهشت 1390, 17:44 عصر
سلام
لطفا یه کم بیشتر توضیح بده. منظورت رو متوجه نشدم.


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

لطفا راهنماییم کنید...برام مهمه که چطور اینکارو انجام بدم..ممنون

Navid Asadi
شنبه 17 اردیبهشت 1390, 21:02 عصر
شما اول از همه باید اون عکس کاشی رو برای این محیط با فتو شاپ زاویه بدی

mohsencom
شنبه 17 اردیبهشت 1390, 22:31 عصر
شما اول از همه باید اون عکس کاشی رو برای این محیط با فتو شاپ زاویه بدی

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

Saman_12
شنبه 17 اردیبهشت 1390, 22:46 عصر
خود دات نت با استفاده از کلاس گرافیک میتونه عکس ها رو زاویه بده اما من نمیدنم چجوری فقط همین اطلاع رو دارم که با دادن چندتا Point توی آرایه به متد DrawImage میشه این کار رو کرد قبلش یک چیزی از کلاس رو میبایست تغییر داد.(اطلاعاتم در همین حد هست بیشتر نمیدونم و فقط همین ها یادمه اما نمونه کدش رو چند وقت پیش داشتم چون بکارم نمیومد زیاد بهش گیر ندادم اگه پیداش کردم نمونه رو میزارم تا کسانی که تو این ضمینه سر رشته دارند کمکت کنن.):لبخندساده:

mohsencom
شنبه 17 اردیبهشت 1390, 23:02 عصر
خود دات نت با استفاده از کلاس گرافیک میتونه عکس ها رو زاویه بده اما من نمیدنم چجوری فقط همین اطلاع رو دارم که با دادن چندتا Point توی آرایه به متد DrawImage میشه این کار رو کرد قبلش یک چیزی از کلاس رو میبایست تغییر داد.(اطلاعاتم در همین حد هست بیشتر نمیدونم و فقط همین ها یادمه اما نمونه کدش رو چند وقت پیش داشتم چون بکارم نمیومد زیاد بهش گیر ندادم اگه پیداش کردم نمونه رو میزارم تا کسانی که تو این ضمینه سر رشته دارند کمکت کنن.):لبخندساده:

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

سایر دوستان هم اگه در این زمینه اطلاعاتی دارن ممنون میشم بگن

pooya1072
دوشنبه 19 اردیبهشت 1390, 00:08 صبح
سلام دوست عزیز
اگه می خوای یک چیزی مثل بازی کامپیوتری بسازی , تا اونجا که می دونم VB نرم افزار مناسبی برای بخش گرافیکش,اونهم از نوع 3d نیست.البته شاید بشه.ولی مطمئناً خیلی سخته.باید با توابع مربوط به DirectX آشنا باشی و با اونا کار کنی که خیلی پیچیدست.باید از نرم افزارهای مختلفی استفاده کنی. توی قسمت ساخت بازیهای رایانه ای دنبالش بگردی شاید بیشتر دستگیرت بشه.

mohsencom
دوشنبه 19 اردیبهشت 1390, 00:54 صبح
سلام دوست عزیز
اگه می خوای یک چیزی مثل بازی کامپیوتری بسازی , تا اونجا که می دونم VB نرم افزار مناسبی برای بخش گرافیکش,اونهم از نوع 3d نیست.البته شاید بشه.ولی مطمئناً خیلی سخته.باید با توابع مربوط به DirectX آشنا باشی و با اونا کار کنی که خیلی پیچیدست.باید از نرم افزارهای مختلفی استفاده کنی. توی قسمت ساخت بازیهای رایانه ای دنبالش بگردی شاید بیشتر دستگیرت بشه.

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

من هنوز منتظر نمونه سورس دوستمون Saman_12 هستم:افسرده:

Saman_12
سه شنبه 20 اردیبهشت 1390, 19:59 عصر
می بخشین دیر شد (سرور خدمات دهنده ی اینترنتم مشکل داشت!).
کد های اون سورس خیلی زیاده که هیچ کدوم به درد شما نمیخوره من خودم اون قسمتی که برای زاویه دادن هست رو جدا کردم و یکم تغییر دادم تا به صورت یک Sub باشه :

Private Sub DrawCube(ByVal Image As Image, ByVal Points() As Point)

Dim Bmp As New Bitmap(Me.Width, Me.Height)
Dim G As Graphics = Nothing

Me.BackgroundImage = Bmp
G = Graphics.FromImage(Bmp)

G.PixelOffsetMode = Drawing2D.PixelOffsetMode.HighQuality
G.TranslateTransform(250, 200)
G.DrawImage(Image, Points)
G.Dispose()
End Sub


اینم یک نمونه برای استفاده :

Dim bmp As New Bitmap(Me.Width, Me.Height)
Dim Pi(2) As Point

Pi(0) = New Point(-100, -5)
Pi(1) = New Point(230, -140)
Pi(2) = New Point(-110, 270)

Using g As Graphics = Graphics.FromImage(bmp)

g.FillRectangle(Brushes.DeepSkyBlue, bmp.GetBounds(GraphicsUnit.Point))
End Using

DrawCube(bmp, Pi)

mohsencom
سه شنبه 20 اردیبهشت 1390, 22:28 عصر
می بخشین دیر شد (سرور خدمات دهنده ی اینترنتم مشکل داشت!).
کد های اون سورس خیلی زیاده که هیچ کدوم به درد شما نمیخوره من خودم اون قسمتی که برای زاویه دادن هست رو جدا کردم و یکم تغییر دادم تا به صورت یک Sub باشه :

Private Sub DrawCube(ByVal Image As Image, ByVal Points() As Point)

Dim Bmp As New Bitmap(Me.Width, Me.Height)
Dim G As Graphics = Nothing

Me.BackgroundImage = Bmp
G = Graphics.FromImage(Bmp)

G.PixelOffsetMode = Drawing2D.PixelOffsetMode.HighQuality
G.TranslateTransform(250, 200)
G.DrawImage(Image, Points)
G.Dispose()
End Sub


اینم یک نمونه برای استفاده :

Dim bmp As New Bitmap(Me.Width, Me.Height)
Dim Pi(2) As Point

Pi(0) = New Point(-100, -5)
Pi(1) = New Point(230, -140)
Pi(2) = New Point(-110, 270)

Using g As Graphics = Graphics.FromImage(bmp)

g.FillRectangle(Brushes.DeepSkyBlue, bmp.GetBounds(GraphicsUnit.Point))
End Using

DrawCube(bmp, Pi)


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

mohsencom
یک شنبه 19 تیر 1390, 04:05 صبح
بالاخره موفق شدم به عکس یه جورایی نمای سه بعدی بدم با این کدها :


Dim G As Graphics
G = CreateGraphics()
G.TranslateTransform(150, 200)
Dim face(2) As Point
face(0) = New Point(150, -20)
face(1) = New Point(270, -140)
face(2) = New Point(150, 230)
G.DrawImage(Bitmap.FromFile("Image.JPG"), face)

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

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


اینم نمونه از برنامه :

Saman_12
یک شنبه 19 تیر 1390, 13:38 عصر
دوست عزیز اگر چند بار با اعداد مختلف این کد رو امتحان می کردی به راحتی میفهمیدی که چجوری هست :
نقطه اول محل 0,0 عکسه که شما روی آبجکت مورد نظر که قراره تصویر روی اون رسم بشه مشخص میکنید.
نقط دوم انتهای سمت راست عکسه با عرض 0 .
نقطه سوم انتهای پاین عکسه با طول 0 .

با تغییر این نقاط می تونی عکس رو سه بعدی نشون بدی!

این عکس کمک میکنه بهتر درک کنی (البته من درست یادم نیست ولی فکر کنم همین طور بود.) :
http://www.irupload.ir/images/5stglw6c3t7g1ozlq8sy.png

mohsencom
یک شنبه 19 تیر 1390, 14:30 عصر
دوست عزیز ممنون از راهنمایی خوبت

من اون نمایی که میخواستمو بدست آوردم و دیگه میدونم چطوری پوینت هارو شماره گذاری کنم

فقط الان نفهمیدم عکس به اون کوچیکی چرا اینقد بزرگ نمایش داده میشه :متفکر:

Saman_12
یک شنبه 19 تیر 1390, 15:55 عصر
دوست عزیز ممنون از راهنمایی خوبت

من اون نمایی که میخواستمو بدست آوردم و دیگه میدونم چطوری پوینت هارو شماره گذاری کنم

فقط الان نفهمیدم عکس به اون کوچیکی چرا اینقد بزرگ نمایش داده میشه :متفکر:

خوب بین خیلی ساده است :
تو با تغییر نقاط ,فاصله بین اونها رو تغییر میدی و زمانی که فاصله تغییر کنه ,اندازه عکس هم تغییر می کنه.(کافیه روی عکس دقتی کنی برای مثال وقتی نقطه دوم داری طول کمتر نسبت به حالت اولش باشه طول عکس هم کم میشه!)

mohsencom
یک شنبه 19 تیر 1390, 17:14 عصر
خوب بین خیلی ساده است :
تو با تغییر نقاط ,فاصله بین اونها رو تغییر میدی و زمانی که فاصله تغییر کنه ,اندازه عکس هم تغییر می کنه.(کافیه روی عکس دقتی کنی برای مثال وقتی نقطه دوم داری طول کمتر نسبت به حالت اولش باشه طول عکس هم کم میشه!)

ممنون دوست عزیزززززز

بالاخره یکی از مختصاتاشو بدست آوردم با اندازه دلخواه خودم :


face(0) = New Point(100, 0)
face(1) = New Point(100, -50)
face(2) = New Point(50, 50

دیگه بقیه پوینت ها رو هم خودم در میارم....دست درد نکنههههه :بوس:
خیر ببینی:لبخند: