گرافیک دو بعدی وسه بعدی( Two & Three dimensional graphices)

ارسالی عباس

 

مقدمه :
طراحی گرافیکی با تاریخچه انسان های غارنشین گره خورده است . نقاشی های روی غارهایlascavx و یا تولد زبان نوشتاری در هزاره سوم و چهارم قبل از میلاد هر دو مراحل مهمی در تاریخچه طراحی گرافیکی هستند.از اولین نمونه های طراحی گرافیکی می توان به Book Of Kell اشاره کرد.پس از آن ناشری به نام ویلیام مورس در فاصله سالهای 1892تا 1896 اقدام به چاپ کتابهایی کرد که رد پای برخی محصولات گرافیکی مهم در آنها به چشم می خورد و به این ترتیب توانست تجارت منافعی را در بخش کتاب راه اندازی کند.کار وی به همراه دیگر جنبشهای انتشاراتی خصوصی بطور غیر مستقیم مسئول توسعه و ارتقای طراحی گرافیکی در اوایل قرن بیستم محسوب می شود.
و در سطوح پیشر تهیه وتنظیم : الهام مظاهری
استاد راهنما : جناب آقای حامد فرزانه فر

. اگر بگوییم IT نقش مهمی در تحول گرافیک داشته است، حرف نامربوطی نزده ایم . گرافیک رایانه ای یکی از قدیمی ترین شاخه های علوم کامپیوتر است که به ترسیم ، تغییر و کار با تصاویر به شیوه محاسباتی و کامپیوتری اقدام می کند.این شاخه یکی از پرجاذبه ترین و وسیعترین کاربردهای رایانه هاست.بازی های رایانه ای ، برنامه های ساخت انیمیشن های دو بعدی و سه بعدی شبیه سازی های محاسباتی و پردازش تصاویر را می توان به عنوان چند نمونه از این کاربردها نام برد. در این صورت می توان گرافیک را به دودسته کلاسیک و مدرن تقسیم بندی کرد. برخی از کاربردهای گرافیک مثل تهیه پوستر را می توان به دو روش انجام داد اما کاربردهایی مثل طراحی وب سایت ها را نمی توان در دسته کلاسیک گنجاند. چنین کاربردهایی در اصل به واسطه علم IT به وجود آوده اند.
در اواسط دهه 1980 آمدن ادوات کامپیوتری و نرم افزاری توانست نسل جدیدی از طراحان تصاویر کامپیوتری را بوجود آورد . این نسل توانست از عهده طراحی هایی برآید که تا پیش از این و بدون استفاده از این ابزارها کاری سخت وتقریبا محال بود . گرافیک کامپیوتری طراحان را قادر کرد که در لحظه به تاثیرات طرح بندی ها و یا تغییرات اعمال شده در اثرشان بدون استفاده از جوهر پی ببرند و بدون نیاز به فضایی زیاد بتوانند تاثیرات این رسانه سنتی راشبیه سازی کنند . گرچه باز هم از ابزارهای سنتی مثل مداد و یا انواع ماژیک ها برای به اجرا در آوردن ایده های اولیه و خام بر روی کاغذ استفاده می شود اما در نهایت کار اصلی را کامپیوتر و به واسطه انواع نرم افزار های گرافیکی انجام می دهد .
گرافیک رایانه ای به استفاده وسیع از ریاضیات کاربردی نیاز دارد. از مهمترین زمینه های مربوط می توان به هندسه مسطحه ، هندسه فضایی ، جبر خطی و در سطوح پیشرفته تر به حسابان ، معادلات دیفرانسیل و روشهای عددی اشاره کرد.
گرافیک رایانه‌ای ( ( Computer Graphics:
یکی از قدیمی‌ترین شاخه‌های علوم رایانه است که به ترسیم، تغییر، و کار با تصاویر به شیوه‌های محاسباتی و رایانه‌ای اقدام می‌نماید. گرافیک رایانه‌ای یکی از پرجاذبه‌ترین و وسیع‌ترین کاربردهای رایانه‌هاست. بازیهای رایانه‌ای، برنامه‌های ساخت پویانمایی‌ دوبعدی و سه‌بعدی، شبیه‌سازیهای محاسباتی و پردازش تصاویر را می‌شود به‌عنوان چند نمونه نام برد. اصولا وقتی صحبت از گرافیک در کامپیوتر به میان می آید با دو مسئله روبرو هستیم، گرافیک دو بعدی و گرافیک سه بعدی. البته الان دیگر به لطف کارتهای گرافیکی سریع که از قابلیتهای سه بعدی به بهترین شکل پشتیبانی میکنند، گرافیک دو بعدی جایگاه خود را از دست داده است.
بردارها و پیکسلها :
اجرا و ایجاد گرافیک کامپیوتری با دو روش متفاوت امکان پذیر اشت:
روش برداری (Vector) و روش پیکسلی . در روش برداری یک نقطه در تصویر توسط یک خط برداری به نقطه ی بعدی در همان تصویر مرتبط می شود. می توانید خطهای برداری را بدلخواه ادامه داده و سپس انتهای خط را بسته و محیط داخل آن را رنگ آمیزی نمایید. خطها و نقاط انتهایی آنها در نقاط با مختصات مطلق در فضای طراحی قرار دارند و بهمین دلیل می توانید خطها را بسادگی تغییر مقیاس و اندازه دهید.
این روش برای ایجاد لوگوها و آرم ها و گرافیک های تحت وب بسیار مناسب است. برنامه هایی مانند کورل دراو یا فری هند یاIllustrator از همین روش برای ایجاد گرافیک کامپیوتری استفاده می کنند.
اما در روش پیکسلی از تعداددی نقاط چهارضلعی کوچک به نام پیکسلها برای ساخت تصاویر Bitmap استفاده می کنیم . هر نقطه ممکن است یک رنگ متفاوت اختیار نموده و به کمک آرایه های گوناگون از این نقاط می توانید تصاویر یا عکسهای دلخواه را ایجاد نمایید. هرچه پیکسل در یک تصویر بیشتر باشد حجم فایل آن تصویر بزرگتر و کیفیت آن بهتر خواهد بود. تعداد پیکسلهای قرار گرفته در یک تصویر را کیفیت یاResolution آن تصویر می نامند.
اما تصاویر پیکسلی (Bitmap ) مانند تصاویر برداری قابلیت مقیاس پذیری ندارند. اگر یک تصویر پیکسلی را بیش از اندازه بزرگ نموده یا بر روی آن تمرکز نمایید، آن تصویر به شکل پیکسل پیکسل ظاهر خواهد شد . برنامه هایی مانند فتوشاپ یاCorel photo-paint از این روش برای ایجاد گرافیک کامپیوتری استفاده می کنند.
گرافیک دوبعدیTwo Dimensional graphics ) ( :
تمامی تصاویر ثبت شده به وسیله رایانه که از یک نمای ثابت بدست آمده‌است و قدیمی ترین راه ویرایش تصاویر به وسیله رایانه‌است تا صحنه‌ای که بدست می‌آید صحنه ثبت شده از یک نما باشد . که به شاخه‌های مختلف تقسیم می‌گردد.(نقاشی دیجیتالی -ویرایش تصاویر- انیمیشن)
نقاشی دیجیتالی :
نقاشی دیجیتالی در مجموع به تصاویر خلق شده توسط رایانه که به ‌وسیله نرم افزارهای مختلف ایجاد می‌شود، اطلاق می‌گردد. این شاخه از گرافیک دو بعدی به شیوه‌های مختلف انجام می‌پذیرد درست مثل نقاشی دستی شیوه‌های مثل رئال یا سورئال دارد.
ویرایش تصاویر :
ویرایش تصاویر به ایجاد تغییرات در تصاویری گفته می‌شود که در گذشته به وسیله ورودی‌ها به رایانه داخل شده ‌است . مانند رتوش تصاویر در عکاسی‌ها یا ویرایش چند عکس برای یک صحنه فیلم . برای معرفی بهترین نرم افزار برای این کار میتوان به نرم افزار Photoshop از شرکت Adobe نام برد.
انیمیشن :
این شیوه را تمامی ما می‌شناسیم امروزه بیشتر فیلم‌های کارتونی به این شیوه تولید می‌شوند. ایجاد تصاویر دیجیتالی و کنار هم قرار دادن آنها را انیمیشن می‌نامند. در گرافیک دوبعدی مقولاتی از جمله کارتون های معمولی به چشم میخورد. شاید بتوان گفت تصاویر بطور کلی مهمترین عنصر گرافیک دو بعدی را تشکیل میدهند. از جمله مهمترین فعالیتهایی که در گرافیک دو بعدی انجام میگیرد، خواندن، نمایش، تغییر موقعیت، تغییر اندازه، چرخش و فیلتر کردن یک تصویر میباشد. این تصویر میتواند یک فایل بر روی کامپیوتر باشد (مثلا با فرمت jpg یا bmp) یا میتواند مستقیما در برنامه و توسط کد نویسی تولید شود. به هر صورت سخت افزارهای گرافیکی که تا قبل از سال 95 در بازار موجود بودند، عمدتا بر روی این قابلیتها تمرکز داشتند. بعنوان نمونه، الان تقریبا همه کارتهای گرافیکی (چه دو بعدی و چه سه بعدی) دارای بخشی ویژه برای رسم تصاویر در صفحه میباشند. عملیات blit – که مخفف کلمات bit-block transfer (به معنای انتقال تکه ای از بیتها) میباشد – به نوعی هسته مرکزی فعالیتهای یک کارت گرافیکی در حالت دو بعدی را میسازد. همچنین بسیاری از سخت افزارها دارای چیپ ویژه ای جهت کشیدن و جمع کردن تصاویر میباشند. این تکنیک که image stretching نام دارد در برنامه های سه بعدی هم کاربرد فراوانی دارد. از جمله بخشهای مهم گرافیک دو بعدی میتوان به فونتها برای رسم مطالب بر روی صفحه اشاره کرد. فونتها هم اغلب توسط تصاویر نمایش داده میشوند. از دیگر فرآیندهایی که در هنگام کار با تصاویر انجام میگیرد، ماسک کردن بخشی از تصویر میباشد، تا به این شکل بتوان جلوه های ویژه متعددی را ایجاد کرد. این تکنیک که امروزه در گرافیک سه بعدی هم کاربرد فراوانی دارد، در بخش گرافیک سه بعدی بطور مفصلتری بررسی خواهد شد. اگر بخواهیم نمونه هایی گویا از برنامه های گرافیک دو بعدی را مثال بزنیم، میتوانیم به بازیهای دهه هشتاد و نود اشاره کنیم؛ در آن زمان تقریبا اکثر بازیها دو بعدی بودند و همگی بر یک اصل استوار بودند: نمایش تصاویر ثابت به شکل پشت سر هم بطوری که حرکت را القاء کند. نهایت هنری که میتوانستند به خرج دهند ایجاد صحنه هایی مثل انفجار، بارش باران یا انعکاس نور البته در حد بسیار ابتدایی بود که این کارها عمدتا توسط تصاویر از پیش آماده شده انجام میگرفت. با ورود کارتهای جدیدتر و با قابلیتهای سه بعدی بالا، اگرچه بسیاری از خصوصیات گذشته حفظ و حتی تقویت شد، ولیکن عناصر جدیدی به این جمع اضافه گشت.
حال به بررسی اصول اشکال دوبعدی می پردازیم :
اگر دو نقطه در فضا را به یکدیگر وصل کنید ، یک خط ( Line ) خواهید داشت . به عنوان مثال اگر دونقطه( 0,0,0 ) و ( 5,5,0 ) را به یکدیگر وصل کنید ، خطی بین این دو نقطه خواهید داشت . حال اگر خط مزبور را تا نقطه ( 9,3,0 ) ادامه دهید ، یک چندخطی ( Polyline ) بوجود میاید . در صورت اتصال نقطه آخر به مبدا یک شکل بسته یا یک چندضلعی ( Polygon ) را در اختیار خواهید داشت . به شکل زیر دقت کنید :
صفحه سه ضلعی ( Face ) بوجود آمده در شکل بالا ، مبنای تشکیل دهنده ساختمان موضوعات ( Objects ) در محیط سه بعدی میباشد.
تمایز اشکال بسته ( Closed Shape ) از اشکال باز ( Open Shape ) از اهمیت زیادی برخورداره . این بدین خاطره که بسیاری از اشکال دوبعدی را قبل از بستن نمی توان به موضوعات سه بعدی تبدیل کرد.
بطور کلی یک چندضلعی ( Polygon ) دارای سه عنصر بنیادی به شرح زیر است :
1 – گره یا راس ( Vertex ) :
نقطه ای است که تعدادی از خطوط در آن جا به یکدیگر متصل میشوند . به عبارت دیگر ، گره یا راس نقطه تقاطعی واقع در فضای سه بعدی میباشد. ( تعریف علمی : راس یک نقطه بدون بعد در فضا است . راسها در هر دو اشیا دوبعدی و سه بعدی یافت میشوند )
2 – لبه ( Edge ) :
هریک از خطوط قرار گرفته بین دو گره از یک چند ضلعی را اصطلاحا یک لبه میگویند .
3 – صفحه یا وجه ( Face ) :
وقتی که یک شکل بسته دوبعدی در اختیار داشته باشید ، به ناحیه محصور توسط لبه های آن شکل اصطلاحا صفحه یا وجه میگویند .
پاره خط ( Segment ) :
همانطور که در شکل با
لا مشاهده میکنید ، خطی که دو راس را به یکدیگر متصل میکند پاره خط نامیده میشود . ( در واقع پاره خطها از اجزا بنیادین چندضلعی ها به حساب نمی آیند . )
نکته بسیار مهم : بنیادی ترین عنصر عناصر سه بعدی ، همین وجوه ( Face ) هستند و در واقع اشکال پیچیده از کنار هم قرار گرفتن وجوه مختلف تشکیل میشود مانند شکل زیر :
گرافیک سه بعدی : (Three Dimensional graphics)
تصاویر سه بعدی که اصطلاحا استریوگرام نامیده میشوند. در واقع تصاویر مسطح دوبعدی هستند که بعد سوم آنها در میان دو بعد دیگر پنهان است.شیوه پدیدار ساختن بعد سوم در اینگونه تصاویر به این نحو است که نخست بیننده تصاویر را در نزدیک بینی خود نگاه داشته و سپس با آهستگی از صورت خود دور می کند به این ترتیب با دور شدن تصویر از چشمان بیننده بعد سوم تصاویر پدیدار می شود.
سالها گذشت تا سرانجام گروهی از دانشمندان توانستند با ادغام دو استریو گرام در یک تصویر یک اتواستریوگرام پدید آورند که تماشای آن به هیچ وسیله ای نیاز نداشت و بدین سان بود که آنها توانستند برای نخستین بار در طول تاریخ تصاویر استریوگرامی را که از نقاط تصادفی سیاه و سفید تشکیل شده بود با بکارگیری کامپیوتر اپل-2 تولید نمایند. در این کامپیوتر به وسیله برنامه نویسی به وسیله زبان بیسیک تصاویری بر اساس نقاط تصادفی و گاها غیر تصادفی خلق می شد . از این زمان بود که عملا رایانه و نرم افزارهای رایانه ای و برنامه نویسی توانست جایگزین دستگاههای فیزیکی برای ایجاد استریو گرام شود.شاید ورود رایانه به حوزه تصاویر سه بعدی را بتوان نقطه عطفی در تاریخ استریوگرام دانست.با پیشرفت رایانه و تلاشهای متخصصین سرانجام سال 1991 نخستین استریوگرام تمام رنگی با استفاده از نرم افزارهای کامپیوتری مدلسازی سه بعدی و تکنیکهای رایانه ای ایجاد شد و از آن به بعد بود که استریوگرام به گونه تجاری و در قالب کتب و مجلات مختلف به بازار عرضه شد . ورود تصاویر استریوگرام در سالهای نخست دهه هفتاد شمسی به کشورمان هم با استقبال نسبتا خوبی مواجه شد و مجلات و کتب متعددی که در این زمینه و حاوی تصاویر استریوگرام مختلف به بازار آمد.
به جرات میتوان گفت گرافیک سه بعدی بر مبنای گره ها و چند ضلعی ها (polygon) بنا شده است. در واقع گره ها (vertex) در گرافیک سه بعدی حکم اعداد در ریاضی را دارند. هر کاری که بخواهیم انجام دهیم به نوعی به گره ها مربوط میشود. آنها هستند که اشیاء ما را میسازند، در نورپردازی ها استفاده شده و بافت زنی میشوند. حتی میتوان با انتقال آنها در فضای سه بعدی تصاویر متحرک را نیز به آسانی بدست آورد.
اصول گرافیک سه بعدی :
فضای سه بعدی :
فضای سه بعدی ( 3D Space ) عبارت از یک مکعب ریاضی تعریف شده در داخل کامپیوتر و کنترل شده توسط نرم افزارهای گرافیکی میباشد.
همانند فضای واقعی ، محیط سه بعدی داخل نرم افزار نیز نامحدود بوده و ضمن استفاده از مختصات مناسب مشخص میگردد. مختصات :
در فضای سه بعدی ، کوچکترین فضای قابل اشغال عبارت از یک نقطه ( Point ) می باشد.
هر نقطه توسط مجموعه منحصر بفردی از سه عدد که اصطلاحا به آن مختصات ( Coordinates ) گفته میشود ، در فضای سه بعدی مشخص میگردد. به عنوان مثال مختصات مبدا یا مرکز فضای سه بعدی توسط مختصات ( 0,0,0 ) معرفی میشود.
به این ترتیب هر نقطه از فضای سه بعدی دارای یک مختصات منحصر بفرد بوده که به ترتیب نمایانگر ارتفاع ، عرض و عمق آن نقطه میباشد.
محورها :
هر محور ( Axis ) عبارت از یک خط فرضی است که یک امتداد خاص در فضای سه بعدی را مشخص میکند. بطور کلی سه محور استاندارد Y ، X و Z وجود دارد که در شکل زیر میبینید :
کاربردهای مشترک گرافیک سه بعدی :
گرافیک سه بعدی در برنامه های کامپیوتری جدید کاربرد بسیاری دارد. که برنامه ها از گرافیک سه بعدی استفاده میکنند از بازیهای اینتراکتیو سه بعدی تا شبیه سازی و پزشکی و مصارف شغلی متفاوت است. محصولات پر کیفیت سه بعدی راه خودشان را به سمت فیلمها و صنعت و آموزش به خوبی پیدا کرده اند. Real-time 3D :
گرافیک های سه بعدی بلادرنگ متحرک هستند و با کاربر فعل و انفعال دارند. یکی از اولین استفاده ها از گرافیک بلادرنگ سه بعدی شبیه سازی پرواز در امور نظامی بود.
برنامه ها برای گرافیک سه بعدی بر روی کامپیوترها تقریبا بیشمار هستند. شاید عمومی ترین استفاده از گرافیک کامپیوتری سه بعدی بازیهای رایانه ای باشند. امروزه به سختی میتوان کامپیوتری را یافت که نیاز به یک کارت گرافیک سه بعدی نداشته باشد. سه بعدی همیشه برای تجسمات علمی و برنامه های مهندسی معروف بوده است. رابط های گرافیکی نرم افزاری هم از سخت افزار سه بعدی استفاده فراوان میبرند. برای مثال ورژن کنونی سیستم عامل مکینتاش یعنی Mac OS X برای رندر کردن تمام پنجره‌ها و کنترل‌ها و جلوه های تصویری از OpenGL استفاده میکند.
گرافیک سه بعدی غیر همزمان Non-Real-Time :
برای برنامه‌هایی که از گرافیک سه بعدی بلادرنگ استفاده میکنند قانونی وجود دارد. با دادن فرصت بیشتری برای پردازش تصاویر شما می‌توانید گرافیک‌های سه بعدی با کیفیت بالاتری ایجاد نمایید. به طور مثال بعضی از نرم افزارهای مدل سازی از گرافیک سه‌بعدی بلادرنگ برای تقابل با هنرمند برای خلق محتوای مورد نظرش استفاده می‌کنند. سپس تصاویر به برنامه دیگری فرستاده می‌شوند (ray tracer) که تصاویر را رندر می‌کنند. رندر کردن یک فریم تنها برای انیمیشنی مانند داستان اسباب بازی به ساعتها زمان بر روی یک کامپیوتر سریع نیاز دارد. این پروسه رندر و ذخیره سازی صدها فریم یک انیمیشن را می‌سازد که بطور رشته متوالی قابل پخش مجدد می‌باشد. اگرچه پخش تصاویر انیمیشن ممکن است یک عمل بلادرنگ به نظر برسد اما اینطور نیست. چون آن اینتراکتیو نیست در نتیجه آن بلادرنگ نیست بلکه بیشتر یک سری تصاویر از پیش رندر شده می‌باشد.
شاید تا حالا واژه رندر (render) را زیاد شنیده باشید، این عبارت در کل به معنای خلق تصاویر دو بعدی از اشیاء سه بعدی بر روی صفحه کامپیوتر میباشد. از گره شروع میکنیم تا ببینیم اشیاء سه بعدی که در صفحه مانیتور میبینم واقعا از چه چیزی تشکیل شده اند. یک مکعب را در نظر بگیرید. مکعبها هشت گوشه دارند که این هشت گوشه خود شش وجه میسازند. هر یک از وجوه( face) یک مربع هستند. و میتوان گفت که هر مربع از کنار هم قرار گرفتن دو مثلث تشکیل شده است.
سخت افزارهای گرافیکی در حقیقت فقط میتوانند سه عنصر نقطه، خط، و مثلث را رسم کنند باید گفت که حتی پیچیده ترین سطوح – از یک مربع ساده گرفته تا یک نوار موبیوس – از مثلثها تشکیل شده اند. یک نکته مهم در مورد کارت های گرافیکی این است که آنها به هیچ وجه قادر نیستند بطور مستقیم منحنی رسم کنند، و حتی چند ضلعی های بیشتر از سه گوش را هم عملا نمیشناسند. نکته مهم دیگر این که هم صفحه بودن در گرافیک کامپیوتری بسیار با اهمیت میباشد، و از این رو تنها سطحی که سخت افزارهای سه بعدی قادر به رسم مستقیم آن هستند، مثلث میباشد. عملیات شکستن سطوح منحنی به مثلثهای کوچک، tessellation نامیده میشود که این روزها در برنامه های گرافیکی بعنوان یک قابلیت مهم تلقی میشود. در واقع اصطلاح Higher Order Primitive (اشیاء سطح بالا) به اشیائی اشاره دارد که هم صفحه نیستند، مثلا سطوح درجه دو یا منحنی ها. اگرچه ممکن است خیلی برنامه ها آنها را تنها با گرفتن چند ورودی از شما بر روی صفحه رسم کنند، ولی چیزی که اتفاق می افتد با چیزی که شما بر روی تصویر میبینید اندکی فرق میکند. بسته به وضوح صفحه، فاصله شیء از شما و توان گرافیکی سیستم، سطوح منحنی بر طبق محاسبات پیچیده و سنگین به یک سری مثلث کوچک تبدیل میشوند. هر چه در یک محل تعداد این مثلثهای کوچک بیشتر باشد منحنی شما هموارتر به نظر میرسد. از سایر ویژگی های اشیاء سه بعدی باید به قابلیت آنها برای دریافت نور و در نتیجه داشتن رنگ اشاره کرد. بدون نور هیچ چیز قابل رویت نمیباشد و اگر هم بتوان اشیاء را دید، نهایتا به شکل کاملا تخت و دو بعدی میسر خواهد بود. هنگامی که اشیاء موجود در یک صحنه را رسم میکنید باید به نحوه نورپردازی هم کاملا فکر کنید، زیرا زیباترین اشکال سه بعدی بدون وجود نور مناسب جلوه خوبی نخواهند داشت. در واقع دو مبحث نور و رنگ ارتباط تنگاتنگی با هم دارند؛ رنگ، دریافت چشمان ما از نوری است که به سطوح برخورد کرده و انعکاس می یابد. نور هم مجموعه ای از فوتونهاست که با برخورد به سلولهای مخروطی چشمها، آنها را تحریک میکند. حالا بار دیگر به مثال مکعب بازمیگردیم، همانطور که در طبیعت همه اشیاء دارای سطح و رنگ مخصوص به خود میباشند، اشکال سه بعدی درون صفحه کامپیوتر هم باید دارای ویژگی خاصی باشند که نوع واکنش آنها در مقابل نور را مشخص کند. در اصل، خصوصیات سطحی هر جسم ماده آن جسم نامیده میشوند. ماده یا(material) میتواند نشانگر رنگ نهایی یک جسم در حالتی باشد که نورپردازی اعمال میشود. شما میتوانید بسته به نیاز، از نورپردازی استفاده نکنید و تنها از رنگهای ثابت برای اشیاء بهره ببرید. از نکات مهم دیگر نحوه سایه زنی اشیاء است، به شکل زیر توجه کنید :

معمولا تکنیکهایی که ظاهری زیباتر و هموارتر را بوجود می آورند به میزان محاسبات بیشتری نیاز داشته و بنابراین سرعت اجرای برنامه را پایین می آورند. یکی از مواردی که در حین ساخت اشیاء سه بعدی باید مد نظر قرار گیرد این است که اگر قرار است آنها تحت نورپردازی قرار گیرند، باید ویژگی های خاصی داشته باشند. مهمترین نکته، وجود بردارهای خاصی به نام بردار نرمال(normal vector) برای هر گره میباشد. این بردارها، همانطور که از نامشان پیداست با توجه به جهتی که قرار است شیء نسبت به منبع نوری داشته باشد بر گره عمود میباشند. در محاسبات نورپردازی، زاویه بین منبع نوری و سطح اشیاء (که تعیین کننده میزان نور دریافتی هر سطح میباشد) توسط همین بردار نرمال تعیین میشود. برای اینکه مبحث نور را به پایان ببریم، لازم است نکته ای هم راجع به انواع منابع نوری بگوییم. بطور کلی نورها در طبیعت به سه دسته تقسیم میشوند. نورهای نقطه ای که برای مثال میتوان از یک لامپ معمولی نام برد. این نورها دارای موقعیت و جهت مشخص میباشند و قادر هستند که محدوده ای مشخص از اطراف خود را روشن کنند. نوع دیگر نورهای موازی میباشند که به علت دور بودن بیش از حد منبع ساتع کننده از بیننده، هیچ موقعیتی را نمیتوان برای آنها ذکر کرد. آنها تنها جهت دارند و خورشید بهترین مثال از این نوع است. دسته آخر منابع نوری، نورهای پروژکتوری میباشند که در واقع حالت خاصی از نورهای نقطه ای هستند. تنها تفاوت این دو دسته این است که نورهای پروژکتوری (یا نورهای لکه ای) همه محیط اطراف خود را به یک شکل روشن نمیکنند، بلکه همانند یک نورافکن، ناحیه ای مخروط وار را نورپردازی میکنند. از جمله خصوصیات مشترک همه نورها، رنگ، شدت و ضریب رقیق شوندگی نور بر حسب فاصله تا منبع نوری است. شاید بتوان گفت بیش از نیمی از تکنیکهای ویژه گرافیک کامپیوتری به مسئله نورپردازی مربوط میشوند، از این رو این بخش از گستردگی زیادی برخوردار است و میتوان با تغییر ماده سطح، رنگ نور، و رنگ گره ها هزاران جلوه بصری زیبا را خلق کرد. یکی دیگر از مباحثی که به شکل روز افزونی در گرافیک سه بعدی مطرح میشود، مسئله بافت سطوح میباشد. بافت یا(texture) در واقع تصویری دو بعدی است که به شکلی خاص بر روی سطوح و اجسام سه بعدی نگاشته میشود تا به آنها ظاهری واقع گرایانه تر بدهد.
برای اینکه بتوانیم اشیاء را در فضای سه بعدی حرکت داد یا ظاهر کاملا پرسپکتیوی به وجود آورد به شاخه ی از ریاضیات به نام جبرخطی نیاز داریم. ماتریسها آرایه های چند بعدی از اعداد هستند که میتوانند برای انجام بسیاری محاسبات پیچیده بکار روند. در گرافیک سه بعدی ماتریسها حکم مفاصلی را دارند که سایر بخشها را به هم متصل میکنند؛ از جمله کاربردهای آنها تعریف یک محوطه دید(viewport) برای نمایش اشیاء است. همچنین میتوان به کمک آنها تبدیلات گوناگونی روی اشیاء سه بعدی انجام داد. انتقال، چرخش، تغییر اندازه، منعکس کردن روی یک سطح (مثلا برای ایجاد سایه) را میتوان از جمله رایج ترین عملیات ماتریسی ذکر کرد که در گرافیک سه بعدی خیلی کاربرد دارند. به کمک ماتریسها میتوانید کلیه خصوصیات یک دوربین پیشرفته را در دنیای واقعی در محیطی مجازی شبیه سازی کنید.
بردارها هم از جمله مولفه های پرکاربرد در گرافیک سه بعدی هستند که ارتباط تنگاتنگی با ماتریسها دارند. در واقع در گرافیک سه بعدی، همه مختصات اعم از موقعیت گره ها، بردارهای نرمال، مختصات بافتها (و حتی بنوعی رنگها) بصورت برداری تفسیر میشوند. این بردارها میتوانند یک، دو، سه و یا چهار بعدی باشند. از دیگر نکاتی که شاید جالب به نظر برسد، میتوان به تفسیر رنگها توسط کامپیوتر اشاره کرد.
همه رنگها بر اساس ترکیبی از مولفه های قرمز، سبز و آبی ساخته میشوند. واژه RGB هم از حروف اول این کلمات گرفته شده است. معمولا مقدار هر یک از این سه مولفه بین 0 تا 1 میباشد. میتوان با تنظیم مقادیر مختلف برای این متغیرها انواع رنگها را ایجاد کرد.
حال به نظر شما با چه ترتیبی تصاویر سه بعدی متحرک را بر روی مانیتور نمایش میدهند. یکی از راههای ساخت تصاویر متحرک توسط کاغذ، رسم تصاویری با اختلافات جزئی نسبت به هم بر روی صفحات متوالی کاغذ میباشد، سپس میتوانید با ورق زدن این صفحات، تصاویر متحرکی را مشاهده کنید. در کامپیوتر معمولا دو (یا حداکثر سه) صفحه برای رسم تصاویر رنگی در نظر گرفته میشوند. در اصطلاح به این صفحه ها که مسئولیت نگهداری اطلاعات تک تک پیکسلهای صفحه را دارند، بافر (buffer) گفته میشود. بافرهای گوناگونی در گرافیک سه بعدی بکار میروند که میتوان از بین آنها به دو بافر رنگی (color buffer) و بافر عمق اشاره کرد. بافر رنگی غالبا مجموعه ای از دو بافر مجزا به نامهای بافر پشتی و بافر جلویی است. بافر جلویی (front buffer) صفحه ای است که در هر لحظه تصاویر را بر روی صفحه نمایش میدهد. در همین حال که اطلاعات موجود در بافر جلویی بر روی صفحه هستند، برنامه شما در حال ایجاد تغییرات مورد نظر بر روی بافر پشتی (back buffer) است؛ به محض اینکه بافر پشتی آماده نمایش شد، جای این دو بافر عوض میشود(در اصطلاح page-flipping)، این روند تا انتهای اجرای برنامه ادامه دارد و سرعت تعویض این بافرها همان سرعت اجرای برنامه شماست که با واحد فریم در ثانیه (FPS) سنجیده میشود. هر چه این نرخ بالاتر باشد، تصویری هموارتر خواهید داشت. چشمک زدن تصویر (flicker) مشکلی است که غالبا بواسطه پایین بودن نرخ فریم پیش می آید. معمولا نرخ فریمهای بالای 30، مناسب میباشند. بطور کلی هر چه صحنه شما شلوغتر باشد و در آن از تکنیکها و اشیاء بیشتری استفاده کرده باشید نرخ فریم برنامه پایینتر می آید. بافر مهمی دیگر، بافر عمق میباشد. بافر عمق (depth buffer) که گاهی اوقات بافر z هم نامیده میشود وظیفه تنظیم رنگ نهایی پیکسلهای روی مانیتور را بر عهده دارد. اگر یادتان باشد گفتیم که در گرافیک سه بعدی، همه چیز از یک سری نقاط به نام گره تشکیل شده است، گره هایی که همگی دارای مختصات سه بعدی در فضا میباشند. معمولا سیستمهای مختصاتی که در گرافیک سه بعدی بکار میروند سمت مثبت محور x را جهت راست، سمت مثبت y را جهت بالا و سمت مثبت محور z را رو به بیرون یا داخل مانیتور در نظر میگیرند. با این توضیح، فرض کنید شما در مختصات (10, 15, 5) یک کره رسم کرده اید. این کره قرمز رنگ میباشد. حالا در قسمت دیگری از برنامه نیاز به رسم یک مکعب آبی در مختصات (10, 15, 0) دارید. فرض میکنیم از سیستم مختصات چپگرد استفاده شده باشد (یعنی مختصه z به سمت داخل مانیتور میباشد)، در نتیجه کره قرمز رنگ پشت سر مکعب آبی قرار خواهد گرفت و شما قاعدتا باید تنها مکعب را در آن محل ببینید. تعیین اینکه در هر موقعیت، چه شیئی و با چه رنگی باید روی پیکسلهای صفحه رسم شود، بر عهده بافر عمق میباشد. بافر عمق، پس از ارسال موقعیت گره های هر شیء توسط شما آنها را ذخیره کرده، و در صورت رسم اشیائی دیگر (که احتمالا رنگ متفاوتی خواهند داشت) در موقعیتهای قبلی، مختصه عمق (یا همان z) اشیاء قدیم و جدید را با هم مقایسه میکند. پس از انجام این تست، هر یک از اشیاء که به بیننده نزدیکتر بود میتواند در نهایت پیکسلهای صفحه را با رنگ خود، رنگ آمیزی نماید! مطالب فوق الذکر اسکلت گرافیک سه بعدی را بنا میکنند، اما همه چیز به آنها ختم نمیشود، و روز به روز، با پیشرفت کارتهای گرافیکی، تکنیکهای ویژه ای عرضه میشوند که البته مبنای اکثر آنها همینهایی است که در بالا گفتیم. برای مثال در مبحث نور و بافت، میتوان علاوه بر نورپردازی های معمولی و نگاشت بافتهای ساده بر روی اشیاء، بسیاری از پدیده های دنیای واقعی را هم شبیه سازی نمود. بعنوان نمونه، میتوان به کمک یک ماتریس خاص و نوع ویژه ای از بافت زنی (texture mapping)، جلوه انعکاس محیط اطراف بر روی اشیاء را پیاده سازی نمود. یا میتوان بافتهای حجمی را برای ایجاد جلوه رنگین کمان یا منشور نوری بکار برد. همچنین میتوان با ترکیب مولفه های رنگی تصاویر، بافتهایی را بر روی اشیاء نگاشت که به نظر برجسته می آیند (این تکنیک bump mapping نام دارد). ایجاد مه و سایر پدیده های اتمسفری هم به راحتی در برنامه های گرافیکی امکان پذیر میباشد. اصولا دو نوع مه وجود دارد، یکی مه پیکسلی (table fog) که بصورت جدولی از پیش آماده شده در اکثر کارتهای گرافیکی پیاده سازی شده و دیگری مه گره ای (vertex fog) که با انجام محاسباتی بر روی گره های اشیاء اعمال میشود.
قبلا اشاره شد که میتوان با استفاده از ماتریسها، تصاویر متحرک را بوجود آورد. این نوع تصاویر متحرک، انیمیشن از نوع ماتریسی نامیده میشوند که علی رغم داشتن تواناییهای بالا، امروزه بدلایلی کمتر از آنها استفاده میشود. در عوض روش نسبتا جدیدتری برای ایجاد انیمیشن مورد استفاده قرار میگیرد که در اصطلاح گرافیک سه بعدی، انیمیشن اسکلتی خوانده میشود. در این روش که بیشتر برای متحرک کردن کاراکترهای بازی بکار گرفته میشود، میتوان کل بدن و دست و پای شخصیت بازی را بصورت یک شیء واحد ساخت. سپس با استفاده از قابلیتهایی همچون پوست انعطاف پذیر (skin)، حرکتهای لازم به اجزاء مختلف بدن فرد داده میشود.
از دیگر ویژگی هایی که میتوان برای واقعی تر کردن یک صحنه سه بعدی از آن استفاده کرد، سایه میباشد. سایه ها که ارتباط مستقیمی با نور دارند، بطور کلی شامل چند دسته میشوند. ساده ترین نوع آنها (همانطور که در مبحث ماتریسها اشاره شد) با نگاشتن گره های یک شیء بر روی یک صفحه تخت بوجود می آید. این نوع محدودیتهای زیادی دارد. بنابراین جز در موارد خاص از آن استفاده نمیشود. نحوه دیگر پیاده سازی سایه، کاربرد بافتهایی میباشد که حاوی تصاویر رندر شده از سایه ها و سایر اثرات نورها در صحنه میباشند. به این تصاویر ویژه light map گفته میشود. این روش سریعترین نوع ایجاد سایه است. ولی تنها میتوان برای اعمال سایه بر روی سطوح تخت از آن استفاده کرد. انعطاف پذیر ترین نوع سایه ها، سایه های حجمی هستند. سایه های حجمی (shadow volume) میتوانند بر روی هر نوع سطحی اعمال شده، و حتی قابلیت ایجاد سایه برای اشیاء متحرک را هم دارا میباشند. البته باید توجه داشت که این، پیچیده ترین و کندترین نوع سایه ها هم میباشد. از سیستمهای ذره ای (particle system) معمولا برای شبیه سازی پدیده های طبیعی همچون برف، باران، آتش، انفجار و گرد و غبار استفاده میشود. سخت افزارهای جدید، دارای اشیاء آماده ای میباشند که میتوانند بطور مستقیم رندر شده، و حتی تصویری را هم بعنوان بافت بر روی خود داشته باشند. بدین ترتیب میتوان با تنظیم موقعیت، سرعت حرکت، تعداد، طول عمر، رنگ و بافت این ذرات (point sprite) انواع پدیده ها از جمله آتش و برف و باران را به شکلی کاملا واقعی در صحنه های سه بعدی ایجاد کرد. قبلا به بافرها اشاره کردیم، ولی یک بافر مهم دیگر هم وجود دارد. یعنی بافر استنسیل (stencil buffer) که تکنیکهای بسیار زیادی توسط آن قابل پیاده سازی میباشند. از جمله این تکنیکها سایه حجمی (که پیشتر به آن اشاره شد)، آینه، ماسک کردن تصویر، برش زدن مناطق دلخواهی از تصویر، ایجاد اشیاء شفاف، محو تصاویر در پس زمینه و ترکیب تصاویر با هم میباشد. در آخر هم باید به سایه زنها اشاره کنیم. سایه زنها (shader) در واقع پرده آخری میباشند که فراروی شما قرار دارند. با عرضه سایه زنها، و زبانهای سایه زنی، انقلابی در عرصه گرافیک کامپیوتری ایجاد شد و بسیاری از محدودیتهای که تا چندی پیش در سر راه برنامه نویسان گرافیکی (بخصوص سازندگان بازی) قرار داشتند عملا کنار رفتند. امروزه سایه زنهای گره، سایه زنهای پیکسل، سایه زنهای بافت و سایه زنهای نوری وارد صحنه شده اند و میتوان توسط زبانهایی مثل Assembly، C، و حتی Delphi برای آنها برنامه نوشت. وقتی شما از سایه زنها استفاده میکنید، به گونه ای خط رندر کارتهای گرافیکی را بطور کامل تحت تسلط خود در آورده اید. در اینجا کلیه عملیات، از گرفتن گره های ورودی، پردازش، تبدیل، برش، و نگاشت آنها تا پیاده سازی فرمولهای مه، نورپردازی، بافت زنی، سیستمهای ذره ای و انعکاسهای نوری بر عهده خودتان میباشد. حتی میتوانید در سطحی پایینتر، بر روی تک تک پیکسلهای صفحه کار کنید و آنها را با فرمولهای ابداعی خودتان تحت تبدیلات مختلف قرار دهید.
در انتها نام چند از بزر گان و پایه گذاران گرافیک کامپیوتری سه بعدی را ذکر میکنیم :
افرادی چون James Blinn، Andy Catmull، Phillip Taylor و John Carmack
در کل می توان گفت این مقوله هر روز رو به گسترش و پیشرفت است وجای کار بسیاری برای افراد کنجکاو و جویای پیشرفت دارد به عنوان مثال می توان به مبحث سایه زنها که در پیش شرح داده شد اشاره کرد که امروزه موضوع اصلی رقابت سازندگان کارت های گرافیک است.
به امید روزی که متخصصان ایرانی جای واقعی خود را در این زمینه پیدا کنند.

 

درباره abbas

اینرا هم چک کنید

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

مجله فانوس به سلسه برنامه ها و فعالیت های ظرفیت پروری و حمایت جوانان و …

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *