ترجمه کامل متن:
Timer CHOP
خلاصه (Summary)
Timer CHOP یک موتور برای اجرای فرآیندهای زمانبندی شده است. این CHOP کانالهایی مانند کسریهای زمان (fraction)، شمارندهها، پالسها و وضعیت تایمر را خروجی میدهد و همچنین توابع پایتون (Callbacks) را هنگام وقوع رویدادهای مختلف زمانی فراخوانی میکند.
کاربردها:
-
فعال کردن چندین Cue زمانبندی شده
-
اجرای Playlistها
-
اجرای Timelineها
-
ایجاد State Machine
-
کنترل کامپوننتهای انیمیشن از پیش ساخته شده در صحنههای سهبعدی
برای مثال میتوانید از بخش Help -> Operator Snippets نمونههای مختلف را ببینید.
تایمر میتواند بر اساس ثانیه، فریم یا نمونهها تنظیم شود، یا نامحدود باشد، و با پارامتر Start یا ورودی دوم CHOP فعال شود. Timer CHOP کانالها را به صورت ثانیه، فریم، نمونه، کسری و وضعیت روشن/خاموش خروجی میدهد، شامل یک کانال done که وقتی تایمر کامل شود روشن میشود. وقتی تایمر به حالتهای مشخصی مانند پایان چرخهها یا پایان زمان برسد، Callbacks پایتون فراخوانی میشوند تا رفتار تایمر سفارشیسازی شود.
تایمر توسط رویدادها (مثلاً پالس پارامترها یا ورودیها) فعال میشود، زمان را شمارش میکند، و وضعیت خود را تغییر میدهد. با استفاده از توابع Callback پایتون میتوانید:
-
رویدادها را به نودهای دیگر ارسال کنید
-
پارامترها را تنظیم کنید
-
مقادیر DATها، CHOPها و Storage را بخوانید/نوشت کنید
-
تایمر را دوباره راهاندازی کنید
-
یا نودهای دیگر را فعال کنید
بنابراین Timer CHOP میتواند به عنوان یک ماشین حالت (State Machine) عمل کند.
دارای کنترل Play/Pause و سرعت برای کم یا زیاد کردن سرعت تایمر است.
تایمر میتواند به طور نامحدود چرخه بزند و سپس میتوان آن را برای پایان فوری یا پایان چرخه جاری سیگنال داد.
پیشنهاد: نمونههای OP Snippets برای Timer CHOP را ببینید. توضیحات کانالها در بخش Initialize -> Start موجود است.
چند بخش Timer (Multiple Timer Segments)
یک Timer CHOP میتواند شامل چند تایمر باشد. با وصل کردن یک Table DAT میتوانید برای هر ردیف یک تایمر تعریف کنید.
-
Serial Timers: اجرای بخشها یکی پس از دیگری
-
Parallel Timers: همه تایمرها همزمان اجرا میشوند، هر کدام با زمان شروع و طول مشخص و کانالهای خروجی مخصوص خود
Timer CHOP میتواند Locked به Timeline باشد (حالت قطعی) یا Sequential Mode اجرا شود (آزادتر). وقتی مستقل از Timeline اجرا شود، میتوانید:
-
جلو بروید
-
چرخهها را شکسته یا متوقف کنید
-
Pause کنید
-
به موقعیت یا Timecode خاص بروید
-
سرعت را به صورت داینامیک تنظیم کنید
میتوانید یک Info DAT به Timer CHOP وصل کنید تا Timecodeها را ببینید، یا از اعضای .timecode استفاده کنید.
میتوان متن سفارشی و کانالهای انیمیشن سفارشی برای هر بخش ایجاد کرد.
برای حلقه زدن کل Timer CHOP بعد از آخرین بخش، گزینه On Done -> Re-Start را فعال کنید.
نکته: وقتی Start را فشار میدهید، کانالهای تایمر در Initialize صفر هستند (مثلاً timer_frames = 0). در فریمی که Start فشار داده میشود، کانال running از ۰ به ۱ میرود و همه کانالهای شمارنده تایمر یک فریم جلو میروند. اگر میخواهید تایمر تا فریم بعدی در ۰ باقی بماند، پارامتر Run Value را روی Zero قرار دهید.
زنجیرهسازی تایمرها (Chaining Timers)
Timer CHOPها میتوانند به صورت زنجیرهای اجرا شوند: وقتی یکی تمام شود، بعدی شروع شود.
-
همه Timerها باید با هم Initialize شوند
-
کانال ready_pulse یک Timer به پارامتر Initialize تایمر بعدی صادر شود
-
خروجی کانال done_pulse یک Timer به ورودی Start یا پارامتر Start تایمر بعدی وصل شود
-
با Start تایمر اول، زنجیره فعال میشود
-
میتوان با Loop و Logic، ماشین حالت ایجاد کرد
Callbacks
Callbacks در لحظات مختلف تایمر فراخوانی میشوند:
-
onInitialize() – وقتی Initialize پالس شود، اجرا میشود. برای آمادهسازی قبل از شروع تایمر. پایان Initialize تایمر به حالت ready میرود.
-
onStart() – وقتی Start پالس شود، تایمر وارد حالت running میشود.
-
onTimerActive() – هر فریم که تایمر در حال اجرا باشد و Play روشن باشد یا Delay نداشته باشد.
-
onCycleStart() – وقتی تایمر روی چرخه تنظیم شده باشد، اجرا میشود.
-
onCycleEndAlert() – قبل از پایان چرخه یا بخش، برای آمادهسازی چرخه بعدی یا بخش بعدی.
-
onSegmentEnter() / onSegmentExit() – وقتی تایمر با Segments DAT مدیریت شود. آرگومان
segmentشامل اطلاعات مفید و ستونهای سفارشی است. -
onDone() – وقتی تایمر به پایان رسید، فراخوانی میشود.
میتوان تایمر را با .masterSeconds در onInitialize() روی زمان مشخصی تنظیم کرد.
پارامترها – صفحه Timer
-
Active (active) – تعیین زمانی که Timer Cook شود: Never / Always / While Running / While Playing
-
Time Control (timecontrol) – Sequential یا Locked to Timeline
-
Defer Par Changes (deferpars) – تغییر پارامترها را تا Initialize بعدی به تعویق میاندازد
-
Initialize (initialize) – پالس برای آمادهسازی تایمر، صفر کردن شمارندهها، اجرای onInitialize()
-
Start (start) – پالس برای شروع شمارش تایمر
-
Length Type (lengthtype) – تعریف نوع طول تایمر
-
Length (length) – طول تایمر بر حسب ثانیه، فریم یا نمونه
-
Delay (delay) – تاخیر قبل از شروع شمارش پس از Start
-
Run Values (runvalues) – تعیین مقادیر کانالها در لحظه شروع
-
Play (play) – Pause / Play تایمر
-
Speed (speed) – تغییر سرعت تایمر
-
Cue (cue) / Cue Point (cuepoint) – توقف تایمر در نقطه Cue
-
Cycle (cycle) – فعالسازی حلقه زدن تایمر
-
Cycle Limit (cyclelimit) – محدودیت تعداد چرخهها
-
Maximum Cycles (maxcycles) – حداکثر تعداد چرخهها
-
Cycle End Alert (cycleendalert) – قبل از پایان چرخه یا بخش، onCycleEndAlert() فراخوانی شود
-
Exit Segment at End of Cycle (exitendcycle) – خروج از بخش/چرخه در پایان چرخه جاری
-
Go to End of Cycle (gotoendcycle) – خروج فوری از چرخه/بخش
-
Go to Done (gotodone) – رفتن فوری به وضعیت Done
-
On Done (ondone) – تعیین رفتار پس از پایان تایمر
-
Callbacks DAT (callbacks) – مسیر DAT حاوی توابع Callback
-
Length Units / Delay Units / Cue Units / Notify Units – واحدهای اندازهگیری (Samples, Frames, Seconds, Fraction)
پارامترها – صفحه Segments
-
میتوان چندین تایمر (Segment) در یک Timer CHOP تعریف کرد
-
Segments DAT (segdat) – هر ردیف یک تایمر، شامل ستونهایی مثل: delay, begin, length, cycle, cyclelimit, maxcycles, cycleendalert
-
Segment Method (segmethod) – Serial یا Parallel
-
Segment Units (segunits) – واحد زمان (ثانیه، فریم، نمونه)
-
Segments End Time (segsendtime) – نحوه محاسبه زمان پایان
-
Columns to Custom Channels / Info DAT – خروجی ستونهای اضافی به کانال یا Info DAT
-
Go to Previous/Next Segment – پرش به بخش قبلی یا بعدی
پارامترها – صفحه Sub Range
-
محدود کردن تایمر به زیرمجموعهای از طول کامل
-
Sub Start / Sub End – شروع و پایان زیرمجموعه
-
Sub End Action – رفتار در پایان زیرمجموعه: Loop یا Pause
-
واحدها: Samples, Frames, Seconds
پارامترها – صفحه Outputs
-
کانالهای مختلف شامل:
-
timer_fraction, timer_seconds, timer_frames, timer_samples, timer_active, timer_pulse
-
delay_fraction, delay_count
-
initializing, ready, ready_pulse, running, done, done_pulse
-
cycles, cycle_pulse, cycle_plus_fraction, segment, segment_pulse, segment_plus_fraction, length
-
cumulative_count, playing_count, running_count, master_count
-
پارامترها – صفحه External
-
کنترل نقطه فعلی تایمر با CHOP یا Timecode خارجی
-
تعیین واحدها و Offsetها
-
مسیر به CHOP/DAT/Timecode Object خارجی
پارامترها – صفحه Common
-
Time Slice – فعالسازی Time Slice
-
Scope – تعیین کانالهای تحت تأثیر
-
Sample Rate Match – مدیریت نرخ نمونه متفاوت ورودیها
-
Export Method / Root / Table – تنظیم Export کانالها
ورودیهای Operator
-
Input 0
-
Input 1
Info CHOP Channels
Specific Timer CHOP Info Channels:
-
frames_timer, frames_segment, frames_cumulative, frames_running
Common CHOP Info Channels:
-
start, length, sample_rate, num_channels, time_slice, export_sernum
Common Operator Info Channels:
-
total_cooks, cook_time, cook_frame, cook_abs_frame, cook_start_time, cook_end_time, cooked_this_frame, warnings, errors
