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

יצירת אקראי Motion עם AE 5.5 של ביטויים

Dan Ebberts
הדרכות :
יצירת אקראי Motion עם AE 5.5 של ביטויים
יצירת אקראי Motion עם AE 5.5 של ביטויים


from CreativeCow.net's ''25 Cool Things about After Effects 5.5'' Series


Generating Random Motion with AE 5.5's Expressions
Dan Ebberts Dan ebberts,
Sacramento, קליפורניה, ארצות הברית

© 2002 על ידי Dan ebberts ו CreativeCow.net. כל הזכויות שמורות.

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


הורדת סרטים הפרויקט הקובץ (כולל קובץ AI) הורד stuffit expander עבור Windows

הבעיה:

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

אם (זמן = 0) (
X = 10
}
אחר (
X = x + 1
}

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


כדי להציל את seed_random:

מתברר, כי אתה יכול לנוע עם זה בעיה משופר (עבור AE 5.5) seed_random פונקציה. פונקציה זו מאפשרת לך להקים הדיר רצף של מספרים אקראיים ו להם להתחדש בכל עת, רק על ידי שחזור של הזרע כדי קודמת ערך ולאחר מכן קורא אקראית () function. זה נותן לנו פתרון לבעיה, כי למרות שאנו לא יכולים לעבור את ערכי אקראי מאחד מסגרת למקום הבא, אנחנו יכולים לשחזר אותם באמצעות seed_random. הבה נראה כיצד פועל seed_random.

לפתוח את הפרויקט הקובץ ולאחר מכן פתח את "comp בסיסי". זוהי רק 640x480 comp 50x50 סולידי עם שכבת הוספה. בחר "מוצק 1" ו לחשוף את המיקום נכס. Alt-קליק (אפשרות קליק) על סטופר כדי להפעיל את הביטוי הזה נכס. הכנס את הביטוי הבא:

[האקראית (0,This_comp.רוחב),אקראית (0,This_comp.גובה)];

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

Seed_random (1,נכון);
[האקראית (0,This_comp.רוחב),אקראית (0,This_comp.גובה)];


שמתי לב, שוב את הכיכר כדי קפיצות אקראי עמדה, אך עם התצוגה המקדימה זה נשאר שם. אופן פעולה זה הוא חדש עקב שינוי זה Adobe שבוצעו seed_random את הפונקציה עבור AE 5.5. הם הוספנו הפרמטר השני, כי כאשר מוגדר "אמיתי" מגדיר את פונקציית אקראי, כך מספרים אקראיים שנוצרו אינם תלויים בזמן. אקראית מספרי תלויים שכבה מספר, מספר הנכס, את הערך של הפרמטר הראשון של השיחה seed_random (את "הזרע"), ואת מספר הפעמים אקראי פונקציה כבר התקשר. המשמעות היא, כי הביטוי אותו יפיק שונים מספרים אקראיים שכבה אחר או נכס (מאוחר יותר, אנו מנצלים את זה כדי להוסיף במהירות המורכבות שלנו comp). נסה לשנות את "הזרע" הפרמטר אחר מספר. תוכל להבחין כי הכיכר עובר למיקום אחר ואת נשארת שם. לשנות את הפרמטר השני "שקר" ו להבחין כי בעת תצוגה מקדימה, הכיכר קפיצות בכל מקום שוב.

להוסיף קצת יותר הקוד שלך הביטוי, כך זה נראה ככה:

אם (Time 1) (
Seed_random (1,נכון)
}
אחר (
Seed_random (2,נכון)
}
[האקראית (0,This_comp.רוחב),אקראית (0,This_comp.גובה)];


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

אז איך זה שאנחנו משתמשים חדשים, יותר חזקה seed_random פונקציה? הנה המפתח מושג: עם הפרמטר השני מוגדר "נכון", עבור כל שכבת, נכס, ואת זרעי ערך, אקראית מספר שאתה מקבל בעת התקשרות אקראית () function רק תלוי כמה פעמים יש לך קרא את הפונקציה מאז קביעת הזרע. כי הוא, זו הפעם הראשונה שאתה קורא אקראית () לאחר שיצרתי את הזרע תוכל לקבל מספר אקראי particlar (הבה נקרא לזה x)?. השיחה השנייה יפיק השני מספר אקראי (בואו לקרוא את זה Y) וכן הלאה. אבל אם אתה קורא seed_random שוב עם המקורית הזרע, את הרצף יהיה להתחיל מחדש. כי הוא, הבא אקראית () שיחה יהיה להתחדש המקורי מספר אקראי (x במקרה זה). משתמש אחר ערך הזרע יגרמו רצף שונה לחלוטין להיות שנוצר. חשוב על הדוגמה הבאה:

Seed_random (1,נכון); / / קבע את הערך הזרע
א = אקראי ();
B = אקראי ();
C = אקראי ();

Seed_random (1,נכון); / / לאפס את הזרע לאותו ערך
אני = אקראי ();
J = אקראי ();
K = אקראי ();

Seed_random (2,נכון) / / חדשות הזרע
ש = אקראי ();
R = אקראי ();
S = אקראי ();

Seed_random (1,נכון); / / לקומם מקורי הזרע
X = אקראי ();
Y = אקראי ();
Z = אקראי ();

במקרה זה, A,B, ו C יהיה כל להיות שונים מספרים אקראיים. עם זאת, א ואני יהיה זהה, ב 'ו ג' יי תהיה זהה, ו C ו-K תהיה זהה, כי הזרע כבר לאפס (עד 1 במקרה זה) ואת אקראי מתחיל רצף מעל. Q,R ו S יהיה חדש ברצף של מספרים אקראיים, כי זרעי השתנה עד 2. את רצף x,Y,Z יהיה זהה,B,C ואני,J,K כי זרעי נקבע 1 שוב. כדי שנוכל לחזור אל רצף של מספרים אקראיים על ידי reestablishing את הזרע ערך שנוצרו באותם מספרים.

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

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

Seg_start_time = 0; / / הראשוני תנאים
Seg_סוף_time = 0;
I = 1;
Tmin = .5; / / מינימום זמן מחזור (לא יכול להיות אפס)
Tmax = 2; / / מקסימום זמן מחזור
בעת (זמן = seg_סוף_time) (
אני אני = 1; seed_random (אני,נכון);
Seg_start_time = seg_סוף_time;
Seg_סוף_time = seg_סוף_time + אקראי (tmin,Tmax);
}
אחוזים = (הזמן - seg_start_time) / (seg_סוף_time - seg_start_time);
Target_x = אקראי () * This_comp.רוחב;
Target_y = אקראי () * This_comp.גובה;
Seed_random (I-1,נכון);
X = אקראי (); / / This is a-לזרוק מהמקום ערך
Old_x = אקראי () * This_comp.רוחב;
Old_y = אקראי () * This_comp.גובה;
קלות (אחוזים,[old_x,Old_y],[target_x,Target_y]);

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

זה ביטוי, "אני" הוא קטע שלנו נגד, אשר נשלח אליך גם להשתמש בשם הזרע ערך עבור אותו קטע. "tmin" ו "tmax" הגדר את טווח אקראי של פעמים האפשר את משך הזמן של כל קטע. במקרה זה, קטע א תימשך בין .5 ו 2 שניות. את "זמן" שבו הוא לולאה הביטוי נתונים אילו מגזר זה ב. הוא עושה זאת על ידי incrementing את הזרע וכן מצבירת אקראי קטע durations עד ערך רב יותר מאשר הזמן הנוכחי הוא הגיע. בשלב זה היא יודעת את ההתחלה, סוף, ואת הזמן הנוכחי של קטע הנוכחי, כך שהוא יכול לחשב את אחוז קטע זה, כי היא השלימה. התנועה קוראת אקראית () function שתי פעמים נוספות כדי להשיג את היעד הקואורדינטות x ו-y של מיקום הסיום של קטע זה. את החלק הבא הוא קצת ערמומי. הביטוי עדיין צריך לדעת את מיקום ההתחלה של קטע זה, כך שהוא יכול לחשב (מבוסס על אחוז הושלמה) את המיקום הנוכחי. מתחילת מיקום זהה בסופו של דבר המיקום של קטע הקודמת, אנחנו רק את הזרע decrement לחזור הזרע הקודמת של קטע. הביטוי אז קורא אקראית () function to get סוף הקואורדינטות x ו-y של קטע הקודמת. תוכל להבחין כי יש אחד "לזרוק-מהמקום" קריאה אקראית () לפני הקודמת x ו-y הערכים נקבעים. הסיבה לכך היא כי עבור כל הזרע, הראשון אקראית () היא תמיד שיחה המשמשים את שעת סיום (ואנו כבר יודעים) - את 2 ו 3 שיחות משמשים עבור הקואורדינטות x ו-y.

לפתוח את "comp הביטוי". זה comp זהה הקודם comp למעט תוספת של randomizing ביטויים דומים עבור עכירה ו סיבוב. היא ביטוי של אטימות:

Seg_start_time = 0; / / הראשוני תנאים
Seg_סוף_time = 0;
I = 1;
Tmin = .5; / / מינימום זמן מחזור (לא יכול להיות אפס)
Tmax = 2; / / מקסימום זמן מחזור
בעת (זמן = seg_סוף_time) (
אני אני = 1; seed_random (אני,נכון);
Seg_start_time = seg_סוף_time;
Seg_סוף_time = seg_סוף_time + אקראי (tmin,Tmax);
}
אחוזים = (הזמן - seg_start_time) / (seg_סוף_time - seg_start_time);
Target_עכירה = אקראי () * 100;
Seed_random (I-1,נכון);
X = אקראי (); / / This is a-לזרוק מהמקום ערך
Old_עכירה = אקראי () * 100;
קלות (אחוזים,Old_עכירה,Target_עכירה);

ואת הרוטציה היא הביטוי:

Seg_start_time = 0; / / הראשוני תנאים
Seg_סוף_time = 0;
I = 1;
Tmin = .5; / / מינימום זמן מחזור (לא יכול להיות אפס)
Tmax = 2; / / מקסימום זמן מחזור
בעת (זמן = seg_סוף_time) (
אני אני = 1; seed_random (אני,נכון);
Seg_start_time = seg_סוף_time;
Seg_סוף_time = seg_סוף_time + אקראי (tmin,Tmax);
}
אחוזים = (הזמן - seg_start_time) / (seg_סוף_time - seg_start_time);
Target_rotation = אקראי () * 360;
Seed_random (I-1,נכון);
X = אקראי (); / / This is a-לזרוק מהמקום ערך
Old_rotation = אקראי () * 360;
קלות (אחוזים,Old_rotation,Target_rotation);

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

כאן מגיע החלק הכיפי. כפולים "מוצק 1" חבורה של פעמים (או פשוט לפתוח את "רב comp") ו 'תצוגה מקדימה של comp. זכור - אתה יכול לעשות את זה ממש במהירות באמצעות שליטה + D קיצור (פקודה + D על MAC ). עכשיו כאשר יש לך תצוגה מקדימה של התרגשות של פעילות. אקראית מספרי לכל שכבת שונים אף הם ביטויים בדיוק את אותו עבור כל.


עכשיו הם מקבלים יותר דברים מעניינים


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


קל ליצור מורכבות comp במהירות עם אלה ביטויים


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

# # Dan ebberts

תרגיש חופשי לדבר על טכניקה זו ב After Effects פורום כאן ב CreativeCow.




בקר הפורומים שלנו ולצפות בו מאמרים אחרים CreativeCow.net אם מצאת דף זה קשר ישיר.


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


© CreativeCOW.net כל הזכויות שמורות.

Creative קהילות של העולם

[מוביל]

Englishالعربية中文FrançaisDeutschעבריתहिन्दीItaliano日本語PortuguêsРусскийEspañol