🧭 خلاصه (Summary)
Mouse Out CHOP موقعیت موس و وضعیت دکمههای آن را از داخل TouchDesigner کنترل میکند؛ یعنی این CHOP میتواند با استفاده از دادههای ورودی (کانالهای CHOP دیگر)، حرکت موس واقعی سیستم را شبیهسازی و هدایت کند.
کانالهای ورودی با نامهای tx و ty بهترتیب، مختصات افقی و عمودی موس را مشخص میکنند.
این مختصات در بازهی نرمالشدهی ۰ تا ۱ هستند:
tx = 0 → سمت چپ کل دسکتاپ
tx = 1 → سمت راست آخرین مانیتور
ty = 0 → پایین صفحه
ty = 1 → بالای صفحه
💡 اگر دسکتاپ روی دو مانیتور گسترده شده باشد، مقدار
tx = 1به انتهای مانیتور دوم اشاره میکند.
⚠️ هشدار مهم:
اگر کانالهای ورودی در هر فریم تغییر کنند (مثلاً از یک انیمیشن یا نویز گرفته شوند)، ممکن است کنترل موس واقعی از دست برود و فقط با کیبورد یا توقف پروژه (ESC / Alt+Tab / Ctrl+Break) بتوان دوباره کنترل را بازگرداند.
اما تا زمانی که مقادیر ورودی ثابت باشند، این CHOP کنترلی روی موس ندارد.
⚙️ پارامترها — صفحه Control
| پارامتر | توضیح |
|---|---|
| Position U (posu) | نام کانال ورودی که موقعیت افقی موس (U) را کنترل میکند. |
| Position V (posv) | نام کانال ورودی که موقعیت عمودی موس (V) را کنترل میکند. |
| Left Button (lbuttonname) | نام کانال ورودی که وضعیت دکمه چپ موس را کنترل میکند (0=رها، 1=فشرده). |
| Right Button (rbuttonname) | نام کانال ورودی که وضعیت دکمه راست موس را کنترل میکند. |
| Middle Button (mbuttonname) | نام کانال ورودی که وضعیت دکمه میانی موس را کنترل میکند. |
| Cook Every Frame (cookalways) | باعث میشود CHOP در هر فریم اجرا (cook) شود، حتی اگر تغییری در ورودی نباشد. |
⚙️ پارامترها — صفحه Common
| پارامتر | توضیح |
|---|---|
| Time Slice (timeslice) | فعالکردن این گزینه باعث میشود فقط دادههای بین دو cook متوالی (آخرین و فعلی) پردازش شوند. |
| Scope (scope) | محدودهٔ کانالهایی که تحت تأثیر قرار میگیرند را تعیین میکند (از الگوهای نامگذاری استفاده میکند). |
| Sample Rate Match (srselect) | ⊞ نحوهی مدیریت اختلاف نرخ نمونهبرداری بین ورودیها: • Resample At First Input’s Rate – براساس نرخ ورودی اول. • Resample At Maximum Rate – بیشترین نرخ. • Resample At Minimum Rate – کمترین نرخ. • Error If Rates Differ – در صورت تفاوت، خطا میدهد. |
| Export Method (exportmethod) | ⊞ تعیین روش اتصال خروجی CHOP به پارامترها: • DAT Table by Index / Name – استفاده از جدول DAT. • Channel Name is Path:Parameter – مسیر کامل پارامتر مانند geo1/transform1:tx. |
| Export Root (autoexportroot) | مسیر ریشهای که تمام خروجیهای Export نسبت به آن تنظیم میشوند. |
| Export Table (exporttable) | جدول DAT برای روشهای Export مبتنی بر DAT. |
🔌 ورودیها (Operator Inputs)
| ورودی | توضیح |
|---|---|
| Input 0 | CHOP ورودی شامل کانالهایی مانند tx, ty, lbutton, rbutton, mbutton برای کنترل موقعیت و دکمههای موس. |
📊 Info CHOP Channels
اطلاعات اضافی از طریق Info CHOP در دسترس است.
Common CHOP Info Channels
| نام | توضیح |
|---|---|
| start | آغاز بازهٔ داده در نمونهها. |
| length | تعداد نمونهها در CHOP. |
| 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 در همان فریم (میلیثانیه). |
| cooked_this_frame | اگر در فریم فعلی cook شده باشد مقدار ۱ میگیرد. |
| warnings / errors | تعداد هشدارها یا خطاهای اپراتور. |
🎬 کاربردها در پروژههای تعاملی
Mouse Out CHOP معمولاً برای شبیهسازی حرکت موس از داخل پروژه استفاده میشود؛ کاربردهای خاص آن شامل:
اتوماتیکسازی تعاملات کاربر:
در پروژههای نمایشی یا اینتراکتیو که نیاز است مکاننمای موس بهطور خودکار حرکت کند (مثلاً روی منوها یا نقاط خاص صحنه).کنترل از راه دور (Remote Control):
استفاده از دادههای شبکه یا OSC برای هدایت موس در سیستمهای دیگر.نصبهای چندنمایشی (Multi-Display Installations):
هماهنگسازی حرکات موس در سیستمهایی با چند مانیتور و ورودی تعاملی.
💡 نکته حرفهای:
برای جلوگیری از قفلشدن موس در هنگام آزمایش:
از Null CHOP ثابت بین منبع و Mouse Out CHOP استفاده کن؛
یا دکمهای برای Pause/Bypass Mouse Out CHOP در رابط طراحی کن.
