🧭 خلاصه (Summary)
Null CHOP بهعنوان یک جاینگهدار (Placeholder) استفاده میشود و هیچ تغییری در دادههای ورودی ایجاد نمیکند.
این اپراتور معمولاً برای Export کردن کانالها به پارامترها استفاده میشود، زیرا به شما اجازه میدهد بین چند CHOP مختلف آزمایش کنید بدون آنکه هر بار نیاز باشد اتصال Export را جدا و دوباره برقرار کنید.
همچنین Null CHOP گزینههایی دارد برای اینکه:
اجباراً نودهای پاییندست را Cook کند (یعنی باعث اجرای آنها در هر فریم شود)، یا برعکس،
در صورت ثابت ماندن ورودی، مانع Cook شدن نودهای پاییندست شود.
📘 نکته: این اپراتور خودش دادهای را تغییر نمیدهد، اما در ساختار شبکه CHOP، ابزار بسیار مهمی برای کنترل جریان و عملکرد سیستم محسوب میشود.
⚙️ پارامترها — صفحه Null
| پارامتر | توضیح |
|---|---|
| Cook Type (cooktype) ⊞ | نحوهی Cook شدن نودهای پاییندست وقتی خروجی Null تغییر میکند را تعیین میکند. |
| ▪ Automatic (auto) | نودهای پاییندست در حالت عادی و خودکار Cook میشوند. |
| ▪ Always (always) | این نود و نودهای بالادستِ “کثیف” (Dirty) در هر فریم Cook میشوند. نودهای پاییندست نیز هر زمان داده درخواست شود Cook خواهند شد. (برای خروجیهای بلادرنگ و کنترل کامل مفید است.) |
| ▪ Selective (selective) | اجازه میدهد مشخص کنید دقیقاً چه تغییری باعث Cook شدن نودهای پاییندست شود (از طریق گزینههای زیر). این روش برای بهینهسازی شبکه مفید است، مخصوصاً وقتی CHOPهای بالادست دادههای زمانمحور زیادی دارند ولی خروجی اغلب ثابت است. 🔹 مثال: یک Math CHOP که عدد در حال تغییر را رُند میکند به ۰ یا ۱. ⚠️ نکته: در حالت Selective، نودهای بالادست هر زمان داده تغییر کند Cook میشوند، حتی اگر پاییندست دادهای درخواست نکند. |
پارامترهای Selective:
| پارامتر | توضیح |
|---|---|
| Check Values (checkvalues) | اگر مقادیر CHOP تغییر کنند، دوباره Cook میشود. |
| Check Names (checknames) | اگر نام کانالها تغییر کند، دوباره Cook میشود. |
| Check Range (checkrange) | اگر بازه (Range) کانالها تغییر کند، دوباره Cook میشود. |
⚠️ نکته: نودهای پاییندست ممکن است به دلایل دیگر نیز Cook شوند (مثلاً هنگام مشاهدهی داده در پنجرهی شبکه یا ویرایش نودها).
⚙️ پارامترها — صفحه Common
| پارامتر | توضیح |
|---|---|
| Time Slice (timeslice) | فعالسازی این گزینه باعث میشود فقط دادههای بین Cook قبلی و فعلی پردازش شوند. |
| Scope (scope) | محدودهی کانالهایی که تحت تأثیر قرار میگیرند (بر اساس الگوی نامها). |
| Sample Rate Match (srselect) ⊞ | روش هماهنگی نرخ نمونهبرداری میان ورودیها: • First Input Rate – بر اساس ورودی اول • Maximum Rate – بیشترین نرخ • Minimum Rate – کمترین نرخ • Error If Rates Differ – خطا در صورت تفاوت نرخها |
| Export Method (exportmethod) ⊞ | روش Export دادهها از CHOP به پارامترها: • DAT Table by Index / by Name – از جدول DAT استفاده میکند • Channel Name is Path:Parameter – مسیر کامل پارامتر را مستقیماً از نام کانال استخراج میکند (مثلاً geo1/transform1:tx). |
| Export Root (autoexportroot) | مسیر ریشه برای تمام مسیرهای Export. |
| Export Table (exporttable) | جدول DAT که اطلاعات Export را نگه میدارد (در روشهای DAT Table). |
🔌 ورودیهای اپراتور
| ورودی | توضیح |
|---|---|
| Input 0 | CHOP ورودیای که داده را به Null میفرستد. (هیچ پردازشی روی داده انجام نمیشود، صرفاً عبور داده است.) |
📊 Info CHOP Channels
اطلاعات اضافی از طریق Info CHOP قابل مشاهده است.
Common CHOP Info Channels
| نام | توضیح |
|---|---|
| start | شروع بازه در نمونهها. |
| length | طول بازه (تعداد نمونهها). |
| sample_rate | نرخ نمونهبرداری (فریم بر ثانیه). |
| num_channels | تعداد کانالها. |
| time_slice | اگر Time Slice فعال باشد → مقدار ۱. |
| export_sernum | شمار دفعاتی که Export بهروزرسانی شده است. |
Common Operator Info Channels
| نام | توضیح |
|---|---|
| total_cooks | تعداد دفعاتی که اپراتور از زمان شروع پروژه Cook شده است. |
| cook_time | مدت زمان آخرین Cook (میلیثانیه). |
| cook_frame | شمارهی فریم آخرین Cook نسبت به تایملاین کامپوننت. |
| cook_abs_frame | شمارهی فریم مطلق آخرین Cook. |
| cook_start_time / cook_end_time | زمان شروع و پایان Cook در فریم جاری (ms). |
| cooked_this_frame | اگر در فریم جاری Cook شده باشد، مقدار ۱ میگیرد. |
| warnings / errors | تعداد هشدارها و خطاهای اپراتور. |
🎬 کاربردهای اصلی Null CHOP
Export مرکزی
بهعنوان نود رابط برای Export به پارامترها استفاده میشود. اگر ورودی را تغییر دهید، نیازی به تغییر مقصد Export نیست.بهینهسازی شبکه (Performance Control)
با استفاده از Cook Type میتوانید کنترل کنید که چه زمانی شبکه پاییندست پردازش شود، و از Cookهای غیرضروری جلوگیری کنید.مانیتورینگ یا ذخیرهی دادهی نهایی
برای ذخیرهی خروجی نهایی یک زنجیره از CHOPها بهصورت پایدار (مثل “Checkpoint”) استفاده میشود.جلوگیری از Cook بیهوده در Loopها
در شبکههایی که بازخورد (Feedback Loop) دارند، از Null برای توقف یا کنترل جریان Cook استفاده میشود.
🧠 نکته حرفهای (Pro Tip)
در پروژههای سنگین تاچدیزاینر، هر زنجیره CHOP را با یک Null CHOP در انتهای مسیر تمام کنید و فقط آن Null را Export کنید.
با این روش:
راحتتر میتوانید نودهای بالادست را جایگزین کنید.
در صورت خطا یا تغییر، نیازی به بازسازی مسیر Export ندارید.
Debug و پروفایل عملکرد سادهتر میشود.
