close
تبلیغات در اینترنت
اشنایی با کاربردهای بردار نرمال در برنامه های سه بعدی

اشنایی با کاربردهای بردار نرمال در برنامه های سه بعدی

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

اشنایی با کاربردهای بردار نرمال در برنامه های سه بعدی
تعداد بازديد : 99

دوستانی که با برنامه های سه بعدی کار میکنند ، در هر بخشی که فعالیت دارند نطیر مدلسازی ، داینامیک و رندر حتما بارها با اسم Normal برخورد کردند و ممکن است با ان کار هم کرده باشند.

 

http://s8.picofile.com/file/8309826484/NormalVector_700.png

در این مقاله قصد دارم نرمال ها رو توصیح بدم و خیلی مختصر شما را با مهمترین کاربردهای آن اشنا بکنم.

نرمال ها بردارهایی معمولا عمود بر سطح (Face) و ورتکس هستند که برای موارد خاص کاربرد دارند ، همانطور که از اسمش پیداست ، یک بردار در فضاى سه بعدی هستند که معمولا یک جهت دارند و در برخی موارد طول هم دارند.

معمولا این بردارها در سه بخش استفاده میشوند.

 

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

 

همانطور که گفتم ، نرمال ها در اكثر برنامه های سه بعدی به دو نوع face normal و vertex normal تقسیم میشوند ، اما در برخی موارد محدود مختلف برنامه Houdini ما انواع دیگری نظير point normal هم داریم.

 

1. نور پردازی و رندر
2. داینامیک و موشن گرافیک
3. متریال

 

کاربرد نرمال ها در رندر

 

از مهمترین کاربردهای face normal ها میتوان به مشخص کردن سطح اصلی مدل ها اشاره کرد. بدین صورت که سطحی را که نرمال از ان سمت قرار میگیرند را سطح اصلی و سطحی را که خلاف جهت نرمال قرار دارند را سطح پشتی میگوییم.

در مرحله رندر یا حتی مدلسازی میتوانیم کاری کنیم که تنها سطح اصلی مدلها رندر شود و این باعث بیشتر شدن سرعت رندر و همچنین سرعت نمایش در viewport میشود و کار مدلسازی را هم ساده میکند. مثلا در برنامه Maya با غیر فعال کردن گزینه Double Side همین کار را انجام میدهیم.با کمک گزینه های مخصوص نظير reverse normal میتوانیم جهت نرمال را برای برخی فیس های خاص معکوس کنیم.

از نرمال های مخصوص ورتکس برای نرم یا سخت کردن لبه های Edge ها در مدلها استفاده میکنیم. به طوری که هرچه راویه نرمال ها به عدد صفر نزدیکتر بشود لبه های edge ها سختتر میشود تا جایی که کاملا فیس های مدل دیده میشود و بالعکس با ببشتر کردن زاویه نرمال ها لبه ها نرم تر میشود. بعضا در انجام برخی مراحل مدلسازی مثل bevel ممکن است زاویه نرمال ها تغییر کند و لبه های فیس ها دیده شود که با بیشتر کردن زاویه نرمال یا استفاده از گزینه soften edge در مایا میتوان این مشکل را برطرف کرد.

 

کاربرد نرمال در متریال

 

شاید بیشترین کاربرد نرمال ها در متریال باشد. اگر متریال دولایه ای ساخته باشید که قرار است سطح داخلی مدل را ابی و سطح خارجی را قرمز کند , اینجاست که نرمال ها کاربرد پیدا میکنند و با تغییر جهت انها میتوان مشخص کرد که سطوح خارجی و داخلی مدل از کدام رنگ استفاده کنند.

از دیگر کاربرد های ورتکس نرمال در متریال ، ایجاد برجستگی های مجازی نظير Bump و Normal Map میباشد.

بدین صورت که نوری که به سطح میتابد ، با توجه به زاویه بردار نرمال ، در جهت دیگری بازتاب میشود ، یعنی ما با تغییر جهت نرمال ها میتوانیم زاویه بازتاب نور را کنترل کنیم.

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

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

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

در Bump Mapping با توجه به روشنی و تاریکی پیکسل های تکسچر روی سطح ، زاویه نرمال ها تغییر میکند و بنابراین نور در جهات مختلف بازتاب شده و ما در رندر سطح مدل را با توجه به تکسچری که به Bump دادیم برجسته میبینیم.

 

 

در Normal Mapping به دلیل برخورداری از سه رنگ قرمز سبز و ابی به جای طیف خاکستری که در bump استفاده میشه ، ما دقیقا میتونیم مشخص کنیم که نرمال ها در چه جهت سه بعدی باید قرار گیرند ، مثلا جهت خود روی محور x را از عدد رنگ قرمز بگیرند و بدین ترتیب برای محورهای y و z از رنگ های سبز و ابی استفاده کنند ، به همین دلیله که برجستگی هایی که با normal map ایجاد میشود بهتر از برجستگی های Bump دیده میشوند.

 

کاربرد نرمال در داینامیک

 

شاید در خیلی از کارهای داینامیکی که انجام میدهید ، بدون اینکه دقت کنید نرم افزار از نرمال ها استفاده کند. مثلا وقتی روی یک سطح پارتیکل پخش میکنید ، اگر سرعت به ذرات بدهید و از نیروها استفاده نکنید ، مایا پيشفرض از جهت نرمال های سطح برای پخش شدن ذرات استفاده میکند ، به همین ترتیب برای پخش شدن ذرات از سطح curve در برنامه هایی نظير هودینی هم میتوان از نرمال استفاده کرد.

 

کاربرد نرمال در موشن گرافیک

فرض کنید در برنامه خاصی میخواهی یکسری درخت را روی سطح یک کره پخش یا scatter کنید به طوری که جهت همه درختان رو به سطح خارجی کره باشند ، اینجاست که از نرمال استفاده میشود و ما باید به نرم افزار بگوییم که جهت مدل های instance شده را در راستای نرمال های کره قرار دهد.

 

مثلا در مایا اگر بخواهیم با پارتیکل یکسری درخت را روی سطح کره instance کنیم به طوری که جهت درختان در راستای سطح خارجی کره باشند ، ما دستوری داریم که به کمک ان میتوانیم زاویه نرمال سطح را بگیریم و به پارتیکل بدهیم و به کمک ان مشخص کنیم مدلی که روی این پارتیکل instance میشود باید چه جهتی داشته باشند.

در برنامه هایی مثل Houdini یکم کاربرد نرمال ها برای کپی کردن یا scatter کردن مدل ها روی ذرات یا نقاط بیشتر میشود و حتی اگر بخواهیم جهت دقیق تری را برای چرخش مدلهای کپی شده مشخص کنیم ، به جز نرمال باید از بردارهای دیگری نظير UP Vector هم استفاده کنیم که انشالا بعدا توضيح میدهم.

 

 

کاربردهای دیگر نرمال

 

نرمال ها به جز این موارد کاربردهای بسیار زیاد دیگری دارند که شاید اکتر انها مربوط به ساخت متریال باشد ، در زمان برنامه نویسی یک متریال جدید برای یک موتور رندر ، در اكثر زمان ها ما نیاز به استفاده از نرمال ها داریم ، چون اکثر محاسباتی که در رندر انجام میشود نیاز به نرمال دارند ، مواردی نظير محاسبه specular , Reflection و خیلی چیزهای دیکر.

یک کاربرد دیگر نرمال ها که شاید برای خیلی از دوستان عجیب باشد ، استفاده از ان برای اعمال Displacement روی انفجار ، دود یا اتش میباشد. بدین صورت که در برنامه های خاص مثل هودینی میتونیم یک field مخصوص نرمال تولید کنیم و با کمک ان در مرحله رندر سطح انفجار یا دود را برجسته کنیم ، البته لازم به ذکره که این مورد با موارد دیگر نظير Wavelet در Fume FX و High Res در هودینی و مایا متفاوت است.

 

نتیجه

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

 

منبع : jkcompany.org

بخش نظرات این مطلب
نام
ایمیل (منتشر نمی‌شود) (لازم)
وبسایت
:) :( ;) :D ;)) :X :? :P :* =(( :O @};- :B /:) :S
نظر خصوصی
مشخصات شما ذخیره شود ؟ [حذف مشخصات] [شکلک ها]
کد امنیتیرفرش کد امنیتی