ورود

View Full Version : آموزش: [OpenGL] برنامه نویسی گرافیک سه بعدی مدرن



amin1softco
شنبه 10 تیر 1391, 22:27 عصر
سلام خدمت تمامی دوستان
در پی استقبال دوستان و عزیزان از تاپیک قبلی و در ادامه اهدافش و صحبتی که با مدیر بخش پویا داشتیم می خواهیم در این تاپیک خیلی منظم به آموزش مرحله به مرحله OpenGL بپردازیم .
پیشاپیش از همه دوستان خواهش می کنم سئوال , پروژه دانشجویی یا امثالش رو به این تاپیک وارد نکنند و از مدیران هم تقاضا می کنم هر مطلبی که خارج از اهداف این تاپیک زده شد حذف کنند.

من در این تاپیک فقط قصد دارم این کتاب (http://www.arcsynthesis.org/gltut/index.html) را به فارسی برش گردونم البته نه ترجمه دقیق بیشتر چیزی که متوجه می شم و از زبان خودم است را اینجا می نویسم و تا جایی که در توانم هست سعی می کنم مطلب مناسبی باشه و ممکنه از منابع دیگه ایی هم استفاده کنم که در صورت استفاده اینجا اسمش رو قرار میدم که دوستانی که مایل به مطالعه زبان اصلی هستند مشکلی نداشته باشند .

همینجا هم از تمامی openGL کار ها(مخصوصاً مدیران بخش) که مطلب مناسبی دارند و مایل به همکاری هستند تقاضا می کنم با حفظ نظم مطالبشون رو اینجا قرار بدهند.
امید وارم با یاری خدا بتونم یک مطلب خوب آماده کنم.

amin1softco
یک شنبه 11 تیر 1391, 11:57 صبح
فهرست مطالب


درباره ی این کتاب

چرا باید این کتاب را بخوانیم؟
چیزی که شما نیاز دارید
سازمان این کتاب
کنوانسیون های مورد استفاده در این کتاب

ساخت آموزش
I. مبانی

معرفی
1. سلام، مثلث!
2. کار با رنگ ها

II. تعیین موقعیت

3. مثلث متحرک OpenGL
4. اشیاء در سکون
5. اشیاء در عمق
6. اشیاء در حال حرکت
7. جهانی در حرکت
8. گرفتن گرا

III. نورپردازی

9. روشن کردن نورها
10. نورهای صفحه
11. روشنایی
12. محدوده دینامیکی
13. دروغ و وانمود کنند ها

IV. بافت

14. بافت عکس نیست
15. بسیاری از عکس ها
16. گاما و بافت
17. Spotlight در بافت

Framebuffer V.
VI. پیشرفته روشنایی
A. برای مطالعه بیشتر

موضوعات مورد علاقه

تاریخچه ب PC سخت افزار

سحر و جادو افسون
Combiners دینامیت
رئوس و ثبت
برنامه آخر
وابستگی
مدرن اتحاد

C. شروع کار با OpenGL

استفاده از دفترچه راهنما(Manual)

amin1softco
سه شنبه 13 تیر 1391, 18:59 عصر
درباره این کتاب
سخت افزار گرافیک سه بعدی به سرعت در حال رشد است ,نه تنها به یک جزء عمده سیستم های کامپیوتری است بلکه یک جزء ضروری این سیستم ها است. بسیاری از سیستم عامل ها به طور مستقیم و حتی ضروری به رندر سه بعدی سخت افزار نیاز دارند. حتی در فضای محاسبات تلفن همراه به طور فزاینده سخت افزار گرافیک سه بعدی یک ویژگی استاندارد برای همه محسوب می شود اما با قدرت و توان کمتر.
درک چگونگی ساخت بیشتر این سخت افزار ها یک چالش سخت است مخصوصاً برای کسانی که تازه با گرافیک و رندر کردن آشنا می شوند.

چر باید این کتاب را بخوانیم؟
بسیاری از کتاب های فیزیکی برای آموزش گرافیک وجود دارد. بسیاری از مخازن آنلاین از دانش وجود دارد، در قالب ویکی، وبلاگ ها، آموزش، و انجمن ها. پس این کتاب چه چیزی ارائه می دهد که دیگران ندارند ؟

برنامه ریزی
در واقع همه منابع ذکر شده با استفاده از چیزی به نام "تابعی ثابت" به مبتدیان آموزش می دهند. این نشان دهنده پیکربندی در پردازنده های گرافیکی قدیمی است که تعریف می کنند چطور یک عملیات رندر خاص انجام می شه.
به طور کلی ساده ترین راه آموزش به مبتدیان گرافیک کامپیوتری که در نظر گرفته شده استفاده از خط لوله تابع ثابت است.(fixed function pipeline.)
این درست در نظر گرفته شده است زیرا بدست آوردن چیزی که اتفاق می افتد با "تابعی ثابت" آسان است.
ساختن یک تصویر از خلق یک چیز واقی ساده تر است. خط لوله تابع ثابت شبیه چرخ های کمکی برای دوچرخه است.
جنبه های منفی به این رویکرد وجود دارد. اول،بسیاری از مفاهیمی که با این روش آموخته می شود را باید به ناچار رها کند زمانی که کاربر با یک مسئله گرافیکی مواجه می شود که باید بوسیله برنامه ریزی (برنامه نویسی) حل شود. برنامه ریزی (برنامه نویسی) محو می کنه بیشتر خط لوله تابع ثابت بنابر این دانش به سادگی منتقل نمی شه.
مشکل بدتر اینه که خط لوله تابع ثابت می تونه باعث توهم دانش در فرد بشه.
کاربر می تونه فکر کنه که می دونه چیکار داره می کنه ولی در حقیقت فقط کپی و پیست کد های اطرافش است.
برنامه نویسی به این ترتیب می شود شبیه به آیین های جادویی: شما بیت های خاصی از کدتون را قبل از بیت های دیگر قرار می دهید، و همه چیز به نظر می رسد به درستی کارمی کنه.
این امر اشکال زدایی را کابوس مانند می کنه. به این دلیل که کاربر هرگز واقعاً نمی فهمه کدش داره چیکار می کنه .
کاربر نمی تونه تشخیص بده , یک مشکل خاص می تونه باعث چی بشه. و بدون این قابلیت دباگ یا اشکال زدایی می شه یکسری از حدس های احتمالی از قسمتی که مشکل سازه.
در مقابل شما نمی تونید با موفقیت استفاده کنید از یک سیستم برنامه ریزی شده بدون درک اولیه اون.
مواجهه با گرافیک سخت افزار به معنی مواجه با موضوعاتی است که تابعی ثابت اغلب در حاشیه ازش رد می شه.
این ممکنه به معنی یک استارت آهسته کلی باشه. ولی وقتی شما در نهایت رسیدید به پایان شما به درستی می دونید چطور هر چیزی کار می کنه.


مشکل دیگر این است که حتی اگر شما به درستی خط لوله تابع ثابت را بفهمید و اون نحوه فکر کردن شما در مورد حل مشکلات را محدود می کنه. به دلیل عدم انعطاف آن, اون ذهن شما را روی حل یکسری مسائل با امکانات خاص متمرکز می کنه و بدور از مسائل دیگه.
اون تشویق می کنه شما فکر کنید به بافت ها(textures) مانند یک تصویر; داده های نقاط به عنوان مختصات بافت , رنگ ها یا موقعیت ها و چیز هایی شبیه این. بوسیله ماهیتش اون خلاقیت و توانایی حل مسئله شما رو محدود می کنه.
در نهایت , حتی بر روی سیستم های تلفن همراه تابعی ثابت " fixed functionality" به صورت کلی در سخت افزار گرافیکی در دسترس نیست و این در آینده بیشتر به واقعیت نزدیک می شه.
این کتاب آموزش در سطح مبتدی ارائه می دهد در مورد آنچه که بسیاری آن را یک مفهوم پیشرفته در نظر می گیرند . اون آموزش رندر قابل برنامه نویسی است برای برنامه نویسان مبتدی در گرافیک از ابتدا .
این کتاب همچنین شامل برخی از مواد مهم است که اغلب نادیده گرفته می شود یا جزو مفاهیم پیشرفته در نر گرفته شده. این مفاهیم در واقع پیشرفته نیستند و آنها اغلب بوسیله بیشتر مواد مقدماتی نادیده گرفته می شوند زیرا آنها با خط لوله تابعی ثابت کار نمی کند.

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

این کتاب چی نیست؟ با این حال یک کتاب در گرافیک رابط های برنامه کاربردی می باشد( graphics APIs) در حالی که اون از openGL و ضرورت آموزش مفاهیم رندر از لحاظ openGL ولی یک کتاب در مورد openGL نیست. هدف این کتاب این نیست که به شما تمام ورودی و خروجی api های openGL را آموزش بده. اینها بخش هایی از توابع و قابلیت های openGL است که ما با اونها برخورد نمی کنیم زیرا به هیچ یک از درس های آموزشی ما مربوط نمی شوند. اگر شما در حال حاضر می دونید گرافیک و دنبال یک کتاب برای یادگیری برنامه نویسی مردن OpenGL هستید این کتاب بدرد شما نمی خوره. ممکنه در اون ظرفیت های مفیدی برای شما موجود باشه اما این کتاب هدف کلیش این نیست.
این کتاب برای این در نظر گرفته شده که به شما بیاموزد چگونه یک برنامه نویس گرافیک شوید.هدفش یک فیلد خاص گرافیکی نیست. اون طراحی شده برای پوشش بیشتر زمینه های رندر سه بعدی . بنابر این اگر شما می خواهید یک توسعه دهنده گیم شوید , یک طراح برنامه cad , انجام چند شبیه سازی کامپیوتری , یا هر چقدر از این ها این کتاب هنوز هم می تواند دارایی برای شما باشد.

این به این معنا نیست که این کتاب تمام مطالب مرتبط با گرافیک سه بعدی را پوشش میده. اصلاً . اون تلاش می کنه تصور پایه ایی برای کاوش های بیشتر شما در هر فیلدی از گرافیک سه بعدی که بهش علاقه داریدفراهم کنه.
یکی از موضوعاتی که این کتاب به طور عمیق آن را پوشش نمیده بهینه سازی است. به طور ساده دلیلش اینه که بهینه سازی یک موضوع پیشرفته است. بهینه سازی می تونه اغلب یک پلاتفرم - خاص , مختلف برای انواع مختلف سخت افزار باشد. همچنین اون می تونه API-خاص باشه که API ها به بهنیه سازی های مختلف نیاز دارند. بهینه سازی ممکنه در جا های مختلف ذکر شده باشه ولی به سادگی اون یک موضوع خیلی پیچیده برای برنامه نویسان تازه کار است. در یک فصل در ضمیمه فرصت های بهینه سازی پوشش داده شده ولی آن فقط یک نگاه سطح بالا فراهم می کنه.


شما به چی نیاز دارید؟
این یک کتاب برای مبتدیان برنامه نویسی گرافیک است همچنین می تواند به عنوان یک کتاب برای کسانی که آشنایی با توابع ثابت " fixed functionality" دارند و می خواهند رندر قابل برنامه ریزی بهتری داشته باشند است ولی این کتاب برای برنامه نویسان مبتدی نیست.
از شما انتظار می رود که قادر به خواندن سی و استدلال کد های سی++ باشید. اگر دانش شما در مورد c/c++ برنامه "سلام دنیا!" است. بنابر این قبل از رندر تصاویر گرافیکی شما باید کد های سنگین تری بنویسید.
رندر گرافیک سه بعدی به سادگی برنامه نویسی مبتدی نیست. این فقط در مورد شیوه آموزش سنتی برای گرافیک مدرن کامپیوتری درست است.
این آموزش ها قابل انتقال به زبان های دیگر نیز هستند. اگر شما می تونید C/C++ را بخوانید برای فهمیدن اینکه کد چگونه کار میکند کفایت می کند. همچنین دایکیومنت ها شرح می دهند که کد ها چگونه کار می کنند و برای بدست آوردن اطلاعات برای این آموزش ها کافی است.
هر بحث مهم در مورد رندر سه بعدی نیاز به بحث در مورد ریاضیات دارد که پایه و اساس تمام فیلد های گرافیک سه بعدی است. در این کتاب از شما انتظار میرود دانش پایه ایی در زمینه علم هندسه و جبر داشته باشید. در این آموزش ها بیشتر ریاضیات پیشرفته که برای گرافیک ضروری هستند ارائه شده اما شما باید دانش حداقلی در زمینه هندسه و جبر داشته باشید جبر خطی نیاز نیست هر چند که مفید خواهد بود.
کد آموزش های این کتاب از openGL به عنوان API رندر کننده استفاده کرده است. شما نیازی به دانستن openGL ندارید ولی برای اجرای کد ها شما باید یک محیط برنامه نویسی که اجازه اجرای کد های openGL را بده نیاز دارید. مخصوصاً شما نیاز به سخت افزاری که قادر به اجرای openGL نسخه 3.3 است دارید. بوسله تمام کار ت های GeForce 8xxx یا بهتر و یا هر Radeon HD-class card. این ها همچنین کارت های "Direct3D 10" نامیده می شوند ولی شما به ویندوز 7 یا ویستا برای استفاده از قابلیت های پیشرفته اونا بوسیله openGL ندارید.

اداممه دارد....

f_talebi
شنبه 12 اسفند 1391, 19:28 عصر
میشه ادامه بدین لطفا

amin1softco
یک شنبه 01 اردیبهشت 1392, 11:43 صبح
دوستان این ترجمه که ضمیمه این پست شده چند صفحه از بخش 5 همین کتاب است لطفاً مشکلات ترجمه را به من گوشزد کنید. سعی میک نم فصل 14 که در مورد بافت ها هست را تکمیل کنم و هفته آینده این پست را آپدیت کنم .
بعضی از دوستان هم از نحوه کامپایل برنامه های این آموزش (https://bitbucket.org/alfonse/gltut/downloads/Tutorial%200.3.8.7z)سوال کرده بودند که باید بگم ابتدا فایل premake (http://sourceforge.net/projects/premake/files/Premake/4.3/premake-4.3-windows.zip/download) را باید دانلود کنید و در پوشه ویندوز کپی بزنید برای ویژوال 2010 در ویندوز اینجوری می شه :
1- ابتدا وارد صفحه کامندپارامتر شده start->run->cmd->ok
رفتن به شاخه glsdk :

c:
cd Tutorial 0.3.8
cd gldsk
premake4 vs2010

2- بعد rebuild کردن پروژه در vs2010
3- رفتن به شاخه اصلی پروژه Tutorial 0.3.8 و premake4 vs2010
4- اجرای و rebuild پروژه در vs2010 (کلیک راست رو کل پروژه یا زدن کلید ctrl+alt+F7)
5- راست کلیک روی Tut 01 MainD و انتخاب set as start up project
6- اجرا کردن با کلید F5
در ضمن باید حتماً درایور openGL ورژن 3.3 باشه وگرنه اجرا نمی شه !!!
موفق باشید.
لینک مستقیم دانلود آموزش (http://gltut.persiangig.com/document/%D8%A8%D8%AE%D8%B4%2051.pdf)

amin1softco
پنج شنبه 12 اردیبهشت 1392, 15:14 عصر
با سلام بخش پنج فصل بافت تموم شد از دوستان خواهش می کنم که مطالعه کنند و اشتباهات اون را گوشزد کنند . البته سرعت اینترنتم تعریفی نیست شاید درست آپلود نشده باشه .

amin1softco
جمعه 24 مرداد 1393, 12:55 عصر
این کتاب یادگار خدمت است من و کامران رستمی این کتاب را ترجمه کردیم بخش 4 تا آخر این کتاب که ضمیمه شد بیش از 120 صفحه ;)

amin1softco
جمعه 24 مرداد 1393, 12:56 عصر
اینم پارت آخری پست قبل
فقط نیاز به یک ویراستار داره اگر کسی قبول کنه ممنون می شم

fatemeh.teh
شنبه 04 بهمن 1393, 16:19 عصر
سلام دوستان

من میخوام یه برنامه با shape درست کنم اما وقتی dll اونو اد میکنم چنین اروری میده وکسی میدونه مشکل چیه؟؟
127863