340 likes | 664 Views
Ray-Tracing Using POV-RAY. ניר סולומון 61013793 ליאת כהנא 37730793 קבוצה 4. ראשי פרקים. הקדמה- מהו Ray-Tracing ? אופן פעולת Ray-Tracer . בעייתיות בשיטת Ray-Tracing . מקבול Ray-Tracing . הפרויקט שלנו. אז מה זה בעצם Ray-Tracing ?. Ray-Tracing היא השיטה המקובלת כיום
E N D
Ray-Tracing Using POV-RAY ניר סולומון 61013793 ליאת כהנא 37730793 קבוצה 4
ראשי פרקים • הקדמה- מהו Ray-Tracing? • אופן פעולת Ray-Tracer. • בעייתיות בשיטת Ray-Tracing. • מקבול Ray-Tracing. • הפרויקט שלנו.
אז מה זה בעצם Ray-Tracing? • Ray-Tracing היא השיטה המקובלת כיום ליצירת תמונות ממוחשבות של נופים ועצמים תלת מימדיים.
כל סרטי האנימציה הממוחשבים, למשל, הם סדרות של תמונות מיוצרות מחשב, כאשר כל תמונה עברה תהליך של Ray-Tracingעל מנת לייצר אותה. התמונות הנוצרות ע"י Ray-Tracingיכולות להיות פשוטות ומהירות לתכנון...
לדוגמא: )תמונה לא ריאלסטית בעליל שיצרנו לצורך המצגת(
אבל התמונות יכולות להיות מרשימות וכמעט פוטו-ריאליסטיות. (וגם לגרוף כמה מאות מיליוני דולרים בקופות..)
למשל: "שרק" הוא סרט אנימציה באורך מלא, שכולו יוצר בשיטת Ray-Tracing באופן מקבילי.
או תמונה פוטו-ריאליסטית מוצלחת: זוכה פרס ראשון בחודש מרץ-אפריל בתחרות Internet Ray-Tracing Competition (www.irtc.org)
איך עושים את זה? • הכרזה על עצמים • (הגדרת "עולם"): • הגדרת "מצלמה" • הגדרת מקורות אור • - הגדרת אובייקטים מוצגים קלט Rendering (התהליך ארוך ודורש מיליארדי חישובים. מקביל לקומפילציה בתכנות) עיבוד פלט תמונה מוגמרת
שלב 1: הגדרת ה"עולם" כשבונים תמונה של עולם תלת מימדי, מדברים על שלושה מרכיבים עיקריים: • המצלמה • מקורות אור • אובייקטים ממגוון סוגים
המצלמה כמו במצלמה אמיתית, נגדיר: • מיקום במרחב (קורדינטות) • כיוון להסתכל עליו (וקטור כיוון) • זוית מרחבית (כמו בעדשה) • וקטור תנועה (אם מעוניינים באנימציה)
מקורות האור מקורות אור חיוניים לתמונה (בלעדיהם נקבל תמונה שחורה). למקורות אור נגדיר: • מיקום במרחב וכיוון (כמו לכל אובייקט) • סוג האור (אור רך לכל הכיוונים, "ספוט", לייזר...) • צבע(נוכל להשתמש בצבע אור על מנת לדמות שקיעה, למשל) • עוצמה(ביום תהיה עוצמת האור חזקה מהלילה, למשל) (ניתן ורצוי לשלב מספר מקורות אור בסצינה אחת)
האובייקטים לכל אובייקט נגדיר: • מרחב : גודל, צורה, ומיקום. (במקרה של כדור, למשל, נצטרך להגדיר רק מיקום מרכז הכדור והרדיוס שלו. במקרה של הפנים של שרק נצטרך לעצב גוף מאוד מורכב ולייצג אותו בעזרת כמות אדירה של אינפורמציה.) • מרקם: המרקם הוא הדרך שבה מגיב הגוף לאור. - סוג החומר (גוף יכול להיות מבריק כמו מתכת, מחוספס ובולע אור, שקוף, פרוותי ועוד) - צבע או תבניות צבעוניות (מתכת כסופה, פסים חומים בעץ וכו'). הערה: אובייקט יכול להיות יותר מופשט, כמו ערפל -שהוא למעשה קובייה המנחיתה את האור ומקיפה את המצלמה ואת שאר האובייקטים.
camera { location <0, 2, -3> look_at <0, 1, 2> } sphere { <0, 1, 2>, 2 texture { pigment { color Orange } } } הגדרת המצלמה איפה במרחב כיוון המצלמה הגדרת אובייקט: כדור מרחב: הגדרת מרכז ורדיוס מרקם: צבע הכדור Renderingשלב 2: לאחר סיום הכנסת המידע המחשב מקבל קובץ בשפה ייחודית ל-Ray-Tracing הנקראת POV-RAY. זהו קובץ הגדרת עולם שהתקבל: נניח גם תאורה אחידה בחלל.
(המשך)Rendering תהליך Ray-Tracing כשמו כן הוא: מעקב אחר קרניים. בעולם האמיתי, תהליך קליטה הקרניים כולל פיזור קרני אור ממקור אור ע"י האובייקט, וקליטת חלק מקרניים בעין האנושית (או המצלמה): קרניים מתפזרות קרנייםנקלטות
(המשך)Rendering בעולם הוירטואלי, הדבר לא שימושי. אין לנו צורך בקרניים שלא מגיעות למצלמה, לכן יורים מהמצלמה קרן אחת לכל פיקסל של תמונה עד שנפגע באובייקט. משם נורות קרניים לכל מקורות האור ונעשית סופרפוזיציה על מנת לחשב את המראה שנקבל באמת עבור אותו פיקסל:
הבעייתיות – זמן חישוב... תהליך יצירת תמונה יכול לקחת עשרות שעות. הדבר נובע משתי סיבות : • תהליך תכנון ומיקום האובייקטים יכול להיות ארוך ומייגע.(כאשר יוצרים תמונה מפורטת, חלק גדול מהזמן נדרש לתכנן איך יראו האובייקטים) • לעשות Rendering לתמונה מורכבת יכול לקחת שעות במחשבים חזקים ומודרניים של היום.
פתרונות? לבעיות אין פתרונות קסם, ניתן רק לנסות לשפר את זמני הביצוע: • את זמן התכנון ניתן לקצר ע"י שיפור ממשק המשתמש. לא ניתן לייצר תמונות מורכבות מדי ע"י השפה מקודם. ככל שהממשק יעיל וגרפי, כך ניתן לייצר אפקטים מורכבים בזמן קצר. הדבר דומה להבדל בין שימוש בשפת מכונה (ASM) לתכנות בשפת על (כגון C, Java..).
מדוע צריכים לאמץ שיפור זמן דווקא ב-Rendering? נניח שאתם יוצרי סרט תלת מימדי, כגון "שרק" שהוזכר קודם. הדמויות תוכננו והוכנסו לתוכנה. אנו רוצים למקם מצלמה שתרחף במשך 5 שניות במעגל מעל ראשי הגיבורים שלנו, בשעה שהם דוממים. תכנות הסצינה דורש כ-10 דקות. נתון: • רזולציית הסרט: 2048 X 1536 • זמן חישוב פיקסל ממוצע: mSec0.15 • 30 תמונות בשנייה (סטנדרט NTSC)
חישוב זמן Rendering טיפוסי לאחר חישוב : 2048*1536*0.15m*30*5 = 19.6 Hours! כלומר, כדי ליצור מקטע סרט באורך 5 שניות, בהנחה שמדובר במחשב-על (פחות ממילי-שניה לכל פיקסל), ניאלץ להמתין כ-20 שעות, אפילו אם תכנות הסצינה בשפה כלשהי הוא מספר דקות.
Parallel Ray-Tracing כיוון שיש גבול ליכולת המחשוב כיום, הפתרון הטבעי הוא הרצת ה - Rendering במקביל על מספר מחשבים. הפתרון שימושי ביותר ממספר סיבות: • מחיר : זול (ניתן להריץ Rendering על מחשבי PC רגילים) • יעילות: ניתן להרצה גם על מחשבים שאינם בשימוש באותו רגע. • והכי חשוב – ניתן למקבול "אלגנטי".
(המשך)Parallel Ray-Tracing נקודת המוצא של הפרוייקט שלנו היא ש-RT ניתן למקבול יעיל ביותר. למעשה – Ray-Tracingis an Embarrassingly Parallel Application!
איך הדבר נעשה... כפי שנלמד בקורס,עיבוד תמונה נעשה בצורה טבעית למקבול- ובמיוחד כי כל פיקסל בלתי תלוי באחרים. כדי להשיג ניצולת מקסימלית של כח החישוב המקבילי, ננסה להקטין כמה שיותר את זמן ההמתנה של התהליכים. (הדבר חשוב במיוחד כי יש חלקים בתמונה שזמן העיבוד שלהם שונה משל אחרים.)
איך הדבר נעשה... (המשך) המפתח הוא בחלוקת עומס דינמית. תהליך אחד מפרק את התמונה לגושים, ויוצר Work-Pool של חתיכות תמונה. שאר התהליכים, כמספר המעבדים הנותרים, מקבלים חתיכות מהתמונה לציור. כשכל תהליך מסיים עם החתיכה שלו, הוא ניגש לתהליך האב ומבקש עוד חתיכה לציור.
איפה אנחנו נכנסים לתמונה? המטרה של הפרוייקט שלנו היא מדידת יעילות אלגוריתמים שונים לRay-Tracing למערכות שאנחנו עובדים איתן (ה-Dwarves).
פרמטרים למדידת יעילות האלגוריתמיםהמקביליים • מורכבות התמונה ל-Rendring(ככל שלוקח יותר זמן "לקמפל" את התמונה- השיפור במיקבול משמעותי יותר) • שיטת המיקבול (MPI, PVM וכדומה) • Speedup – בדיקה אמפירית של השפעת הוספת מעבדים על המהירות.
מדידת יעילות- הלכה למעשה • לשם מדידת הפרמטרים, נשתמש ב Renderer שנקרא POV-RAY. POV-RAY = Persistence of Vision RAY Tracer
POV-RAY POV-RAY הינה תוכנה חופשית עם מספר גרסאות, ביניהן גרסאות מקביליות. הגדרת ה"עולם" נעשת באמצעות שפת POV-RAY, בעלת מבנה דומה לשפת C. (כפי שראינו בשקופיות קודמות)
שלבים בביצוע הפרויקט • הרצת תמונה מורכבת לשם Benchmarking(מדידת כח חישוב של מערכת) בשתי שיטות המיקבול : 1. MPI 2.PVM • Rendring בכל שיטה על מספר שונה של מעבדים, ומדידת Speedup באופן אמפירי. • השוואת התוצאות להרצת תמונות פחות מורכבות.
כל זאת ועוד יעשה בפרויקט ה- Ray Tracing תודה שהקשבתם- קבוצה 4