🧩 Resample SOP چیست؟

Resample SOP برای بازنمونه‌گیری (Resampling) منحنی‌ها و سطوح چندضلعی استفاده می‌شود.
به زبان ساده یعنی:
این نود یک منحنی یا مسیر را می‌گیرد و آن را به بخش‌هایی با طول‌های برابر تقسیم می‌کند.

📍 نتیجه:

  • اگر منحنی خیلی پیچیده یا دارای نقاط با فاصله‌های نامنظم باشد، Resample SOP آن را به بخش‌های مساوی تقسیم می‌کند.

  • این باعث می‌شود حرکت، انیمیشن یا deformation روی منحنی یکنواخت‌تر انجام شود.

توجه: Resample فقط روی Polygonها کار می‌کند. اگر ورودی NURBS یا Bezier باشد، ابتدا آن را به Polygon تبدیل می‌کند (با پارامتر Level of Detail).


⚙️ کاربرد اصلی

  • یکنواخت کردن طول Segmentها در منحنی‌ها

  • بهینه‌سازی یا سبک‌سازی منحنی‌ها برای شبیه‌سازی‌های فیزیکی (مثل Spring SOP)

  • ساخت مسیرهای هم‌فاصله برای انیمیشن ذرات، روبات‌ها یا خطوط لیزری


🔧 تنظیمات کلیدی

1. Group

می‌تونی تعیین کنی کدوم گروه از منحنی‌ها یا چندضلعی‌ها resample بشن (نه کل ورودی).


2. Level of Detail (LOD)

وقتی ورودی NURBS یا Bezier باشه، این پارامتر مشخص می‌کنه تبدیلش به polygon چقدر دقیق باشه.
LOD بالاتر = جزئیات بیشتر و دقت بیشتر، ولی سنگین‌تر.


3. Resample by Polygon Edge

وقتی فعال باشه، Resample به‌جای کل مسیر، هر لبه‌ی جداگانه (edge) رو به صورت مستقل بازنمونه‌گیری می‌کنه.
🔹 یعنی گوشه‌های تیز حفظ می‌شن و هر ضلع جداگانه تقسیم می‌شه.
🔹 برای اشکال زاویه‌دار (مثل مربع یا مثلث) بسیار مفید است.


4. Method (روش بازنمونه‌گیری)

این قسمت تعیین می‌کنه چطور فاصله‌ها اندازه‌گیری بشن:

حالتتوضیح
Even Length Segmentsتقسیم بر اساس فاصله واقعی منحنی (Arc Length). دقیق‌ترین حالت.
Even X / Y / Z Segmentsتقسیمات یکنواخت فقط در یکی از محورهای مختصات. بیشتر برای اشکال خطی استفاده می‌شود.

5. Measure (روش اندازه‌گیری منحنی)

گزینهتوضیح
Along Arcمنحنی را به طول‌های مساوی بر اساس مسیر واقعی تقسیم می‌کند (دقیق‌تر، کندتر).
Along Chordبین نقاط اندازه‌گیری مستقیم انجام می‌دهد (مثل خط راست بین نقاط) — سریع‌تر، ولی کمتر دقیق.

6. Segment Controls

دو حالت اصلی داره:

گزینهتوضیح
Maximum Segment Lengthطول هر بخش را به صورت دستی تعیین می‌کنی. اگر کوتاه‌تر باشد، منحنی نرم‌تر و جزئی‌تر می‌شود.
Maximum Segmentsتعداد بخش‌ها را تعیین می‌کنی. اگر 10 بنویسی، منحنی به 10 بخش تقسیم می‌شود.
Lengthمقدار دقیق طول هر قطعه در حالت “Arc” یا “Chord”.
Segmentsتعداد بخش‌ها در کل منحنی.
Maintain Last Vertexاطمینان می‌دهد که آخرین نقطه منحنی هم در خروجی باقی بماند، حتی اگر طول آخرین بخش از مقدار تنظیم‌شده کمتر باشد.

🧠 در عمل چه کار می‌کند؟

فرض کن یک منحنی داری که در بعضی قسمت‌ها نقاطش نزدیک به‌هم و در بعضی نقاط فاصله‌دار است.
اگر بخواهی روی آن:

  • ذره‌ها حرکت کنند،

  • یا نور/لیزر یکنواخت پخش شود،
    آن‌وقت فاصله‌های نامنظم باعث پرش می‌شود.

Resample SOP با تقسیم مجدد مسیر به طول‌های برابر، این پرش‌ها را حذف می‌کند.


💡 مثال کاربردی (مثل مثال Help TouchDesigner)

برای ساخت پرچم متحرک (flag) که نقاطش طول ثابت دارند:

  1. با Grid SOP چند خط افقی بساز.

  2. با Group SOP برخی نقاط را انتخاب کن.

  3. به آن Spring SOP بده تا در باد تکان بخورد.

  4. بعد از Spring، یک Resample SOP اضافه کن تا طول خطوط ثابت بماند.

  5. در نهایت Skin SOP بزن تا سطح پرچم ایجاد شود.

حالا وقتی Play بزنی، پرچم حرکت طبیعی و یکنواختی دارد چون Resample طول خطوط را کنترل کرده است.


📊 خروجی و Info CHOP

مثل سایر SOPها، Resample SOP اطلاعاتی از جمله:

  • تعداد نقاط (num_points)

  • تعداد primitives

  • زمان Cook و تعداد دفعات Cook
    را از طریق Info CHOP در اختیارت می‌گذارد.


🎯 خلاصه کاربردی

هدفابزار در Resample SOP
تقسیم منحنی به طول‌های مساویEven Length + Arc Measure
حفظ گوشه‌های چندضلعیResample by Polygon Edge
تنظیم دستی طول هر بخشMaximum Segment Length
ساده‌سازی منحنی‌هاLOD پایین‌تر
ساخت مسیرهای یکنواخت برای انیمیشناستفاده از خروجی Resample برای SOPهای دیگر