» TcVb » ++C » Iran PHP » IR-Ebooks » NasserVB » تکنولوژی برتر » گروه ژابیر » تبدیل صدای مرد به زن » قالب های فارسی » PardTech » .::: آشوب :::. » دانلود رایگان کتاب و مجلات الکترونیکی » بلاگ تخصصی کتابهای کامپیوتری
:: معرفی سایت کتاب های مرجع ( یکشنبه پانزدهم آبان 1390 ) :: آموزش جاوا اسکریپت///جلسه ی ششم///شرط(2) ( سه شنبه بیست و ششم شهریور 1387 ) :: آموزش جاوا اسکریپت///جلسه ی پنجم///شرط(2) moores ( دوشنبه بیست و پنجم شهریور 1387 ) :: آموزش جاوا اسکریپت///جلسه ی پنجم ///شرط (1) ( یکشنبه بیست و چهارم شهریور 1387 ) :: دستکاری منو ها با استفاده از توابع API ( شنبه بیست و سوم شهریور 1387 ) :: آموزش HTML ( جمعه بیست و دوم شهریور 1387 ) :: Programming C# Certification Review ( شنبه شانزدهم شهریور 1387 ) :: Beginning Microsoft Visual C# 2008 ( شنبه شانزدهم شهریور 1387 ) :: C# 3.0 Unleashed: With the .NET Framework 3.5 ( شنبه شانزدهم شهریور 1387 ) :: Beginning Game Development with Python and Pygame ( شنبه شانزدهم شهریور 1387 ) :: Sams Teach Yourself moores C++ in One Hour a Day ( شنبه شانزدهم شهریور 1387 ) :: Visual Basic 2005 ; The Language ( جمعه پانزدهم شهریور 1387 )
سلام خدمت بينندگان عزيز اين وبلاگ خب همونطور كه قبلآ قول داده بودم در مورد آموزش سه بعدي امروز يه برنامه رو از صفر با دايركت ايكس 8و وي بي مي سازيم تا شما با چگونگي رسم اشكال سه بعدي ساده (مكعب و استوانه و..) آشنا بشيد.
سه تا متغيير آخر كه اسمشون عجيب قريبه هميشه با صفر مقدار دهي مي شن من هم نمي دونم برا چيه ان! سه تاي اول موقعيت نقطه و بعدي رنگ بعد يه ثابت براي اعلان اين ديتا تايپ به دايركت ايكس تعريف مي كنيم اين ثابت فرمت ديتا تايپي كه تعريف كرده ايم را در خود نگه مي دارد.
چون ما مي خوايم يه مكعب مربع رسم كنيم به 36 نقطه نياز داريم كه با آرايه بالا اونو تعريف مي كنيم در سه خط بعد سه تا ماتريس تعريف كرديم كه كل خصوصيات نقاط ما رو داخل خودشون نگه مي دارن كاربرد اونا اينه كه براي تابع چرخش فرستاده مي شن و كل اونا رو دايركت ايكس يه جا مي چرخونه و ديگه نياز به چرخش تك تك اونها نيست ماتريس اول چگونگي قرار گرفتن نقطه ها در فضاي سه بعدي رو نشون مي دن دومين ماتريس نشان مي دهد دور بين در كجا قرار دارد وآخرين ماتريس نشان مي دهد كه دوربين چگونه به صحنه نگاه مي كند بعد متغيير هاي سراسري moores سطح ماژول رو كد نويسي مي كنيم توجه كنيد تمام كدهاي بالا واين كدها داخل ماژول نوشته مي شن
Public Dx As DirectX8 Public D3D As Direct3D8 Public D3DDevice As Direct3DDevice8 moores Public DispMode As D3DDISPLAYMODE Public InitG As Boolean Public D3Dwindow As D3DPRESENT_PARAMETERS Public D3DX As D3DX8 Public VBuffer As Direct3DVertexBuffer8
دي ايكس بزرگترين كلاس دايركت ايكس است كه كلاس هاي دايركت ايكس را مديريت مي كند. كلاس دي تري دي براي ايجاد ابزار سه بعدي سازي استفاده مي شه. كلاس D3dDevice براي مديريت ابزار ساخته شده و اجزاي آن استفاده مي شه. كلاس DispMode براي گرفتن موقعيت و خصوصيات كنوني صفحه نمايش شما بكار مي رود. متغير InitG براي گرفتن مقدار برگشتي تابع InitialiseGeometry كه بعدآ تعريف خواهد شد بكار مي رود. كلاس D3Dwindow مستقيمآ با پنجره نمايش ما كار مي كند وبراي تظيم خصوصيات آن از اين كلاس استفاده مي شود. كلاس D3DX براي ايجاد يك بافت و بارگزاري فايل دات ايكس كه فايل حاوي مختصاي نقاط ومشخصات يك شي سه بعدي مي باشد(فايل هاي خروجي 3DSMAX با يك برنامه به اين نوع فايل تبديل مي شوند و داخل دايركت ايكس باز مي شوند)بكار moores مي رود مثلآ اگر بخواهيد روي يك ديوار يك عكس بيندازيد بايد با اين كلاس آن را بارگذاري كنيد وبا كلاس D3DMaterial8 آن را به ديوار بيندازيد. صرفآ در اين پروژه نيازي به اين كلاس نيست و من اون رو همينجوري تعريف كردم!. كلاس vBuffer براي ايجاد بافر نگه دارنده كل نقاط و تصوير سه بعدي ما استفاده مي شود حالا شروع به نوشتن تابع initialise مي كنيم اين تابع در اكثر پروژه هاي سه بعدي هست و وظيفه اش بارگزاري و مقداردهي اوليه كلاسها و متغيير هاست .
Public moores Function initialise() As Boolean Set Dx = New DirectX8 ' ايجاد دوباره كلاس دي ايكس Set D3D = Dx.Direct3DCreate ' ايجاد كلاس دي تري دي از كلاس دي ايكس '-- D3DDEVTYPE_REF= رسم نرم افزاري , D3DDEVTYPE_HAL= رسم سخت افزاري '--ممكن است كارت گرافيك شما آن برد باشد كه بايد از هال استفاده كنيد If D3D.CheckDeviceFormat(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, _ DispMode.Format, D3DUSAGE_DEPTHSTENCIL, D3DRTYPE_SURFACE, D3DFMT_D16) = D3D_OK Then D3Dwindow.AutoDepthStencilFormat = D3DFMT_D16 '16 bit Z-Buffer Debug.Print "yes"
End If ' بررسي اينكه آيا سخت افزار ما قادر به رسم نقاط سه بعدي هست يا نه D3D.GetAdapterDisplayMode D3DADAPTER_DEFAULT, DispMode ' گرفتن خصوصيات كنوني تصوير و ريختن آن در ديتاتايپ ديسپ مود D3Dwindow.Windowed = 1 ' 1 يعني برنامه ما بصورت پنجره ايجاد شود 2=تمام صفحه D3Dwindow.BackBufferFormat = DispMode.Format ' خصوصيات صفحه را كه گرفته ايم به دايركت ايكس مي دهيم ' وبافرنگهدارنده تصوير رابا آن تنظيم مي كنيم D3Dwindow.SwapEffect = D3DSWAPEFFECT_DISCARD D3Dwindow.BackBufferCount = 1 D3Dwindow.BackBufferFormat = DispMode.Format D3Dwindow.BackBufferHeight = DispMode.Height D3Dwindow.BackBufferWidth = DispMode.Width D3Dwindow.hDeviceWindow moores = Form1.hWnd ' D3D ايجاد ابزار سه بعدي سازي با مشخصات مقداردهي شده ي بالا از كلاس Set D3DDevice = D3D.CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, _ Form1.hWnd, D3DCREATE_SOFT
No comments:
Post a Comment