הבסיס של מנוע 3D : ציור מודל פשוט ללא טקסטורה.

Vertex.jpgבפרק זה נעבור על הבסיס של מבנה מודל תלת מימדי והצגתו למסך.

כמה מושגי יסוד שצריך להכיר לפני שנתחיל.

ורטקס – הנקודות במרחב שמהם מורכבת הצורה לדוגמא לפירמידה שבאיור 1.1 יש 4 ורטקסים

פוליגון – משטח ישר המהווה חלק מהמעטפת של המודל ברוב מנועי תלת מימד (וגם בשלנו) פוליגון יהיה מורכב משלושה ורטקסים ולכן יהיה תמיד בצורת משולש.

במקרה של הפירמידה שבציור כל צד של הפירמידה מורכב מפוליגון אחד. כלומר הפירמידה מורכבת מארבעה פוליגונים

וכמה חידושי ActionScript

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

Utils3D.projectVectors – פונקציה נהדרת שיודעת לקחת אוסף של ורטקסים במרחק ולתת אוסף של נקודת על הבמה. אנחנו קוראים לזה ההטלה הדו מימדית של המודל. הפונקציה הזאת עושה עוד כמה דברים נפלאים שארחיב עליהם בהמשך.

.graphics.drawTriangles – יודעת לצייר משולשים (פוליגונים) על פי רשימת נקודות ורשימה המתארת את חיבור הנקודות למשולשים

עכשיו אפשר להתחיל.

בשלב ראשון ניצור את מבנה המודל.

המבנה נתונים הבסיסי של מודל מורכב מרשימת הורטקסים שלו. ומרשימה נוספת המתארת את הפוליגונים של המודל בעזרת חיבור של שלושה ורטקסים.

ב ActionScript 3.0 שתי הרשימות הללו הן מסוג וקטור של מספרים .

הקוד הבא מראה את מבנה הנתונים של מודל הפירמידה.



נכניס תחילה את הורטקסים כאשר כל שלושה מספריים מיצגים את המיקומים X,Y,Z בהתאמה

mVertices = new Vector.<Number>);
mVertices.push(0,0,0);
mVertices.push(-200,0,0);
mVertices.push(0,0,-200);
mVertices.push(0,-150,0);

של המספר במערך הורטקסים x ועכשיו נכניס את רשימת המשולשים כאשר כל מיספר מיצג ורטקס כלומר אם נכפיל אותו בשלוש נקבל את מיקום ה

mIndices= new Vector.<int>);
mIndices.push(0,1,3);
mIndices.push(2,0,3);
mIndices.push(4,1,0);
mIndices.push(4,5,1);

mVertices זו היא רשימת הורטקסים בה כל שלושה מספרים מיצגים ורטקס אחד(X,Y,Z) לשם בהירות הכנסתי אותם לרשימה בשלישיות

mVertices היא רשימת הפוליגונים כאשר המספרים מתיחסים לורטקסים שנימצאים ברשימה mIndices

.הרשימה בנוייה כך שהמספר 0 מתיחס לשלושת המספרים הראשונים המספר 1 לשלושת המספרים הבאים וכך הלאה

.עכשיו צריך לצייר את המודל לבמה

function Draw():void
{
    var aOutUVData = new Vector.<Number>();
    Utils3D.projectVectors(new Matrix3D(),mVertices,mProjectedVertices,aOutUVData);
    mMesh.graphics.clear();
    mMesh.graphics.beginFill(0x00FFFF,0.5);
    mMesh.graphics.lineStyle(1,0x0000FF,1);
    mMesh.graphics.drawTriangles(mProjectedVertices, mIndices,null,TriangleCulling.NONE);
    mMesh.graphics.endFill();
}

.נעזוב כרגע נגיע אליו מאוחר יותר כאשר נעסוק בתקסטורות. aOutUVData את המשתנה
.את הורטקסים כנקוגות דו מימדיות בכדי שנוכל לצייר אותם למסך mProjectedVertices ונקבל במשתנה את רשימת הורטקסים המיצגת את הנקודות שמהם מורכב המודל במרחב תלת מימדי.

.כלומר את הנקודות במרחב התלת מימדי שמהם מורכב המודל mVertices את Utils3D.projectVectors אנחנו מעבירים לפונקציה

רשימה של הורטקסים דו מימדיים המיצגים את ההטלה של המודל על המסך mProjectedVertices נקבל בחזרה מהפונקציה במשתנה

כתיבת תגובה

האימייל לא יוצג באתר.