שלום

  • פותח הנושא smat
  • פורסם בתאריך

smat

New member
שלום

אני מתעניין בתלת מימד במחשב.ואני מנסה להבין קצת את המתמטיקה. אני מחפש הסבר טוב על שתי נושאים: הגדרה של "מצלמה" בתוך המערכת צירים קבועה(world space) והמעבר בין ה-world space למערכת צירים של ה"מצלמה"(camera space).למשל עם יש לי מיקום של נקודה ב-world space איך אני מוצא את המיקום שלה ב-camera space. והיטל של שלוש מימדים על שתי מימדים(Perspective projection). אני מקוה שמישהו מכיר את הנושא כי זה קצת קשה להבין לפי מה שכתבתי למה אני מתכוון.
 
נראה לי שאני מבוהל

זה אני או שאתה רוצה לכתוב ספרייה גרפית משלך ? אם כן, למען עצמך אל תעשה את זה, זה בזבוז זמן ענק.. ובסוף אין תוצאות טובות.. תשתמש בקיימות שמתכנתים כבר הכינו בשבילך, הפופולרית DIRECTX 9 ו OPENGL. אם אתה לא רוצה להכין את מה שאמרת, אל תתיחס להודעה הזאת.. אם תנסח את עצמך מחדש באופן אחר אולי אני אבין אותך יותר טוב.
 

smat

New member
ניסוח מחדש

אני לא מנסה לכתוב ספרייה גרפית. אני רוצה לבנות מנוע גרפי מאוד מצומצם בפלאש. האמת שראיתי טוטוריאל להציג תלת מימד בפאלש-(שמתי קישור למטה). זה טוטוריאל טוב אבל לא ממש מסביר את הצד המתמטי. אני מנסה להבין את החלק שנקרא Projection and perspective ואני רוצה לדעת איך הוא הגיע למטריצה הזאת. ולפי מה שאני מבין אין ממש "מצלמה" כלומר רק זווית אחת לראות את האובייקט. תודה על התגובה.
 

smat

New member
ניסיתי שם

לא התייחסו. אבל יותר מעניין אותי המתמטיקה קודם.
 

Calius

New member
קצרה היריעה מלהרחיב

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

נגיד יש לי קוביה 5*5*5 ס"מ. ואני מסתכל עליה ממרחק של 20 ס"מ. הקוביה לא מלאה, ז"א יש לה רק צלעות. אני מסתכל עליה מקדימה, אני לא אראה ריבוע פשוט וזהו, אלא אראה בפרספקטיבה, כמו שאתה רואה בתמונה מס 1. איך אני אחשב את הקורדינטות של כל הנקודות שבניהם אני אמור לעביר את הקווים, אני אפילו לא מצליח לדמיין איזו מתמטיקה צריך לעשות בשביל זה. זה היה מקרה פשוט, עכשיו נגיד אני סיבבתי את הקוביה, איך אני אמור לדעת איך לצייר אותה עכשיו (כמו במקרה 2). או במילים אחרות, אני רוצה להכין תוכנה שמסובבת קוביה בתלת מימד (אל דאגה אני יודע תכנות), אך מבחינת המתמטיקה אין לי אפילו את המושג הקטן ביותר איך לחשב את קורדינטות של הנקודות שבניהן אני אמור להעביר קו. אם תוכל להסביר לי איך להגיע לנוסחא שתעזור לי או למשהוא דומה (הקוביה מסתובבת רק סביב ציר X) אני אהיא מאוד שמח
 

smat

New member
סיידר

אני חושב שהבנתי אותך-שים לב לתמונה---->> מצאתי אתר על הנושא. אולי אני אחזור עם שאלות. תודה.
 
למעלה