שתפו

כתוביות באפטר אפקטס

כתוביות תרגום באפטר אפקטס ב-3 דקות

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

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

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

קצת על טקסט ב-After Effects

תיבות טקסט

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

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

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

טקסט מקור - Source Text

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

כמו שאפשר לראות למאפיין Source Text יש אייקון Stopwatch שמאפשר לנו להנפיש את טקסט המקור. בגלל שהטקסט הוא בעצם מערך של אותיות, לחיצה על האייקון תייצר אך ורק קיפריים קפוא (מרובע) משום שלא ניתן לייצר אנימציה בין מערך למערך.

מרגע שקבענו קיפריים ל-Source Text כל שינוי שנעשה לטקסט, אם בשינוי הטקסט עצמו ואם בשינוי מאפייני הטקסט בחלוניות Character ו-Paragraph, מיד ייווצר לנו קיפריים נוסף. אם נריץ את ה-Preview נוכל לראות את השינויים שביצענו קורים לנו מול העיניים בכל פעם שמחוון הזמן יעבור על הקיפריימים שנוצרו.

נשמע כמו התחלה טובה לייצר כתוביות טקסט משתנות? חכו.

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

בואו נכין את הכתוביות שלנו

הכנת הטקסט

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

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

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

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

נלחץ קליק+alt על אייקון ה-Stop Watch של מאפיין ה-Source Text כדי לפתוח את חלונית כתיבת הקוד ובתוכה נקליד את הקוד הבא:

txt = value;
n = 0;
if (marker.numKeys > 0){
n = marker.nearestKey(time).index;
if (marker.key(n).time > time) n–;
if (n > 0) txt = marker.key(n).comment;
}
txt

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

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

טקסט של כתוביות

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

אבל אל תלכו עדיין. בואו ניקח את זה עוד שלב קדימה.

כתוביות בשתי שורות

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

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

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

s=text.sourceText.split(/\n|\r/).length;

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

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

subtitles leading
ערך ה-Leading מסומן במלבן סגול

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

נשים על שכבת הטקסט שלנו סליידר שייצג את ערך ה-Leading (למען הסדר הטוב גם נקרא לסליידר Leading) ונעדכן את האקספרשן שכתוב בפוזישן של השכבה לקוד הבא:

s=text.sourceText.split(/\n|\r/).length;

d=-effect("Leading")("Slider")*(s-1);

value+[0,d];

השורה הראשונה של הקוד נשארת אותו דבר.
השורה השניה מושכת את הערך של הסליידר שלנו, הופכת אותו לשלילי (מכיוון שאנחנו רוצים שהתנועה תתבצע כלפי מעלה) ואז מכפילה אותו בערך של s מינוס אחד. כך אנחנו גורמים לערך של d להיות 0 כשיש שורה אחת ולהכפיל את עצמו בכל פעם שנוספת שורה.
השורה השלישית לוקחת את הערך הקיים של הפוזישן של השכבה ומוסיפה לו את הערך 0 לציר x ואת הערך של d לציר y.

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

after effects subtitles

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

עשינו בשבילכם את העבודה

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

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

יש שתי תיקיות אפשריות לשמירה של הפריסט.

  1. תיקיית הפריסטים של התוכנה
    C:\Program Files\Adobe\Adobe After Effects CC 2018\Support Files\Presets
    (במקרה שלי מדובר על גרסה 2018 אך כמובן שאתם צריכים להתקין בתיקייה הרלוונטית לכם)
  2. האופציה המועדפת עלי – תיקיית הפריסטים האישית
    C:\Users\{User}\Documents\Adobe\After Effects CC 2018\User Presets
    (את המילה {User} תחליפו בשם המשתמש שלכם במחשב).

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

ואם ממש לא בא לכם לחכות עד להפעלה הבאה של התוכנה אתם יכולים לרענן את רשימת הפריסטים:

תהיו חברים ושתפו עם החברים

קצת על הכותב

אולי יעניין אותך...

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *

ממש עוד רגע הפריסט אצלכם

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

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

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

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