קצת תלת-מימד . . .

smasher

New member
קצת תלת-מימד . . .

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

smasher

New member
------------>

דבר ראשון אני לא מעוניין להשתמש ב Z-BUFFER. דבר שני - מה זה d3d ogl ?
 

the origin

New member
zBuffer עדיף מאלגוריתם הצייר

הוא גם יותר מהיר וגם יותר פשוט לביצוע עשיתי פעם משהו כזה כמו שאתה עושה וזה הכי טוב (ניסיתי כמה שיטות) אם אתה רוצה עוד פרטים דבר איתי בicq (פרופיל) בקשר לd3d /ogl בהתחלה לא הבנתי למה אתה מתכוון חשבתי שאתה עובד עם אחד מהם d3d =directX ogl= openGL
 

smasher

New member
כמה דברים...

Z-BUFFER בהחלט לא יותר מהיר הוא הרבה יותר איטי אבל גם הרבה יותר מדוייק. אני עובד עם Turbo C++ 3.0 גרסה של BORLAND ועם ספריית BGI.
 

vdsp

New member
למה להמציא את הגלגל מחדש ?

אלא אם כן אתה סטודנט וזו המשימה שלך... או שיש לך רעיון מדהים איך לעשות את זה יותר טוב מכולם (ולא זה המקרה) אני אישית מכיר 6 ספריות שממשות את כל הסיפור, 2 מתוכן תואמות opengl ואני בטוח שגוגל ימצא לך עוד. תוריד, תבדוק, ותתרכז במה שחשוב : התוכנה/משחק שלך !
 

mooznach

New member
ושוב...

אם אתה לא רוצה zbuffer ובמידה והסביבה סטטית תשתמש בBSP.
 

smasher

New member
כמה הערות .. .. ..

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

mooznach

New member
לא...

BSP קשה למימוש באותה מידה שעץ בינארי קשה למימוש. וזה גם לא עניין של מהיר. אני לא יכול לחשוב על שיטה אחרת שעובדת 100% כשאתה לא אחראי על ציור הפוליגון.
 

smasher

New member
הנה הפרוייקט. . . להמחשת הבעיה...

צירפתי את קובץ ההרצה שתראו את הבעיה - ללחוץ על לחצן ימני ולקראת השעה 10 בסיבוב תראו את הבעיה... בנוסף - צירפתי את 2 הפונקציות הרלונטיות. לשנות את סיומת הקובץ ל- RAR.
 

the origin

New member
הקוד הזה לא מספיק

תשלח גם את הפונקציה שמציירת את האובייקטים , ואת ההגדרות של Ccube וCFaset
 

giladznaor

New member
תבדוק כאן

http://cg.cs.tu-berlin.de/~ki/engines.html זה מכיל הרבה מאוד ספריות תלת-מימד במגוון שפות. ככלל, אלגוריתם הצייר לא ממש יעזור לך במקרים כאלה. אם אתה משתמש בTURBO C אז באמת לא כדאי לך לעבוד עם Z-BUFFER, כי הקומפיילר הזה ישן מאוד ומוגבל מאוד בזיכרון (הוא עובד במצב אמיתי - כלומר, כאילו יש לך מחשב 286). BSP אכן קשה ליישום. פתרון אחר יכול להיות פשוט מניעת מצב שבו פוליגונים חוצים אחד את השני. אם זאת סביבה סטטית, פשוט ניתן להמנע מבניית מצב כזה. בסביבה דינמית, ניתן להוסיף COLLISION DETECTION. במקרה שעצם --חייב-- לחצות עצם אחר, ניתן לחצות אותו לפליגונים קטנים יותר באופן זמני. בהצלחה!
 

smasher

New member
בנוגע לפתרון שלך -

זה אכן המצב אצלי מראש - אין חצייה של פוליגונים אחד בשני. אם תשים לב טוב תראה שבדוגמא הנ"ל יש 5 פיקסלים רווח בין שתי הקוביות, והן זזות כגוף אחד ולא נחצות... הבעיה היא בהסתרה עצמה.
 
למעלה