| المشكلة:
المفهوم الكامن وراء هذا البرنامج التعليمي جاء للمناقشة على الإنترنت. زميل After Effects عشاق تحاول وضع لتوليد تعبير عن الاقتراح الذي كان عشوائيا في الزمان والمكان. هذا هو, وسيكون الهدف المواقف العشوائية وكذلك الوقت الذي يستغرقه الوصول الى هناك. المشكلة التي واجهتك عند محاولة وضع مثل هذا التعبير هو أن هناك فقط لا يبدو أن وسيلة جيدة لنقل قيمة المتغيرات إلى الأمام في إطار واحد ، من وقت لآخر. أي تحديد المتغيرات التي ستزول في الإطار المقبل. ينظر في المثال التالي : التعبير عن شقاف:
إذا كان (الوقت = 0) (
س = 10
}
الا (
س = س + 1
}
وتعمل هذه الغرامة في الإطار الأول. في الإطار الثاني تحصل بسبب خطأ غير محدد س. تعبير لا يتذكر ان كان 10 س على الإطار السابق. هذا يصبح قيدا خطيرا عندما تحاول أن تفعل شيئا أكثر من عشوائية وقتا طويلا لأنه بمجرد أن يقرر متى ينبغي أن تأخذ, كنت بحاجة لفحص الإطار على كل لمعرفة ما إذا كان الانتهاء من ذلك حتى الآن. من الصعب أن تفعل إذا كنت لا تستطيع أن تمر من قيمة إطار واحد ، لالقادمة.
Seed_random لانقاذ:
اتضح أن يمكنك الحصول على هذه المشكلة مع زيادة (ل AE 5.5) وظيفة seed_random. هذه الوظيفة تسمح لك لإنشاء تكرار تسلسل الأرقام العشوائية وتجديد لهم وسوف, فقط من خلال استعادة البذور الى القيمة السابقة والتي تدعو العشوائي () وظيفة. هذا يتيح لنا حل لهذه المشكلة لأنه على الرغم من أننا لا يمكن أن تمر لدينا قيم عشوائية من إطار واحد إلى آخر, يمكننا إعادة باستخدام seed_random. دعونا ننظر إلى الطريقة التي يعمل seed_random.
فتح ملف للمشروع وبعد ذلك فتح "الأساسية للشركات". هذه مجرد شركات 640x480 مع طبقة صلبة وأضاف 50x50. حدد "الصلبة (1) ،" ويكشف عن موقف الملكية. انقر بديل (الخيار النقر) على ساعة توقيت لتفعيل التعبير عن هذه الممتلكات. أدخل ما يلي التعبير:
[العشوائي (0,This_comp.العرض),عشوائية (0,This_comp.الارتفاع)] ؛
ذلك سيضطر إلى القفز على مربع عشوائية الموقف في شركات. معاينة شركات. ستلاحظ أن مربع يقفز إلى موقع جديد في كل إطار. وليس من المفيد جدا. إضافة خط جديد إلى التعبير بحيث يصبح نصها كما يلي:
Seed_random (1),صحيح) ؛
[العشوائي (0,This_comp.العرض),عشوائية (0,This_comp.الارتفاع)] ؛
نلاحظ أن يقفز مرة أخرى الى الساحة عشوائية الموقف ، ولكن عند المعاينة أن يبقى هناك. هذا السلوك نتيجة لتغيير Adobe إلى وظيفة seed_random AE 5.5. واضاف انهم ثانية معلمة, لأنه عندما وضع "الحقيقية" وتحدد وظيفة عشوائية بحيث الأرقام العشوائية المتولدة لا تعتمد على الوقت. الأرقام العشوائية تعتمد على طبقة عدد, العقار رقم, قيمة أول معلمة في seed_random الكلمة ( "بذور"), وعدد المرات التي تعمل عشوائيا وقد دعي. وهذا يعني أن نفس التعبير سيولد مختلف الأرقام العشوائية في مختلف طبقة أو الممتلكات (في وقت لاحق سوف تستفيد من هذا على وجه السرعة إضافة إلى تعقيد شركات). محاولة تغيير "بذور" معلمة لعدد آخر. ستلاحظ أن مربع يتحرك إلى موقع آخر ويبقى هناك. التغيير الثاني للمعلمة "كاذبة" ، وعندما نلاحظ ان معاينة, المربع يقفز في كل مكان جديد.
إضافة المزيد من المدونة الخاصة بك على التعبير بحيث يبدو هذا:
إذا كان (الوقت 1) (
Seed_random (1),صحيح)
}
الا (
Seed_random (2,صحيح)
}
[العشوائي (0,This_comp.العرض),عشوائية (0,This_comp.الارتفاع)] ؛
الآن ستلاحظ أن عند المعاينة, الساحة يبقى في مكان واحد لاول والثاني ، ثم يقفز إلى موقع آخر للفترة المتبقية من شركات.
حتى كيف يمكننا استخدام هذا الجديد, أقوى seed_random وظيفة? هنا 'sالمفهوم الأساسي: المعلمة الثانية مع مجموعة "حقيقية", لطبقة معينة, الملكية, وقيمة البذور, عدد العشوائي تحصل عندما وصف عشوائية () وظيفة فقط يعتمد على عدد المرات التي كنت قد ودعت وظيفة منذ وضع البذور. هذا هو, أول مرة تقوم فيها الكلمة عشوائية () بعد وضع البذور ستحصل على عدد particlar عشوائي (ولنسميه خ). الكلمة الثانية سيولد ثانية عشوائية رقم (دعنا نسمي هذا واحد ذ) وهلم جرا. ولكن إذا كنت من جديد مع دعوة seed_random الأصلي للبذور, تسلسل يبدأ فوق. هذا هو, القادم عشوائية () تجديد الدعوة الأصلي عشوائية عدد (خ في هذه الحالة). باستخدام مختلف البذور قيمة سيتسبب تسلسل مختلف تماما أن تتولد. ينظر في المثال التالي ::
Seed_random (1),صحيح) ؛ / / مجموعة قيمة البذور
أ = عشوائية () ؛
ب = عشوائية () ؛
ج = عشوائية () ؛
Seed_random (1),صحيح) ؛ / / إعادة البذور لنفس القيمة
= أنا عشوائية () ؛
ي = عشوائية () ؛
ك = عشوائية () ؛
Seed_random (2,صحيح) / / البذور الجديدة
ف = عشوائية () ؛
ص = عشوائية () ؛
ق = عشوائية () ؛
Seed_random (1),صحيح) ؛ / / اعادة البذور الأصلية
س = عشوائية () ؛
ص = عشوائية () ؛
ض = عشوائية () ؛
في هذه الحالة, A,B, (ج) وسوف تكون مختلفة كل الأرقام العشوائية. ومع ذلك, (أ) وسوف تكون واحدة, ب ي وسوف تكون واحدة, وج ك ، وسوف تكون واحدة لأن البذور تم إعادة (1 في هذه الحالة) ، ويبدأ التسلسل العشوائي فوق. Q,ص ق وسيتم جديدة تسلسل الأرقام العشوائية ، لأن البذور تم تغيير 2. تسلسل س,Y,ض ستكون نفسها بوصفها,B,ج وأنا,J,ك لأن البذور يتم تحديد إلى 1 ثانية. حتى نتمكن من العودة الى سلسلة من الأرقام العشوائية من خلال إعادة قيمة البذور التي ولدت هذه الأرقام.
كيف هذا يساعدنا? لدينا اقتراح عشوائية, في أي إطار ونحن بحاجة إلى معرفة العديد من الأمور حول هذا الجزء من الطلب الحالي: بداية الزمن, بدء موقف, نهاية الزمن, والموقف في نهاية. وسوف تكون جميع هذه الأرقام العشوائية التي تولد باستخدام البذور المختلفة قيمة كل جزء من الحركة. وسوف قاعدة البذور قيمة الجزء الذي نحن في الوقت الراهن. كل ما علينا فعله هو تعبير قد يكون قادرا على معرفة انه في هذا الجزء (الذي سيكون قادرا على معرفة قيمة البذور), وضع البذور, وتجديد تسلسل الأرقام العشوائية التي تتيح لنا البدء في الوقت, بدء موقف, نهاية الزمن, والموقف في نهاية القيم الحالية لقطاع.
حسنا -- دعنا نستعرض ما سيكون هدفنا لهذا التعبير. نريد مربع للانتقال بسلاسة من موقف واحد عشوائيا على الشاشة لآخر. ونريد أيضا أن الوقت اللازم لذلك أن تكون عشوائية (فلنقل بين .5 و 2 ثانية). هذا وسوف نفعل ذلك التعبير:
Seg_start_time = 0 ؛ / / الظروف الأولية
Seg_نهاية_time = 0 ؛
أنا = 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 (أولا 1,صحيح) ؛
س = عشوائية () ؛ / / هذا هو رمي بعيدا بين القيمة
= old_x عشوائية () * This_comp.العرض ؛
= old_y عشوائية () * This_comp.الطول ؛
سهولة (٪,[old_x,Old_y],[target_x,Target_y]) ؛
نسخ ولصق هذا التعبير الى موقف التعبير (أو مجرد فتح "الأساسية شركات + تعبير"). معاينة شركات. ستلاحظ أن الساحة الآن لطيف, مائع, حركة عشوائية في هذا الاتجاه ومدة.
في هذا التعبير, "" نحن جزء مضادة, التي سنقوم أيضا استخدام البذور قيمة لذلك الجزء. "tmin" و "tmax" تحديد نطاق ممكن عشوائية مرات طوال مدة كل جزء. في هذه الحالة, وهو الجزء الأخير بين .5 و 2 ثانية. "في حين" حلقة فيها التعبير عن الأرقام التي بها الامر في الجزء. وذلك من خلال الزيادة البذور وتراكم عشوائية الجزء مدد حتى تزيد قيمتها في الوقت الراهن هو التوصل الى. في هذه المرحلة تعرف بداية, نهاية, والوقت الحالي للشريحة الحالية لتتمكن من حساب النسبة المئوية لهذا الجزء الذي تكتمل. ويدعو العشوائي () وظيفة اثنين اخرين مرات للحصول على الهدف سين وصاد لتنسيق الموقف في نهاية هذا الجزء. الجزء التالي هو صعبة قليلا. العبارة لا تزال في حاجة الى معرفة موقف يبدأ هذا الجزء حتى يمكن حساب (على أساس النسبة المئوية الانتهاء) أن الوضع الحالي. منذ بداية الموقف هو نفس الموقف في نهاية الجزء السابق, نحن مجرد بذرة التناقص في العودة إلى بذرة الجزء السابق. ثم يدعو إلى التعبير عن العشوائية () للحصول على وظيفة في نهاية س و ص إحداثيات الجزء السابق. ستلاحظ أن هناك واحدة "بين رمي بعيدا" دعوة عشوائية () قبل السابقة س و ص القيم مصممون. ذلك لأن كل البذور, أول عشوائية () الكلمة دائما تستخدم في نهاية الوقت (الذي نعرفه) -- 2nd و3rd دعوات تستخدم لسين وصاد وينسق.
فتح "التعبير شركات". شركات هذا هو نفس السابق شركات عدا إضافة عبارات مماثلة لالتعشئة التعتيم والتناوب. غموض التعبير:
Seg_start_time = 0 ؛ / / الظروف الأولية
Seg_نهاية_time = 0 ؛
أنا = 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 (أولا 1,صحيح) ؛
س = عشوائية () ؛ / / هذا هو رمي بعيدا بين القيمة
= Old_شقاف عشوائية () * 100 ؛
سهولة (٪,Old_شقاف,Target_شقاف) ؛
وتناوب التعبير:
Seg_start_time = 0 ؛ / / الظروف الأولية
Seg_نهاية_time = 0 ؛
أنا = 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 (أولا 1,صحيح) ؛
س = عشوائية () ؛ / / هذا هو رمي بعيدا بين القيمة
= Old_rotation عشوائية () * 360 ؛
سهولة (٪,Old_rotation,Target_rotation) ؛
هذه العبارات هي مطابقة تقريبا لموقف واحد إلا أنه قد تم تعديلها لتوليد مجموعة من القيم المناسبة لالتعتيم والتناوب. معاينة شركات ونلاحظ أن الساحة الآن ، وتناوب عشوائية تتلاشى ، فضلا عن الحركة.
هنا يأتي الجزء الممتع. المزدوجة "الصلبة (1)" حفنة من مرة (أو مجرد فتح "شركات متعددة") وشركات معاينة. تذكر -- يمكنك القيام بذلك فعلا بسرعة باستخدام اختصار السيطرة + د) + د القيادة على MAC (. عند معاينة الآن هناك موجة من النشاط. الأرقام العشوائية لكل طبقة مختلفة على الرغم من عبارات هي نفسها تماما عن كل.

الآن الامور تزداد أكثر إثارة للاهتمام
فتح "متعة شركات" ، وذلك معاينة. لذلك شركات, أنا ازدواجية "الصلبة (1)" مرتين ، ثم حل محل كل من المواد الصلبة واحد من الملفات المصور. ثم تكرر طبقات كل واحدة من حفنة من الأوقات. يمكنك أن ترى أنه بمجرد أن يكون لديك انشاء عبارات, تكرار طبقات سرعان ما يضيف إلى درجة تعقيد شركات الخاصة بك.

فمن السهل إنشاء مجمع شركات بسرعة مع هذه التعابير
يمكنك التعبير عن تشريح لمعرفة كيفية عملها, أو يمكنك فقط نسخ ولصق الى بنفسك comps. ثلاثة أمثلة اعطيت (الموقف, شقاف, وتناوب) تعطيك فكرة جيدة عن كيفية التعبير عن تصميم غيرها من الممتلكات. وآمل أن تلهم هذه بعضكم ليتلاعب هذه الحقيقة وخلق شيء بارد!
# # Dan ebberts
لا تتردد في مناقشة هذا الأسلوب في After Effects منتدى هنا في creativecow.
|