View Full Version : سوال: حذف چهره پشتی - Back face culling
khorzu
یک شنبه 18 مهر 1389, 18:37 عصر
سلام
Whether a polygon is facing the camera or not is determined by whether the vertices in a polygon are being rendered clockwise or counterclockwise;this
is known as the polygon’s winding order.
کسی می تونه توضیح بده که این چطوری کار می کنه ؟
ممنون .
SeganX
یک شنبه 18 مهر 1389, 19:24 عصر
منظورت اینه که کلا Culling چطوری کار می کنه؟
تا اونجا که من می دونم خیلی پیچیده نیست. به ترتیبی که مشخص میکنیم CW یا CCW با سه تا Vertex واسه هر مثلث دو تا بردار تشکیل میدیم. بعدش این دوتا بردار رو باهم ضرب خارجی ( cross ) می کنیم. از این عملیات ضرب یه بردار حاصل میشه که جهت ( face ) مثلث رو مشخص میکنه. اگر این بردار به سمت دوربین بود مثلث رسم میشه و اگه نبود رسم نمیشه.
البته شاید API ها از توابع سریعتری استفاده کنن. بیش از این من خبر ندارم.
khorzu
یک شنبه 18 مهر 1389, 19:47 عصر
ممنون . منظورم دقیقا همین بود که گفتید . اما این کار به نظر خیلی محاسبات داره ... چرا از نرمال راس استفاده نمی شه؟
یه سوال دیگه هم دارم :اطلاع دارید بلاک Tesselator که اول خط لوله قرار داره چی کار می کنه .
http://www.gamasutra.com/features/20030418/Direct3Dpipeline9.gif
SeganX
دوشنبه 19 مهر 1389, 13:19 عصر
نرمال یک مولفه ایه که طراح هنری و مدل ساز می تونه اونو به صورت دستی تغییر بده . به علاوه در بیشتر مدل ها vertex ها بین چند تا مثلث مشترک هست و بنابراین نرمالی که داره عمود به مثلث ها نیست و یه مقدار تقریبی هستش.
در مورد Tesselator:
همون طور که میدونی این روزها همه از MultiStreaming واسه مدیریت vertex ها استفاده می کنن. تو این سیستم مولفه های vertex ها رو توی چند تا vertex buffer دسته بندی می کنن. مثلا position ها تو یه بافر، نرمال ها و تکسچر uv ها تو بافر دیگه و ...
به همه این ها تکنیک instancing هم اضافه کن که توش transformation مدل ها هم هست و با یه frequency مشخصی واسه هر مدل یه ماتریس میریزن توش .
توی بخش Tesslator اندیس مثلث ها از index buffer بیرون میاد و مولفه های هر vertex از stream ها به هم می چسبند و vertex های کامل ساخته میشن و در نهایت ما یک مثلث کامل با سه تا vertex کامل داریم.
jack
شنبه 24 مهر 1389, 16:05 عصر
ممنون . منظورم دقیقا همین بود که گفتید . اما این کار به نظر خیلی محاسبات داره ... چرا از نرمال راس استفاده نمی شه؟
بردار نرمال یکی از مولفه های فضای تانژانتی هستش . برای پیاده سازی بامپ مپینگ درموتور بازی اشنایی با این فضا بسیار ضروری است سایت زیر مطالب جالبی رو در مورد نحوه محاسبه بردار نرمال و تانژانت با استفاده از راسهای یک مثلث توضیح داده است
http://www.terathon.com/code/tangent.html
khorzu
یک شنبه 25 مهر 1389, 08:33 صبح
ممنون.
من خیلی انگلیسیم خوب نیست ... می شه یکم بیشتر توضیح بدید ؟ مخصوصا راجع به محاسبات بامپ مپینگ .
jack
یک شنبه 25 مهر 1389, 14:07 عصر
ممنون.
من خیلی انگلیسیم خوب نیست ... می شه یکم بیشتر توضیح بدید ؟ مخصوصا راجع به محاسبات بامپ مپینگ .
سلام دوست عزیز
بببینید بردار نرمال در بامپ مپینگ در واقع مانند بردار z در مختصات 3 بعدی است در واقع برای فهم فضای تانژانتی باید با texture coordinate اشنا باشید . texture coordinate یک فضای دو بعدی است که نحوه پوشیده شدن یک مش توسط texture را توضیح می دهد . در pixel shader با همین texture coordinate می توان طرح های جالبی مثل terrain splat رو ایجاد کرد ولی برای ساخت بامپ به بردار نرمال و تانژانت نیاز دارید . در مورد فضای تانژانتی چند سال پیش یک مقاله در سایت persian-designers نوشتم . می تونید در اون سایت مقاله رو دانلود کنید
khorzu
سه شنبه 27 مهر 1389, 11:42 صبح
ممنون.
می شه لینکشو بدید ... لطفا.
jack
سه شنبه 27 مهر 1389, 16:11 عصر
دريافت فايل->مقالات متفرقه در زمینه ساخت بازی های کامپیوتری->آشنايي با Bump Mapping
دريافت فايل->مقالات متفرقه در زمینه ساخت بازی های کامپیوتری->آشنايي با شيدرنويسي و HLSL
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.