מפיתוח Romergo

מתיקונים בלי סוף לסט צילומים קטן: איך אני לומד ליצור סיפורים בעזרת AI

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

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

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

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

לתקן תמונה לא אומר לשמור עליה

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

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

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

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

GENERAL: נקודה שאפשר לחזור אליה

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

מכאן אני מנסה להימנע משרשרת אינסופית של ״התיקון האחרון → התיקון הבא״. מצב חדש נוצר מתוך GENERAL, תוך התחשבות במה שאמור להתרחש עכשיו.

כשמתקנים סצנה, אפשר להסתמך על שלושה דברים:

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

![תרשים GENERAL: מצבים חדשים חוזרים לתמונת ייחוס מאושרת אחת במקום לרשת את כל הגרסאות הקודמות. התמונה הקודמת נשארת מקור עזר.](../assets/ai-film-crew-general.webp)

*זהו איור של הגישה, ולא השוואה בין תוצאות יצירה אמיתיות. GENERAL נותן נקודת ייחוס יציבה, אבל לא מבטיח שכל פיקסל יישאר ללא שינוי.*

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

Render Eye: מה קיים בעולם ומה נראה בפריים

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

אילו פרטים צריך לצייר? אילו צריכים להישאר מוסתרים? ואיך מבדילים בין כפפה מוסתרת לבין כפפה שהמחולל פשוט שכח?

לשם כך אני מפתח את Render Eye. יש לו שני תפקידים: להכין דרישות לפני יצירת התמונה ולבדוק את התוצאה אחריה.

קודם הוא פונה לספר העולם של הסיפור: התיאורים השמורים של הדמויות, המקומות, החפצים והמצבים שלהם. אחר כך הוא משווה אותם לבימוי — מיקום המצלמה, הפעולה ומה שאמור למשוך את תשומת לב השחקן.

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

![Render Eye לפני היצירה ואחריה: תיאורי העולם והבימוי קובעים דרישות לפרטים גלויים ומוסתרים, והתמונה המוגמרת נבדקת לפי אותן דרישות.](../assets/ai-film-crew-render-eye.webp)

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

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

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

הבמאי: למה אנחנו צריכים דווקא את הפריים הזה?

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

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

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

ניקח משפט דמיוני: ״מאחורי הדלת נשמעו צעדים״.

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

בסיפור בלשי, אותו מסדרון עשוי למקד את תשומת הלב ברמז; בסצנה רומנטית — בציפייה למפגש. ההבדל נובע מהחלטות מסוימות. הוספת ״אווירה: אימה״ למשימה לא מספיקה לבדה.

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

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

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

מנהל האיכות: האם השגנו את מה שהתכוונו אליו?

״במאי״ ו״מנהל איכות״ הם תפקידים קרובים בעבודה הזאת, אבל אני מפריד את האחריות. הבמאי מביים את הסצנה. מנהל האיכות בודק את התוצאה.

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

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

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

![חלוקת התפקידים: המקור מנחה את הבמאי; Render Eye מכין ובודק פריימים; הסצנה מורכבת; בקרת האיכות בודקת אותה במשחק ומחזירה משוב לשלב המתאים.](../assets/ai-film-crew-roles.webp)

*בתרשים, Director הוא במאי הסצנה ו-QA הוא מנהל האיכות. התרשים מפושט: המקור נשאר נקודת ייחוס גם בהרכבה ובבדיקה הסופית. חץ החזרה מציין תיקון בשלב המתאים, ולא בהכרח התחלה מחדש של כל העבודה.*

גם אדם לא צריך לשמור על המחולל כל הזמן

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

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

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

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

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

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

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

לשלבים החדשים כבר יש כלים ותוכניות שנשמרות. עכשיו מגיע הניסוי בפרקים ארוכים אמיתיים: עד כמה הם עוזרים לשמור על הדמויות, האווירה ותשומת הלב של היוצר לאורך הסיפור?

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

יצירת סיפורים התבררה כקשה הרבה יותר מ״לכתוב פרומפט טוב״. אבל עכשיו אפשר לפרק את הקושי למשימות מסוימות. לפעמים צריך ייחוס יציב, לפעמים קריאה קשובה, לפעמים שקט לפני שורה. ולפעמים עדיין צריך אדם שיביט בסצנה ויאמר: ״לא, כאן אני לא מאמין לך״.

חזרה לבלוג הפיתוח