🧩 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های دیگر