נעים להכיר: .theprodukkt

27 באפריל 2008

2 comments

.theprodukkt

אני רוצה לספר על פרויקט מיוחד במינו בשם ".theprodukkt" שמתבצע ע"י צוות מפתחי תוכנה מתנדבים מאירופה (בעיקר מגרמניה).
מדובר על פרויקט בתחום תלת-מימד (3D), שמטרתו לייצר כלי מיוחד ליצירה (generation) של טקסטורות לתלת-מימד (משחקים, הדמיות, סצנות אנימציה וכו').home

מהי טקסטורה (במשחקי מחשב)?

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

מה מיוחד בפרויקט ".theprodukkt"?Half-Life 2

– כמה זיכרון (נפח אחסון) תופס (במגהבייטים או ג'יגהבייטים) משחק מחשב תלת-ממדי עם כל הקבצים אחרי ההתקנה (כמו "Half Life 2", "Doom 3", או "Halo 3")?
– בממוצע, מחשק מחשב מודרני נפרס על פני מספר דיסקים של DVD, משחק "Half Life 2" למשל, תופס אצלי במחשב כ- 4GB משטח אחסון של דיסק קשיח.
– כמה מתוך נפח הנ"ל תופסות הטקסטורות?
– במשחקי מחשב תלת-ממדים מודרניים התוכן (טקסטורות, קבצי קול, מוסיקה וסרטונים), תופס הרבה נפח. לפי הבדיקה שלי בתיקייה של "Half Life 2" הטקסטורות (בעיקר קבצי תמונות) תופסות כ- 1GB (כ- 25%).

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

a screenshot of .werkkzeug3, showing a texture together with the operators that produce it.
(תצלום מסך של ".werkkzeug3", מציג טקסטורה מרונדרת עם פרמטרים שקובעים את העיצוב שלה)


כיצד "מציירים" (מחוללים) את הטקסטורה של הלבנים?

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

 
(תמונות עם דוגמאות של טקסטורות לבנים)

כלי של שצוות ".theprodukkt" פיתח אינו יחיד במינו, ישנם כלים נוספים שמחוללים טקסטורות, רוב הכלים מחוללים טקסטורות bitmap, שזהו חיסרון מסוים מבחינת גודל קבצי המשחק, תבנית אינה תלת-ממדית (ז"א חסרים מאפיינים של עומק, צורתיות וכו'). בתמונות הנ"ל ניתן לראות קירות שמכוסים במרטיצות לבנים, מטריצות מורכבות מתבניות תלת-ממדיות של לבנים, למעשה ישנו שימוש במספר של תבניות לבנים, מיקום הלבנים והשתלבותם נעשה באופן רנדומלי, כל לבנה מעוצבת עם מאפיינים ייחודיים שלהם על מנת שיהיה גוון בטקסטורה. ניתן לראות את העומק ואת הצורתיות המעוותת של כל לבנה, משחק האורות והצבעים על פני הטקסטורה הנו מאוד משמעותי – זה נותן תחושה של עולם יותר אמיתי. אילו טקסטורה הייתה מסוג bitmap, לא היה ניתן ליישם את כל הדברים הללו.

"ציור" הלבנים נעשה ע"י כרטיס גראפי (GeForce ודומים לו) או ע"י ה- CPU, כל תבנית של מטריצה מרונדרת כאובייקט תלת-ממדי עם פרמטרים של צבעים, גובה, רוחב, עומק, ועוד. ישנן תבניות שכן מורכבות מתמונות bitmap שמשמות להן למילוי (במקרה של לבנים אפשר לבנות אובייקט תלת-ממדי עם מילוי של bitmap), במקרה זה "מלבישים" או "משטחים" את התמונה על פני התבנית הצורתית. כרטיס גראפי מרנדר את הטקסטורות בהתאם להגדרות של המטריצה, לשם כך נדרשים חישובים רבים וככל שטקסטורה מורכבת יותר, יידרשו יותר חישובים, ז"א יהיה צורך בחומרה חזקה/מהירה יותר. מנוע שמבצע את הרינדור בעזרת הכרטיס הגראפי יכול להיות DirectX או OpenGL, במקרה של ".theprodukkt" נעשה שימוש ב- DirectX, כאשר טקטורות מרונדרות בשלב טעינת סצינות המשחק, כל טקסטורה נבנית ע"י CPU של המחשב נטענת לזיכרון RAM ומשם נעשית קריאה לטקסטורה בזמן אמת (בזמן תצוגת האובייקט בשלב מחשק) ע"י DirectX שתפקידו "להלביש" את הטקסטורה על המשטח המיועד.

scene designer 
(werkkzeug מספק יכולת עיצוב טקטורות עבור אובייקטים או סצנות שלמות, התוצר הסופי – טקטורות bump-texture עבור מנוע רינדור)


צוות ".theprodukkt" מספק כלים נוחים וקלים לבנייה של שלבי המחשק עם טקסטורות מורכבות, כאשר התוצר הסופי (קבצי ההרצה כמו EXE) לא תופס יותר מ- 90-250 קילובייט!
כן, קראתם נכון, משחק שלם עם טקסטורות, מספר שלבים (עם סצנות מורכבות), AI, דמויות, מוסיקה ועוד תופס בסה"כ 96K!

להלן מספר דוגמאות לפרויקטים של ".theprodukkt":

Farbrausch debris demo

חייב לציין, שלמרות קובץ הרצה קטן, משחק די זולל משאבים של המחשב 

(דמו של הפרויקט המדגים את היכולות המדהימות של הכלים – הכול נכנס לקובץ EXE של 180K)

.kkrieger


(משחק יריות תלת-ממדי עם מספר שלבים, דמויות תלת ממדיות, עולמות, קול ועוד – הכול נכנס לקובץ EXE של 96K)

 project genesis


 (דמו מדהים ע"י Conspiracy – הכול נכנס לקובץ EXE של 64K)

נכון להיום הגראפיקה לא מביאה להתפעלות וגם המשחקים לא שופעים בחדשנות, אבל אם ניקח עובדה שהכול נארז לקובץ EXE בעל ממדים מצחיקים של 64-96-186 קילובייט אז אפשר לתת להם קרדיט גדול. הכוון שלהם הוא משחקי תלת-ממד בסלולארי. שם עדיין צריכים לחסוך מאוד במשאבים המנוצלים, משחקי מחשב תלת ממדיים נכנסו חזק לתחום הסלולארי, ".theprodukkt" מציע אלטרנטיבה טובה:


אם יש לכם שאלות בנוגע ל"איך הם עושים זאת?", תוכלו לקבל תשובות לחלק מהן כאן.

– על פי מה שלמדתי באתר שלהם, מוסיקה נכנסה בפורמט MIDI על מנת לחסוך מקום, אומנם קבצים בפורמט זה אינם יכולים להכיל קול אנושי או אפקטים מסוימים, נותנים מענה הולם למוסיקת רקע וסאונד שמתורגם מתווים דיגיטאליים ע"י כרטיס קול. טקסטורות תמונות bitmap אין, הכול מרונדר במנוע של המשחק בזמן טעינת שלבי המחשק (רינדור הטקסטורות נעשה ע"י ה- CPU), לשם ציור הגרפיקה נעשה שימוש ב- DirectX, פונטים מגיעים ממערכת ההפעלה. לא מצאתי מידע אודות סביבת הפיתוח של כלי שלהם, אני מניח שקוד מקומפל מ- ++C, עדיין אין לי מושג איך הוא קטן כ"כ (בהתחשב שמשחק צריך לכלול אלפי שורות קוד שמטפלים בהגדרת אובייקטים, טקסטורות, קול, בינה מלאכותית ועוד) , תוכנית פשוטה של הדפסת "שלום עולם" שכתבתי ב- ++C לוקחת כ- 24K (יחד עם כל ה- headers המיותרים), מה שבטוח את הקוד הם לא כותבים באסמבלר וגם אם יש דחיסה כלשהי בתוך ה- EXE אז עדיין הקובץ יוצא מאוד קטן.

 
(תצלום מסך של משחק תלת מימדי במכשיר סלולארי)

::: .theprodukkt, היה נעים להכיר :::

בהמשך, ראו פוסט נוסף על פרויקט "בלנדר" בנושא" כלים לפיתוח תלת-ממד".
 
Technorati Tags: ,,,,,

Add comment
facebook linkedin twitter email

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

2 comments

  1. Fredrick25 באפריל 2013 ב 10:23

    Hello colleagues, its great post on the topic of educationand fully defined, keep it up all the time.

    Reply
  2. ronaltjn22 בספטמבר 2013 ב 12:16

    The NYPD cop miscarrie [url=http://www.adjustable-levers.net]brake clutch levers[/url] chemical a few babi } Five.txt,One,S] es because of on-the-job bigotry which often bundled the director loud for your girlfriend due to having on him / her homogeneous skirts — within which in turn your lady couldn’w not meet, a suit promises.Jessenia Guzman reveals this girl [url=http://www.adjustable-levers.us]adjustable levers[/url] has disastrously dropped four small children — twin girls produced too soon common, and yet another pregn [url=http://adjustablelevers.weebly.com]motorcycle brake lever[/url] ancy next year — after currently being often badgered on Manhattan’ersus Twenty fourth Precinct. “With child white wine a lot of women with [Guzman’s] control seem to be faithfully cured with going above lodgings, at the same time fraction officers are always turned down very similar remedy,” this girl rates from a New york legal courts personal injury suit.This 41-year-old as a result of upstate Chester is looking to get unspecified destroys.Baltimore is usually evaluating the boasts.

    Reply