تور لحظه آخری
امروز : پنجشنبه ، 30 فروردین 1403    احادیث و روایات:  امام سجاد (ع):گناهانى كه باعث نزول عذاب مى‏شوند، عبارت‏اند از: ستم كردن شخص از روى آگاهى، تجاوز...
سرگرمی سبک زندگی سینما و تلویزیون فرهنگ و هنر پزشکی و سلامت اجتماع و خانواده تصویری دین و اندیشه ورزش اقتصادی سیاسی حوادث علم و فناوری سایتهای دانلود گوناگون شرکت ها

تبلیغات

بلومبارد

تبلیغات متنی

تریدینگ ویو

خرید اکانت اسپاتیفای

کاشت ابرو

لمینت دندان

لیست قیمت گوشی شیائومی

صرافی ارکی چنج

صرافی rkchange

لوله پلی اتیلن

دانلود سریال سووشون

دانلود فیلم

ناب مووی

مرجع خرید تجهیزات آشپزخانه

خرید زانوبند زاپیامکس

رسانه حرف تو - مقایسه و اشتراک تجربه خرید

کلاس باریستایی تهران

تعمیر کاتالیزور

تعمیر گیربکس اتوماتیک

دیزل ژنراتور موتور سازان

سرور اختصاصی ایران

سایت ایمالز

تور دبی

سایبان ماشین

جملات زیبا

دزدگیر منزل

ماربل شیت

تشریفات روناک

آموزش آرایشگری رایگان

طراحی سایت تهران سایت

آموزشگاه زبان

اجاره سند در شیراز

ترازوی آزمایشگاهی

رنگ استخری

فروش اقساطی کوییک

راهبند تبریز

ترازوی آزمایشگاهی

قطعات لیفتراک

وکیل تبریز

خرید اجاق گاز رومیزی

آموزش ارز دیجیتال در تهران

شاپیفای چیست

فروش اقساطی ایران خودرو

واردات از چین

قیمت نردبان تاشو

وکیل کرج

تعمیرات مک بوک

قیمت فنس

armanekasbokar

armanetejarat

صندوق تضمین

سیسمونی نوزاد

پراپ تریدینگ معتبر ایرانی

نهال گردو

صنعت نواز

پیچ و مهره

خرید اکانت اسپاتیفای

صنعت نواز

لوله پلی اتیلن

کرم ضد آفتاب لاکچری کوین SPF50

دانلود آهنگ

طراحی کاتالوگ فوری

واردات از چین

اجاره کولر

دفتر شکرگزاری

 






آمار وبسایت

 تعداد کل بازدیدها : 1796631992




هواشناسی

نرخ طلا سکه و  ارز

قیمت خودرو

فال حافظ

تعبیر خواب

فال انبیاء

متن قرآن



اضافه به علاقمنديها ارسال اين مطلب به دوستان آرشيو تمام مطالب
archive  refresh

نمايش زمين هاي بزرگ در گرافيک سه بعدي


واضح آرشیو وب فارسی:راسخون:
نمايش زمين هاي بزرگ در گرافيک سه بعدي
نمايش زمين هاي بزرگ در گرافيک سه بعدي نويسنده: مهندس سيد علي الحسيني بطور کلي نمايش صحنه هاي بزرگ و پيچيده داراي جزئيات فراوان در گرافيک سه بعدي، همواره در سال هاي اخير به عنوان يکي از چالش هاي بزرگ و جدي در فرآيند توسعه سه بعدي مطرح بوده است. در اين ميان شايد نمايش زمين هاي بزرگ که از آن به عنوان Terrain ياد مي شود، يکي از مهمترين مسائل باشد. اين مسئله کاربردهاي فراواني دارد که از جمله مي توان به برنامه هاي جغرافيايي، نرم افزارهاي مهندسي و شبيه سازهاي نظامي و البته بازي ها اشاره کرد.در اين مقاله قصد داريم فرآيندهاي گوناگون مورد استفاده در رندر زمين هاي بزرگ را به شکل فني بررسي کنيم. به اين دليل که صرف داشتن اطلاعات فني و داده هاي ضروري براي رندر يک زمين کافي نمي باشد. ما در اين مقاله ضمن معرفي برخي خصوصيات پنهان API قدرتمند Direct3D و روند تکاملي آن در 5 سال گذشته، نحوه کار با اين API را به منظور رندر زمين هاي بزرگ ارائه خواهيم کرد. علي رغم اينکه استفاده از Direct3D 10 به دلايل مختلف هنوز چندان مرسوم نيست، اما در اين مقاله بهره گيري از اين API جديد و بعضي ويژگي هاي منحصر به فرد آن ( همچون بافر هندسي، لايه HAL کاملاً جديد و رسام بافت قدرتمند تر) به منظور نمايش سريعتر و بهتر Terrainهاي بزرگ ، مورد بررسي قرار خواهد گرفت. در نتيجه اين مقاله علاوه بر بحث پيرامون اصول فني و محاسباتي، به شکل فني جزئيات برنامه نويسي اين فرآيند را نيز تشريح خواهد کرد. اما پيش از اينکه وارد بحث هاي اصلي شويم، بهتر است به چند نکته توجه کنيم. در مورد نمايش Terrain هاي بزرگ بايد به چند مسئله توجه کرد:با توجه به اينکه Terrain در واقع نمايشي از واقعيت هاي دنياي پيرامون است، مسلماً مي توان با بهره گيري از بافت هاي زيبا، بسياري از جزئيات مورد نظر را به خوبي نمايش داد.به اين ترتيب عملاً بخش قابل توجهي از جزئيات و ظاهر صحنه به کمک بافت ها ( يعني تصاوير دو بعدي قابل ذخيره در هر نوع حافظه اي) ارائه شده و احتياج به استفاده از مش هاي با جزئيات بالا نخواهد بود.همانطور که پردازنده هاي گرافيکي قدرت بيشتري مي يابند، به همان اندازه از نقش پردازنده هاي اصلي در فرآيند رندر Terrain ها کاسته مي شود، به طوري که در حال حاضر الگوريتم هاي کارآمدي که با رويکرد ROAM و يا CLOD ايجاد مي شوند، قادر هستند بيش از 80 درصد عمليات را با کمک واحدهاي محاسباتي موازي GPU انجام دهند. در نتيجه داشتن يک پردازنده گرافيکي قوي، مهمترين عامل در رندر زمين مي باشد.با توجه به اينکه نمايش زمين در بسياري از برنامه ها ازجمله شبيه سازي هاي نظامي و جغرافيايي و حتي بازي ها، از اهميت بسياري براي ارائه يک صحنه واقعي برخوردار است، دو عامل مهم نمايانگر موفقيت برنامه نويس در نمايش زمين محسوب مي شوند. اين دو عامل عبارتند از سرعت رندر که معمولاً بر حسب FPS سنجيده مي شود( البته امکان ارائه سرعت بر حسب تعداد عمليات هاي بافر استنسيل نيز وجود دارد) و کيفيت و زيبايي زمين ( که بعداً بيشتر در مورد آن صحبت خواهد شد).با توجه به اندازه Terrain مورد نظر جهت رندر، فرآيندهاي مختلف محاسباتي و پردازشي پيچيده اي قبل و در حين عمليات رندر صورت مي گيرد تا دو عامل سرعت و کيفيت تا حد امکان افزايش يابند. البته مي توان عمليات رندر يک Terrain بزرگ را به دو مرحله اصلي ، يعني رندر هندسي زمين) Mesh Rendering ) و رندر بافت هاي زمين برروي سطوح هندسي تقسيم کرد. مسلماً هر چقدر اندازه Terrain و تعداد و وضوح بافت هاي آن بيشتر باشد، عمليات پيش پردازشي بيشتري هم براي بهينه سازي عمليات رندر لازم خواهد بود. اما يکي از مهمترين مسائلي که پيش روي فرآيند رندر يک Terrain بزرگ وجود دارد، تشخيص روش صحيح بارگذاري، تقسيم بندي و پردازش و رندر ( و البته انجام اصلاحات گرافيکي بعدي ) بر روي زمين مي باشد.پيش از اينکه به سراغ فرآيند پيچيده و چند مرحله اي رندر Terrain برويم، بايد در مورد ساخت و سپس بارگذاري Terrain صحبت کنيم. اصولاً روش هاي متفاوتي براي نمايش يک زمين بزرگ وجود دارد، که از جمله آنها مي توان به استفاده از Heightmapها، استفاده از فرمول هاي رياضي براي نمايش جزئيات زمين ( بصورت برداري و يا گره اي ) و همچنين استفاده از مدل هاي سه بعدي از پيش ساخته شده اشاره کرد.Heightmapها توانايي نمايش زمين هاي بسيار بزرگ را دارا مي باشند، زيرا عملاً داده اي که بايد در حافظه محلي کارت گرافيکي ( و نه حافظه هاي غيرمحلي مانند RAM غير گرافيکي) کپي شود، بسيار محدود است. در اين مورد برنامه نويس صرفاً بايد چند فايل تصويري را بارگذاري کند. اين فايل ها مي توانند داراي وضوح هاي متفاوتي باشند و هر چه وضوح اين تصاوير ( تصاوير پايه اي که نمايانگر تغييرات ارتفاعي زمين هستند) بيشتر باشد، دقت ارتفاعي زمين و ابعاد آن نيز بزرگتر خواهد بود. اگر چه در اين تکنيک هم به راحتي مي توان از روش تکه تکه کردن تصاوير استفاده کرد. در اين مورد محدوديت اصلي ، اندازه قابل بارگذاري تصاوير در بافرهاي جلويي و پشتي پردازنده گرافيکي مي باشد که معمولاً مي توان از تصاويري با وضوح 8192x8192 پيکسل بهره برد. در نتيجه از اين نظر عملاً محدوديتي براي کاربرد روش قدرتمند Heightmap وجود ندارد.اما از سوي ديگر مي توان با استفاده از فرمولهاي رياضي نيز سطوحي با دقت بي نهايت ساخت، اما از آنجاييکه هدف از رندر Terrain اغلب اوقات نمايش بخشي از دنياي واقعي مي باشد اين روش در برنامه هاي مهندسي، تحليلي و شبيه سازي ها، کاربرد چنداني ندارد. اما در اينجا به ذکر اين نکته بسنده مي شود که با استفاده از اين روش مي توان از نظر تئوري، سطوحي با دقت بي نهايت بالا تهيه کرد، بدون اينکه احتياج به افزودن گره هاي جديد باشد و تنها محدوديت ، قابليت نمايشي صفحات نمايش مي باشد. در اين روش مي توان با بهره گيري از معادلات سيالات و استفاده از توابع توليد اعداد تصادفي، زمين هاي زيبايي ايجاد کرد. البته لازم به ذکر است که اين روش بيشتر در بازي ها کاربرد دارد. يکي ديگر از کاربردهاي فرمول هاي رياضي و هندسي، اعمال تغييرات در ظاهر سطوح مي باشد که بعداً به آن اشاره خواهد شد.اما يکي ديگر از روش هاي مرسوم براي نمايش Terrainها که بخصوص در بازي ها بسيار مرسوم مي باشد، استفاده از مدل هاي از پيش ساخته شده است. اين مدل ها که مي توانند به صورت کاملاً تصادفي در برنامه هايي مانند MAX و MAYA يا با استفاده از اصول مهندسي در برنامه هايي مانند Mechanical Architecture ساخته شوند، معمولاً داراي اندازه محدودي هستند. علاوه بر اين محدوديت در اندازه، از نظر محدوديت در فايل هاي قابل بارگذاري در حافظه محلي (Local Memory ) هم همواره محدوديت وجود دارد و حتي با استفاده از تکنيک هاي Streaming و بارگذاري جرياني فايل ها، نمي توان حجم انبوهي از فايل هاي حاوي داده هاي سه بعدي ( از جمله موقعيت، بردارهاي نرمال، بردارهاي دوبعدي و يا سه بعدي مختصات بافت ، بردارهاي بي نرمال و... ) را با سرعت و کيفيت قابل قبول انجام داد.مسئله مهمتر اينکه به اين منظور بايد از فرمت هاي فايلي مناسبي هم استفاده کرد که اين خود مي تواند چالشي جدي در اين فرآيند محسوب شود.در حقيقت به نظر مي رسد هنوز هم استفاده ازHeightmap ها يکي از مناسب ترين روش ها براي نمايش Terrain هاي وسيع باشد. البتهHeightmapي که مي توان آن را به صورت نقشه ارتفاعي ترجمه کرد، لزوماً نبايد به صورت يک فايل تصويري باشد، بلکه مي توان اين مفهوم ( يعني استفاده از رنگ هاي مختلف به عنوان نمادي از ارتفاع هاي مختلف زمين ) را بسط داده و آن را در قالب استفاده از داده هاي آنلاين متغير مورد بهره برداري قرار داد. بعنوان مثال فرآيندي که در برنامه هاي بزرگي مانند Google Earth براي نمايش بخش هاي وسيع يک منطقه جغرافيايي مورد استفاده قرار مي گيرد، تقريباً چنين چيزي است. البته با اين تفاوت که اين برنامه بيش از آنکه بر روي دقت هاي بالا تأکيد داشته باشد، بر روي وسعت زمين ها تأکيد دارد.اما رويکرد نگاشت رنگ به ارتفاع مي تواند به خوبي پاسخگوي احتياجات برنامه هاي شبيه سازي نظامي، نرم افزارهاي تحليلي جغرافيايي و يا ساير کاربردهاي مشابه باشد.در اين رويکرد، از آنجا که رنگ ها نمايانگر ارتفاع هاي مختلف زمين هستند، هر چه تعداد رنگ هاي قابل استفاده بيشتر باشد، مي توان جزئيات بيشتري را نمايش داد. البته بهتر است اين مطلب را بسط داده و بجاي واژه رنگ،از واژه تفکيک پذيري داده ها استفاده کنيم، زيرا همواره رنگ ها در اين فرآيند مورد استفاده قرار نمي گيرند ( البته چون نمايش تصويري Terrainها و نگاشت دو بعدي آنها در عکس هاي هوايي و ماهواره اي، حالت بسيار رايجي از نمايش آنها مي باشد، معمولاً از مفهوم رنگ به اين منظور استفاده مي شود).اما در بخش رندراين داده هاي سنگين، با موانع متعددي روبرو هستيم. يکي از مسائل مهم ، حجم بسيار زياد داده ها مي باشد. اين حجم بالا که گاهي تا چند گيگا بايت هم مي رسد، باعث کاهش شديد حافظه محلي کارت گرافيکي مي شود. حافظه محلي در واقع بخشي از حافظه کارت گرافيکي است که پردازنده گرافيکي مي تواند به صورت مستقيم و بدون بهره گيري از DMA به آن دسترسي داشته باشد. از آنجا که سرعت بارگذاري داده ها در اين حافظه بسيار بالاتر از ساير انواع حافظه ها( از جمله حافظه RAM حافظه گرافيکي غيرمحلي ) مي باشد، برنامه نويس تمايل دارد بيشترين حجم داده هاي خود را در اين حافظه نگه داري کند، اما اين حافظه همواره محدود بوده و به زودي پر مي شود. يکي از راهکارهاي رايج براي حل اين مشکل اساسي، بهره گيري از فرآيند Degeneration زمين به منظور خردسازي داده هاي سه بعدي و دو بعدي قابل محاسبه مي باشد. اين فرآيند مي تواند به صورت هاي مختلفي پياده سازي شود که البته نحوه پياده سازي اين فرآيند، تأثيرقابل ملاحظه اي در سرعت و کيفيت عمليات رندر خواهد داشت.عبارت LOD که مخفف واژه هاي Level-of-Detail به معناي سطح جزئيات است، از جمله عباراتي است که در متون مرتبط با رندر زمين هاي بزرگ مرتباً با آن برخورد مي کنيم. البته اين عبارت مختص رندر زمين هاي بزرگ نيست و در بسياري از حيطه هاي علوم مختلف وعلم کامپيوتر و بخصوص گرافيک سه بعدي، کاربرد دارد. LOD رويکردي است که بر طبق آن، تنها داده هايي مورد پردازش قرار مي گيرند که نمايش آن ها به کاربر، واقعاً ضرورت داشته باشد. بعنوان مثال هنگامي که شما کره زمين را در ارتفاع بسيار بالا ( مثلاً از سطح کره ماه ) مشاهده مي کنيد ، مسلماً احتياجي به نمايش جزئيات يک کوه کوچک با ارتفاع 1000 متر نيست. اما هنگامي که به سطح زمين نزديکتر شويد، بايد جزئيات بيشتري را به کاربر نمايش دهيد، و بر طبق اين رويکرد، شما فقط داده هايي را مورد پردازش قرار مي دهيد که واقعاً قصد نمايش آن ها به کاربر را داشته باشيد. البته پياده سازي اين رويکرد نسبتاً ساده، فرآيند بسيار پيچيده اي است که در ادامه به طور مفصل به تشريح آن خواهيم پرداخت.چگونگي تعيين ميزان جزئيات قابل نمايش در هر لحظه، يکي از عوامل مهم در تعيين ميزان موفقيت پياده سازي يک تکنيک LOD محسوب مي شود. اين ميزان علاوه بر اينکه پارامتري کاملاً فني است که به اطلاعات کامل از وضعيت سخت افزاري، توان نمايشي و پردازشي و ميزان حافظه سيستم بستگي دارد، به عواملي خارج از حيطه برنامه نويسي گرافيکي نيز بستگي دارد. بعنوان مثال، مي توان به موقعيت جغرافيايي صحنه، ارتفاع صحنه، شرايط آب و هوايي، طول و عرض جغرافيايي، موقعيت و زاويه ديد و همچنين ميزان نور صحنه اشاره کرد که البته همه اين عوامل، به نحوي بازخورد گرافيکي سه بعدي نيز دارند. عموماً فاصله و زاويه ديد کاربر نسبت به صحنه، مهمترين عواملي هستند که ميزان جزئيات نمايش يافته ازTerrain را مشخص مي کنند. در اين ميان فاصله که يافتن آن نيز تقريباً ساده مي باشد، حرف اول را مي زند.بايد توجه داشت که در مورد Terrain ها، با توجه به داشتن پستي و بلندهاي فراوان، لزوماً داشتن زاويه عمودي نسبت به صحنه، بهترين حالت ديد نيست. زيرا در اين شرايط ممکن است بسياري از جزئيات قابل مشاهده نباشند. در حقيقت معمولاً زواياي کمتر از 45 درجه نسبت به خط افق، ميزان ديد بالايي را براي کاربر فراهم مي کنند. اين پارامتر نيز به راحتي با استخراج زاويه ديد از ماتريس ديد و ماتريس نگاشت دوربين صحنه بدست مي آيد. به اين ترتيب طبق تعريف ، هر چه ميزان فاصله کاربر تا صحنه بيشتر باشد، ميزان جزئيات نمايش يافته نيز کمتر خواهد شد. به همين ترتيب با کاهش ديد کاربر نسبت به صحنه ( بواسطه افزايش يا کاهش بيش از حد زاويه ديد ) محتواي گرافيکي قابل نمايش به کاربر کاهش مي يابد. اين کاهش محتواي گرافيکي، به معني کاهش ميزان داده هاي قابل پردازش در هر لحظه و در نتيجه کاهش محاسبات ( و افزايش سرعت ) مي باشد.همانطور که گفته شد، پياده سازي رويکرد LOD شکل مشخصي ندارد و مي توان بر حسب شرايط و مشخصات سيستم هاي هدف و نوع کارکرد برنامه، اين تکنيک را به شکل ويژه اي پياده سازي کرد. ضمن اينکه به تدريج با پيشرفت پردازنده هاي گرافيکي نيز، شکل پياده سازي اين رويکرد و نگاه برنامه نويسان به رابطه بين CPU و GPU هم تغيير کرده است و بخصوص پس از عرضه Direct3D 10 که امکان دستکاري داده هاي سه بعدي در پايين ترين سطح را مي دهد، تکنيک هاي بيشتري براي بهينه سازي فرآيند رندر Terrain عرضه شده اند. به عبارتي اکنون تکنيک هاي قديمي تري مانند Brute Force دوباره مورد توجه قرارگرفته اند ، زيرا به نظر مي رسد توان پردازشي GPUها ( به ويژه با بهره گيري از فن آوري هاي ترکيب پردازشگر مانند SLI ) به حدي افزوده شده است که مي توان صحنه هاي بسيار بزرگ و وسيع را بدون دستکاري زيادي، مورد پردازش آني قرار داد.منبع:دانش و کامپيوتر،شماره 87/خ





این صفحه را در گوگل محبوب کنید

[ارسال شده از: راسخون]
[مشاهده در: www.rasekhoon.net]
[تعداد بازديد از اين مطلب: 693]

bt

اضافه شدن مطلب/حذف مطلب







-


گوناگون

پربازدیدترینها
طراحی وب>


صفحه اول | تمام مطالب | RSS | ارتباط با ما
1390© تمامی حقوق این سایت متعلق به سایت واضح می باشد.
این سایت در ستاد ساماندهی وزارت فرهنگ و ارشاد اسلامی ثبت شده است و پیرو قوانین جمهوری اسلامی ایران می باشد. لطفا در صورت برخورد با مطالب و صفحات خلاف قوانین در سایت آن را به ما اطلاع دهید
پایگاه خبری واضح کاری از شرکت طراحی سایت اینتن