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

בניין משלך 3D החלקיקים הגנרטור

Dan Ebberts
הדרכות :
בניין משלך 3D החלקיקים הגנרטור
בניין משלך 3D החלקיקים הגנרטור
from CreativeCow.net's ''25 Cool Things about After Effects 5.5'' Series


Building Your Own 3D Particle Generator
Dan Ebberts Dan ebberts,
Sacramento, קליפורניה, ארצות הברית

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

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


הורדת סרטים הפרויקט קבצים: .לשבת הפרויקט קבצים: .ZIP

את היסודות --- ---



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

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


האסטרטגיה --- ---


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


--- בוא להתחיל!---

קדימה, לפתוח את קובץ הפרוייקט ולאחר מכן, פתח את "פיצוץ - יסוד" comp. תוכל להבחין גרפי שכבת נקרא "כוכב אבוקה" לבין שכבת ריק, אשר לשניהם 3D הדליק. נציג להשתמש במיקום של ריק כדי להגדיר את מרכז הפיצוץ. נציג מתייחס ריק כמו החלקיקים "emitter" ואחר כך אנחנו מעבירים את ריק יהיה בסביבה כדי להקרין "emitter מהירות" של חלקיקי. בחר את "כוכב הבהקה" שכבת והקלד "U" כדי להציג את כל המאפיינים אשר תחול על אותם ביטויים. גם סוג CTRL + SHIFT + T (PC), או cmd + SHIFT + T ( MAC ) כדי להציג את ההשפעה להחיל את שכבת. תראה כי "נקודה" שליטה יושם שמם ואת "החיים". ייתכן שאתה תוהה למה אנחנו מעוניין להשתמש במקום נקודת שליטה של המחוון שליטה להחזיק את "החיים" ערך. הסיבה היא כי בשלב מאוחר יותר (כשנגיע לחזור שמיש חלקיקים) אנו הולכים צריך לעבור את שניהם "החיים" ו "לידה" פעמים, כך אנחנו צריכים לשלוט זה יכול לעבור שני ערכים. אנחנו לא יכולים פשוט להשתמש בשני המחוון שולטת? לא, בגלל חישובים של "לידה" ו "החיים" צריך להתבצע בתוך אותה הביטוי כדי לגרום לזה לעבוד. על ציר הזמן, לחץ על הבא כדי twirly "נקודה" כדי לחשוף את הביטוי להחיל את "החיים" נקודת שליטה:

Lmin = 1.5; / / מינימום החלקיקים החיים
Lmax = 2.5; / / החיים המקסימלית החלקיקים

לראותd_random (1,נכון);
החיים = אקראי (lmin,Lmax);
לידה = 0;
[לידה,החיים]

זה ביטוי יפיק אקראי "החיים" הערך שלנו כי החלקיקים הוא בין 1.5 ו 2.5 שניות. ערך זה יהיה פקוק לתוך השני אלמנט של שליטה שלנו הצבע משתנה. האלמנט הראשון ( "לידה") הוא פשוט בחר לאפס מאז זה הפיצוץ הראשון comp כל חלקיקי שלנו תהיה אפס נולד ב-TIME. את "seed_random" קוראים רק אומר After Effects כי אנו רוצים לקבל את אותו ערך אקראי עבור "חיים" בכל פעם שאנחנו מפעילים את הביטוי (אחרת את "החיים" הערך היה לקפוץ על כל מסגרת כ - אשר אינו לעזור לנו כאן). אם אתה רוצה ללמוד יותר על "seed_random", לראות את הדרכה יצירת אקראי Motion. אם אתה רוצה לשנות את החיים span של חלקיקים, אתה מעוניין רק לשנות את "lmin" ו "lmax" ערכים.

לחץ על twirly ליד עמדת לחשוף זה הביטוי:

Vmin = 500; / / המינימום הראשוני מהירות
Vmax = 700; / / הראשוני מהירות מקסימלית

לידה = אפקט ( "חיים").פרמטר ( "נקודה") [0];
החיים = אפקט ( "חיים").פרמטר ( "נקודה") [1];
מקור = this_comp.שכבת ( "ריק 1").מיקום.Value_at_time (לידה);
גיל = זמן הלידה;
לראותd_random (1,נכון);
S = אקראי (vmin,Vmax); / / הראשוני Speed
א = degrees_to_radians (אקראית (180)); / / אנכי זווית מ
R = degrees_to_radians (אקראית (360)) / / סיבוב סביב ציר Y
X = S * במתמטיקה.חטא (א) * במתמטיקה.חסת עלים (R);
Y =- S * במתמטיקה.חסת עלים (א);
Z = S * במתמטיקה.חטא (א) * במתמטיקה.חטא (R);
V = [x,y,Z];
המקור + V * הזמן

זוהי עמדתו הבסיסית של הביטוי "אפס G" הפיצוץ. החלקיקים שלנו תהיה ההשקה ב אקראית לכיוון 3D שטח מן "המקור" (שהוא רק את המיקום של שכבת ריק) עם מהירות ראשונית בין 500 ו 700 יחידות (אשר בערך equates כדי פיקסלים לשנייה). את החלקיקים ימשיכו באותה מהירות ובכיוון עד תמות החוצה. אנחנו עדיין לא ב factored הרוח, כוח משיכה, וגרור. אני בטוח שאתה שם לב שלושת השורות להשתמש טריגונומטריה פונקציות JavaScript כדי לחשב את x, y, ו Z רכיבים של מהירות החלקיקים של וקטור. וקטור זה מופק מתוך אקראיים ערכי מהירות ( "S"), ההשקה של זווית אנכית ( "א") וכן את סיבוב ביחס ל comp של ציר Y ( "R"). לא לדאוג יותר מדי על כל זה וקטור דברים בשלב זה - כמו שאמרתי לפני, אתה לא צריך להבין איך זה עובד כדי שתוכל להשתמש בה ואנו לכסות את זה בפירוט רב יותר מאוחר יותר. את הדבר העיקרי שאתה צריך לדעת על גירסה זו של ביטוי עמדתו היא כי אתה מעוניין לערוך את "vmin" ו "vmax" כדי לשנות את ערכי מהירות הראשונית של החלקיקים. לאחר מכן נציג להוסיף אלוץ עבור זווית בין הניצב שיאפשר לנו ליצור מעין סוג לנתז.

לחץ על twirly קטן ליד הסולם כדי לחשוף את הביטוי:

Max_סולם = 50; / / מקסימלית הסולם
S =.2; / / סקלה כבש מעקב זמן

החיים = אפקט ( "חיים").פרמטר ( "נקודה") [1];
גיל = זמן השפעה ( "חיים").פרמטר ( "נקודה") [0]; / / גיל = זמן הלידה
אם (גיל S) (
X = (גיל / S) * Max_סולם;
[x,x,100]
אחר) (
[Max_סולם,Max_סולם,100]
}

האם כל זה הביטוי הוא כבש את הסולם מ 0 עד הערך שצוין "Max_סולם" (50% במקרה זה) על פני תקופה מוגדרת על ידי "S" (.2 שניות, במקרה זה). אם אתה רוצה את חלקיקי להגיע לגודל המקסימלי מהר יותר או לאט יותר, אתה מעוניין לערוך את הערך של "S". שים לב ערך זה צריך להיות פחות "lmin" של "החיים" הביטוי אם אתה רוצה להיות בטוח כי החלקיקים מגיעה בגודל מלא לפני שהוא מת.

כעת לחץ על הבא כדי twirly Z סיבוב ותראה את הביטוי:

Rmax = 1080; / / מקסימום סיבוב
Rmin =- 1080; / / מינימום סיבוב

לידה = אפקט ( "חיים").פרמטר ( "נקודה") [0];
לראותd_random (1,נכון);
R = אקראי (rmin,Rmax);
החיים = אפקט ( "חיים").פרמטר ( "נקודה") [1];
גיל = זמן הלידה;
אם (החיים == 0) (
0
אחר) (
R / * בן חיים
}

זה ביטוי בוחרת ערך אקראי (בין 1080 ו -1080 מעלות מעלות) במשך סיבוב סביב ציר Z דרך החיים של החלקיקים. שמתי לב, זה עושה שימוש בביטוי "לידה" ו "החיים" ערכים מנקודת שליטה. כמו כן, שים לב לשימוש של "seed_random" הפונקציה כדי לוודא את הערך שנבחר אקראית סיבוב נשאר אותו הדבר בכל פעם את הביטוי מחושב. אם אתה רוצה לשנות כמה יכול לסובב את חלקיקי, אתה מעוניין לערוך את "rmax" ו "rmin" ערכים.

סוף סוף, לחץ על twirly ליד עכירה לחשוף את הביטוי:

מקמוק =.75; / / החלקיקים להמוג הזמן הקצוב
Max_עכירה = 100; / / מקסימלית עכירה

החיים = אפקט ( "חיים").פרמטר ( "נקודה") [1];
גיל = זמן השפעה ( "חיים").פרמטר ( "נקודה") [0];
אם (גיל החיים) (
0
אחר) (
אם (גיל חיים מקמוק) (
((בן חיים) / נמק) * Max_עכירה;
אחר) (
Max_עכירה
}
}

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

זהו זה עבור ביטויים זה הפיצוץ הראשון. בחר את "כוכב הבהקה" שכבת ו כפולים זה חבורה של פעמים. אני בדרך כלל רק להכות על CTRL + D (PC), או cmd + D ( MAC ) ארבע או חמש פעמים, בחר המקורי וכל כפילויות ולאחר מכן פגע CTRL + D / cmd + da חבורה יותר פעמים כדי ליצור לפחות 50 חלקיקים. תצוגה מקדימה של comp. באופן טבעי, עם זה הרבה שכבות, כל אחד עם חמישה ביטויים מיושם, זה עשוי לקחת קצת זמן על מנת להבהיר את התצוגה המקדימה. כאשר יש ליישם את הטכניקה, תצטרך לשלם יתרת הזמן נגד שימוש מספיק חלקיקים כדי ליצור אפקט משכנע. אתה צריך לגמור עם נחמד 3D הפיצוץ שבו חלקיקים רק הפיצוץ מחוץ לכל הכיוונים ללא כל הכוחות פועלים על אותם אלא את מהירות הראשונית.

--אפס G-65 הפיצוץ עם חלקיקי


--- בוא נהיה פיזי ---


עכשיו בואו לקפוץ לתוך עמוק בסופו של הבריכה ולהוסיף את השפעות פיזיות של הרוח, כוח משיכה, לגרור, ו emitter מהירות כדי עמדתנו הביטוי. אנחנו כל אוסיף את הקוד כעת, אבל אנחנו לא בהכרח להשתמש בכל הפרמטרים של חדשות עבור כל דוגמה. נציג לעבור הרבה דוגמאות למרות, עד שמנו הכל מכוסה. אתם מוזמנים לפתוח את "פיזיקה עם התפוצצות" comp. בחר את אחד של "כוכב הבהקה" שכבות והקלד "P" כדי להציג את עמדתו נכס. לחץ על הבא כדי twirly "עמדה" כדי לחשוף את הביטוי החדש הכולל את כל פיסיקה. זה הקוד החדש:

G = 100; / / הרצנה
W = 0; / / כלי נשיפה
Wdir = 0; / / כיוון הרוח (0 = משמאל)
Vmin = 700; / / המינימום הראשוני מהירות
Vmax = 1000; / / הראשוני מהירות מקסימלית
אמין = 0; / / מינימום ההשקה של זווית אנכית
Amax = 110; / / הפעלה מקסימלית של זווית אנכית
D = 4; / / לגרור coeffecient

לידה = אפקט ( "חיים").פרמטר ( "נקודה") [0];
החיים = אפקט ( "חיים").פרמטר ( "נקודה") [1];
מקור = this_comp.שכבת ( "ריק 1").מיקום.Value_at_time (לידה);
גיל = זמן הלידה;
לראותd_random (1,נכון);
S = אקראי (vmin,Vmax); / / הראשוני Speed
V_e = this_comp.שכבת ( "ריק 1").מיקום.Velocity_at_time (לידה); / / emitter מהירות
א = degrees_to_radians (אקראי (אמין,Amax)); / / אנכי זווית מ
R = degrees_to_radians (אקראית (360)) / / סיבוב סביב ציר Y
X = S * במתמטיקה.חטא (א) * במתמטיקה.חסת עלים (R);
Y =- S * במתמטיקה.חסת עלים (א);
Z = S * במתמטיקה.חטא (א) * במתמטיקה.חטא (R);
V = [x,y,Z] + v_e;
New_speed = אורך (V);
Unit_v = נרמל (V);

אם (d 0) (
Delta_p = new_speed * (1-math.EXP (-D * גיל)) / d;
אחר) (
Delta_p = גיל new_speed *;
}
Delta_w = W * גיל;
Delta_g = G * גיל * גיל / 2;

WA = degrees_to_radians (wdir);

מוצא delta_p * unit_v + + [delta_w * במתמטיקה.חסת עלים (WA),0,Delta_w * במתמטיקה.חטא (WA)] + [0,Delta_g,0]

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

אתם מוזמנים לצפות בתצוגה מקדימה של comp. תוכל להבחין כי חלקיקי שלנו נתקלים כעת התנגדות האוויר (גרר) ו מושפעים הכבידה. שמנו גם הוגבלה השקת הזווית של חלקיקים בין 0 ו 110 מעלות מ אנכי.

- הפיצוץ עם כוח משיכה (65 חלקיקים)


טעויות לקרות --- ---


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

Lmin = 1.5; / / מינימום החלקיקים החיים
Lmax = 2.5; / / החיים המקסימלית החלקיקים

החיים = אקראי (lmin,Lmax);
לידה = 0;
[לידה,החיים]


איפה יש עשן .....


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

מיקום:

G = 10; / / הרצנה
W = 80; / / כלי נשיפה

סולם:

Max_סולם = 150; / / מקסימלית הסולם

Z-סיבוב:

Rmax = 10; / / מקסימום סיבוב
Rmin =- 10; / / מינימום סיבוב

עכירה:

נמק = 1.25; / / החלקיקים להמוג הזמן הקצוב
Max_עכירה = 50; / / מקסימלית עכירה

אני גם שינתה את מצב בתערובת של שכבת מ "רגיל" ל "מסך".

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

- עם 40 חלקיקי עשן

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


--- בואו להוסיף קצת מפולת כדי לערבב את ---


פתוח לצפות בתצוגה מקדימה של "מפולת" comp. זו רק וריאציה של "הפיצוץ עם פיזיקה" comp בו שיניתי את החלקיקים אל "מפרט" ואת חומרתם שונה ל 80 ו הרוח עד 80. יש Max_סולם להיות מוגדר 75 ו-Z יש רוטציה הביטוי שונו רק כדי לבחור אקראית אוריינטציה בין 180 ו -180 מעלות. עכירה את הביטוי הושבת, עכירה לצאת בשעה 100%.


--- לשים את החלקים יחד ---


תצוגה מקדימה של פתוח "Combo נפץ comp". Comp זה מכיל את "קריצת עין פיצוץ", "עשן", ו "מפולת" comps יחד כדי להדגים כיצד חלקיקים מסוגים שונים יכולים לעבוד ביחד כדי ליצור אפקט מורכב. שמתי לב, "לכווץ transformations" בבוררי כבר מופעלת. זה כל כך כי חלקיקים של שלושת comps יהיה תקין intermingle ב 3D שטח.


- שילוב של מספר comps מורכבים כדי ליצור אפקט


נולד ב---- שוב חלקיקי ---


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

Lmin = 1.5; / / מינימום החלקיקים החיים
Lmax = 2.5; / / החיים המקסימלית החלקיקים

I = 1;
לראותd_random (אני,נכון);
עיכוב = אקראי (Lmax);
לידה = עיכוב;
מוות = עיכוב;
אם (פעם עיכוב) (
[0,0]
אחר) (
בעת (זמן = מוות) (
אני + = 1;
לראותd_random (אני,נכון);
לידה = מוות;
החיים = אקראי (lmin,Lmax);
+ מוות = חיים;
}
[לידה,החיים]
}

ביטוי זה יש לכלול שונו וריאציה של ביטויים שפותחה עבור שלי "יצירת אקראי Motion "הדרכה. יש תחילית, אקראי עיכוב לפני הדור הראשון של התגשמות של החלקיקים. עיכוב זה יהיה בין 0 ו המרבי החלקיקים החיים. אחרת, כל "הדור הראשון" חלקיקים יהיה שנוצר בו זמנית (כמו פיצוץ), וזה לא מה שאנחנו רוצים עבור סוג אפקט מזרקה. בכלל, ביטוי זה עובד על ידי חלוקת הזמן לתוך קו אורך אקראית "מגזרים", כי בין "lmin" ו "lmax" ב משך. כל קטע מייצג חיים חדשים ל-span של החלקיקים. כדי לאפשר מחדש את חלקיקי יש תכונות שונות מאשר המקורי, את seed_random () קורא במיקום ו-Z סיבוב ביטויים זה היה שונה ל:

לראותd_random (לידה,נכון);

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

- מעין תרסיס עם 100 חלקיקים


--- לראש פיסיקה ---


כאשר הוספנו את הקוד של מיקום לכלול ביטוי פיזי אפקטים, הוספנו אחד כי יש לנו עדיין לא הסתכל. אפקט זה הוא מהירות imparted על ידי "emitter" של חלקיקי. זו הנקודה שלנו emitters (ריק שכבות) יש הכל היה קבוע. זה הגיוני שאם אנחנו emitter העבר שלנו באמצעות 3D שטח, את החלקיקים הנפלטים כי הם צריכים להיות נטייה למלא את emitter עד השפעת לגרור, כוח משיכה, ואת הרוח שלח אותם כיוונים אחרים. מכיוון שאנו עכשיו יש מזרקה החלקיקים תרסיס שלנו arsenal, זהו זמן טוב לבדוק את מהירות נכס emitter. תצוגה מקדימה של פתוח "זז emitter 1" comp. זה comp את emitter כבר keyframed לנוע 3D שטח ואת מהירות של emitter היא imparted של חלקיקים. ביצעתי parented שכבה חדשה ( "קוץ blob") עד אפסי, כך שאתה יכול לראות היכן הוא emitter. בניגוד ל, תצוגה מקדימה של פתוח "זז emitter 2" comp. זה בדיוק אותו הדבר comp, אבל זה מוסיף את הקוד של emitter מהירות הושבת. אתה צריך לשים לב להבדל.

- מהירות העברת emitter עם imparted כדי חלקיקי



- העברת emitter עם מהירות כדי לא imparted חלקיקים


יותר כיף החלקיקים --- ---


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

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

- שלג עם מספר החלקיקים תמונות

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

- אש הפיצוץ

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

- זרימת נוזל דמוי

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

- טבעת הגנרטור


--- --- באמצעות מצלמות


זה כנראה טוב כתם לדבר קצת על השימוש במצלמות עם מערכת החלקיקים. את החלקיקים הנוצרים ב AE זה שטח 3d, כל כך מרגש מצלמה סביב חלקיקים באמת יכול להוסיף תחושת העומק שלך הנפשה. אם אתה מחליט להשתמש זז מצלמה, יש לך כמה אפשרויות שימושיות. אם אתה עושה דבר מלבד לסובב את המצלמה סביב emitter, בסופו של דבר זה יתבהר כי חלקיקי עצמן 2 ד. פעולה זו עשויה להיות השפעה שאתה אחרי, במיוחד אם יש לך אלמנטים אחרים לתאם 3D שטח בבירור כי הם אלמנטים 2 ד. השני הוא האפשרות לקבל את חלקיקי תמיד אוריינטציה לכיוון המצלמה. אתה עושה זאת באמצעות תפריט שכבת: שכבת המרה Auto Orient "Orient לכיוון המצלמה". בהתאם חלקיקים, זה יכול לספק משכנע אשליה כי חלקיקים עצמם 3D. הניסוי. תהנו!


--- מילה על חלקיקי ---


את האפקטיביות של אלה תלוי סימולציות, בעיקר, על האיכות של חלקיקים אתה משתמש. אני ממליץ לך לבדוק את אלה שאני כבר משמש את הדוגמאות כדי לנסות לבצע את היד לעבר ביצוע משלו ו substituting אותם אחד comps. לדוגמה, נסה להחליף את snowflakes עם הסתיו עוזב. או פשוט להמציא קצת מוזר חצי שקוף blob ולראות מה זה נראה כמו של גל comp. הניסוי. תהנו! גם לשחק מסביב עם מצבים שונים למזג. זכור כי אתה יכול לבחור את כל חלקיקי ואז כאשר אתה משנה את המצב של אחד למזג, כל האחרים ישתנו גם.


--- סופי להציץ תחת מכסה מנוע ---


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

G = 100; / / הרצנה
W = 0; / / כלי נשיפה
Wdir = 0; / / כיוון הרוח (0 = משמאל)
Vmin = 500; / / המינימום הראשוני מהירות
Vmax = 700; / / הראשוני מהירות מקסימלית
אמין = 0; / / מינימום ההשקה של זווית אנכית
Amax = 110; / / הפעלה מקסימלית של זווית אנכית
D = 4; / / מקדם גרר

לידה = אפקט ( "חיים").פרמטר ( "נקודה") [0];
החיים = אפקט ( "חיים").פרמטר ( "נקודה") [1];
מקור = this_comp.שכבת ( "ריק 1").מיקום.Value_at_time (לידה);
גיל = זמן הלידה;
לראותd_random (לידה,נכון);
S = אקראי (vmin,Vmax); / / הראשוני Speed
V_e = this_comp.שכבת ( "ריק 1").מיקום.Velocity_at_time (לידה); / / emitter מהירות
א = degrees_to_radians (אקראי (אמין,Amax)); / / אנכי זווית מ
R = degrees_to_radians (אקראית (360)) / / סיבוב סביב ציר Y

X = S * במתמטיקה.חטא (א) * במתמטיקה.חסת עלים (R);
Y =- S * במתמטיקה.חסת עלים (א);
Z = S * במתמטיקה.חטא (א) * במתמטיקה.חטא (R);

V = [x,y,Z] + v_e;
New_speed = אורך (V);
Unit_v = נרמל (V);

אם (d 0) (
Delta_p = new_speed * (1-math.EXP (-D * גיל)) / d;
אחר) (
Delta_p = גיל new_speed *;
}
Delta_w = W * גיל;
Delta_g = G * גיל * גיל / 2;

WA = degrees_to_radians (wdir);

מוצא delta_p * unit_v + + [delta_w * במתמטיקה.חסת עלים (WA),0,Delta_w * במתמטיקה.חטא (WA)] + [0,Delta_g,0]


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

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

מקור = this_comp.שכבת ( "ריק 1").מיקום.Value_at_time (לידה);

באופן דומה, מהירות הראשוני של emitter ניתן להשיג עם הצהרה זו,:

V_e = this_comp.שכבת ( "ריק 1").מיקום.Velocity_at_time (לידה); / / emitter מהירות

שמתי לב, "v_e" הוא וקטור. יש לה את העוצמה ואת הכיוון המייצגים את מהירות של emitter.

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

S = אקראי (vmin,Vmax); / / הראשוני Speed
א = degrees_to_radians (אקראי (אמין,Amax)); / / אנכי זווית מ
R = degrees_to_radians (אקראית (360)) / / סיבוב סביב ציר Y



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

לראותd_random (לידה,נכון);

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

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

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

X = S * במתמטיקה.חטא (א) * במתמטיקה.חסת עלים (R);
Y =- S * במתמטיקה.חסת עלים (א);
Z = S * במתמטיקה.חטא (א) * במתמטיקה.חטא (R);

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

V = [x,y,Z] + v_e;

לראות, וקטור מתמטיקה היא לא יותר מדי מפחיד (במיוחד מאז Adobe זה השתנה עם 5.5 כדי לאפשר את השימוש הרגיל מתמטיקה יליעפמ, "+" במקרה זה).

עכשיו אנחנו הולכים להפוך את זה חדש מהירות וקטור על גודל (מהירות) ערך יחידת וקטור (וקטור יחידה הוא רק באורך של וקטור 1):

New_speed = אורך (V);
Unit_v = נרמל (V);

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

אם (d 0) (
Delta_p = new_speed * (1-math.EXP (-D * גיל)) / d;
אחר) (
Delta_p = גיל new_speed *;
}

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

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

מרחק = מהירות * זמן

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

Delta_w = W * גיל;

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

Delta_g = G * גיל * גיל / 2;


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

מוצא delta_p * unit_v + + [delta_w * במתמטיקה.חסת עלים (WA),0,Delta_w * במתמטיקה.חטא (WA)] + [0,Delta_g,0]

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

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


# # Dan ebberts

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



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


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


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

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

[מוביל]

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