ב-Online
 
 
 
 
 
 
 
 
מציגים תלת ממד 

מציגים תלת ממד

 
 
עידו גנדל

אחת השאלות הבסיסיות של עולם המחשבים היא התלת ממד: איך לוקחים גוף תלת ממדי ומציגים אותו על גבי מסך, שהוא בעצם משטח דו ממדי? עידו גנדל מסביר

 
 
 
 
 
 
 
 
 
 
 
כיום, גרפיקה תלת ממדית במחשבים היא עניין שגרתי לגמרי. כל כרטיס מסך בסיסי כולל מאיצי חומרה לתלת-ממד, ישנם כלי תוכנה תקניים לטיפול באובייקטים תלת-ממדיים ובהצגתם (OpenGL, DirectX וכו'), ותוכנות מידול ואנימציה מקצועיות יכולות ליצור - אפילו במחשב הביתי שלכם - דברים שהיו מדהימים גם את אולפני הוליווד לפני לא-כל-כך-הרבה שנים.
 
איך גורמים לקוביה להיראות כמו קוביה? (צ': GettyImages)
 איך גורמים לקוביה להיראות כמו קוביה? (צ': GettyImages)   
לנוכח כל העושר הזה, קל לשכוח שמדובר בתחום בכלל לא טריוויאלי, עם המון מכשולים וקשיים מכל הסוגים. הפעם נעסוק באחת השאלות הבסיסיות ביותר בעולם התלת-ממד הממוחשב: איך לוקחים גוף תלת ממדי ומציגים אותו על גבי מסך, שהוא בעצם משטח דו ממדי?

משטחי תצוגה דו-ממדיים כוללים, מטבע הדברים, רק שני ממדים או צירים מרחביים: רוחב וגובה. נכנה אותם X ו-Y, בהתאמה. הממד השלישי, עומק, יזכה לכינוי Z. כדי להציג גוף תלת-ממדי על משטח דו-ממדי חייבים, אם כן, למצוא דרך לתרגם את ציר Z באיזשהו אופן לצירים X ו-Y.
 
 

מגדירים ממדים

איור 1: קוביה במבט על. או צד. או קדמי (השקיע: עידו גנדל)
 איור 1: קוביה במבט על. או צד. או קדמי (השקיע: עידו גנדל)   
השיטה הפשוטה ביותר, ברוח הישראליוּת, היא להתעלם לחלוטין מהבעיה ופשוט לצייר רק שניים מתוך שלושת הממדים. השיטה הזו נפוצה מאד בשרטוטים טכניים, כאשר מציגים את האובייקט במבט על ("היטל"), מבט צד ו/או מבט קדמי. למעשה, כל מבט שכזה נוצר על ידי התייחסות לשניים מתוך שלושת הצירים של האובייקט האמיתי כ-X ו-Y במשטח התצוגה, והתעלמות מהציר השלישי. במקרים מסוימים, מציירים תוואים "נסתרים" בקו מקווקו או בסימון דומה, שיבהיר שהם נמצאים "מאחורה", אבל קשה לקרוא לדבר כזה תלת-ממד אמיתי.
 
איור 2: קוביה בשרטוט איזומורפי (איור: עידו גנדל)
 איור 2: קוביה בשרטוט איזומורפי (איור: עידו גנדל)   
מבחינה גאומטרית, הממדים השונים ניצבים זה לזה בהגדרה. כדי לאפשר ייצוג דו-ממדי, אפשר להשתמש בקריטריון פחות מחמיר ולעוות את מערכת הצירים כך שהזוויות ביניהם יהיו, למשל, של מאה ועשרים מעלות. בצורה כזו יוצרים את המערכת האיזומורפית ("בעלת צורה זהה"), שתזוהה בקלות על ידי כל מי שהרכיב בחייו משחק לגו לפי ההוראות. שרטוטים איזומורפיים נותנים אשליה סבירה של תלת-ממד, אבל חסר בהם אלמנט אחד קריטי שישלים את האשליה: פרספקטיבה.
 
איור 3: למה דברים רחוקים נראים קטנים יותר (איור: עידו גנדל)
 איור 3: למה דברים רחוקים נראים קטנים יותר (איור: עידו גנדל)   
כידוע, ככל שאוביקט מסוים רחוק יותר מאיתנו, כך הוא נראה לנו קטן יותר. הסיבה לכך היא גאומטרית ופשוטה, ואפשר להדגים אותה בעזרת איור 3. העיגול השחור הוא הצופה (במבט מלמעלה), והאזור הירוק הוא, נניח, שדה הראייה שלו. הוא מסתכל על קוביה: הצד הקרוב אליו והצד הרחוק ממנו הם בדיוק באותו רוחב. אבל בגלל הזוויות השונות שבין עין הצופה לבין שולי הקוביה, הצד הקרוב שלה תופס חלק גדול יותר של שדה הראייה (האזור הצהוב) מאשר הצד הרחוק (האזור האדום). לכן, כדי ליצור ייצוג דו-ממדי נאמן של אוביקט תלת-ממדי, אנו זקוקים ל"תיקון" של המידות לפי המרחק מהצופה.
 

מגדירים את מישור התצוגה

הדוגמה המפורסמת ביותר לפרספקטיבה, אם כי זו דוגמה לגמרי לא בטיחותית, היא עמידה על פסי רכבת והתבוננות עליהם נמתחים למרחק. האשליה שנוצרת היא שהם מתכנסים ומתאחדים בסופו של דבר בנקודה רחוקה באופק. זהו גם העיקרון המנחה בעולם הציור. האם אפשר להשתמש בו לצורך הדמיית מחשב? מבחינה חישובית, מדובר בפעולה קלה (שיטה א' באיור 4): מגדירים נקודה מסוימת במרחב, בעלת ערך Z גדול מאד (נגיד 100), כ"נקודת האופק". בנוסף, מגדירים מישור מסוים כמישור התצוגה (כלומר המסך), למשל המישור שבו Z=0. כעת ניקח נקודה שערכי X, Y ו-Z שלה הם כולם 10. ערך Z הזה הוא בדיוק עשירית מהמרחק מהתצוגה ועד ל"אופק", ולכן פשוט נצמצם בעשירית את ערכי X ו-Y על מישור התצוגה! אם הנקודה יושבת בדיוק על מישור התצוגה, לא יהיה שום שינוי; ככל שהיא מתקרבת לאופק, ערכי X ו-Y יתקרבו לנקודת האופק עצמה.

אם משתמשים בשיטה זאת בזהירות, היא נותנת תוצאות סבירות. היא גם פשוטה מאד, אבל יש לה שני חסרונות: האחד, היא מגבילה את השטח הוירטואלי בו אפשר להגדיר אובייקטים. אם האופק נמצא ב-Z=100, כל אובייקט רחוק יותר יגרום לעיוותים משונים בתצוגה. החיסרון השני הוא שבמציאות, האופק הוא קו ולא נקודה: אפילו אובייקטים קרובים יחסית זה לזה (בציר X) לא יתכנסו בדיוק לאותה נקודה אלא אם נסתכל עליהם ממרחק גדול כל-כך, שממילא כבר לא נוכל לראות אותם בכלל. ואם נגדיר נקודת אופק מרוחקת לאינסוף במחשב, ההשפעה שלה על האובייקטים תהיה זעירה עד כדי לא מורגשת.
 
 
כדי להתגבר על הבעיות הללו, צריך להסתכל על כל העסק בדיוק הפוך: במקום נקודת מוקד מרוחקת, נעבור לנקודת המוקד של העין עצמה. כביכול, יש לנו את העין שמסתכלת, את האוביקט שעליו מסתכלים ואת המסך שנמצא איפה-שהוא ביניהם. לכן, אם נמתח קווים מכל נקודה של האוביקט אל מוקד העין ונחתוך אותם בנקודת המגע שלהם עם המסך, נוכל לצייר עליו את האוביקט כפי שהוא אמור להיראות בפרספקטיבה (שיטה ב' באיור 4). בצורה זו אין מגבלה על המרחק של האוביקטים, והאשליה שנוצרת נראית מציאותית לגמרי. אם מקרבים או מרחיקים את העין או את המסך הוירטואליים שבחישוב, אפשר ליצור אפקטים מרשימים של פרספקטיבה מוגזמת, כמו שרואים הרבה פעמים באנימציות ממוחשבות בקליפים, פרסומות ופרומואים.
 
כל החישובים שהוצגו עד כה עוסקים ביצירת פרספקטיבה בסיסית עבור נקודות וקווים ישרים בלבד. ככל שהאוביקט התלת-ממדי מורכב יותר (למשל, מכיל תוואים עקומים או בעל טקסטורה), כך צריך לבצע חישובים נוספים ומסובכים יותר.

בינתיים, הנה אתגר קטן למחשבה: ניקח קו בעל ממד אחד בלבד – רוחב; נמתח אותו לגובה לאורך זהה ונקבל ריבוע דו-ממדי; נמתח אותו לעומק ונקבל קוביה. כבר ראינו איך מציגים שלושה ממדים על משטח דו-ממדי, אבל עכשיו נמשיך הלאה: נמתח את הקוביה בממד הרביעי ונקבל היפר-קוביה ארבע-ממדית. איך נציג את האוביקט הזה במרחב תלת-ממדי?
 
 
 
@@@@@@@@@@@@@@@@@@@ ilan @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@ ilan @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
 
תגובות
הוסף תגובה0 תגובות
הוספת תגובה
מאת
 
נושא
 
תוכן
 
 
 
 
תודה! תגובתך התקבלה.
התגובה תתפרסם בכפוף לתנאי האתר.
 
 
 
 
 

כל הזכויות שמורות 2011 © נענע 10 בע"מ
 
 
 
 
כל הזכויות שמורות © Nana10 בע"מ
Video powered by