روش‌های تولید و اعمال Noise در TouchDesigner

در TouchDesigner روش‌های مختلفی برای تولید و استفاده از Noise وجود دارد که هرکدام مزایا و کاربردهای خاص خودشان را دارند.
نویز در اصل یک تابع ریاضی است که بر اساس یک مقدار اولیه به نام Seed، خروجی‌های شبه‌تصادفی اما تکرارپذیر تولید می‌کند؛ یعنی روی سیستم‌های مختلف، نتیجه یکسان خواهد بود.

در ادامه، سه روش اصلی و پرکاربرد برای ساخت و اعمال نویز در TouchDesigner را بررسی می‌کنیم؛ از ساده‌ترین تا پیشرفته‌ترین.


۱. استفاده از اپراتورهای Noise CHOP و Noise TOP

(Sampling-based Noise)

این ساده‌ترین و در دسترس‌ترین روش است. در این حالت، مقادیر نویز به‌صورت مستقیم برای کنترل پارامترهایی مثل موقعیت (Translation)، چرخش یا مقیاس در سیستم‌هایی مانند Instancing استفاده می‌شوند.

انواع رایج:

  • Noise CHOP
    مناسب برای داده‌های یک‌بعدی، مثل یک لیست از نقاط یا کنترل پارامترهای زمانی.

  • Noise TOP
    مناسب برای داده‌های دوبعدی مانند Gridها یا بافت‌ها. در این روش، هر پیکسل از بافت نویز به یک نقطه از هندسه متناظر می‌شود.

مزایا:

  • یادگیری سریع

  • مناسب برای تست، پروتوتایپ و پروژه‌های سبک

محدودیت‌ها:

  • با افزایش تعداد نقاط، فشار روی CPU (در CHOPها) افزایش پیدا می‌کند

  • کنترل محدود روی جزئیات پیچیده هندسی


۲. جابجایی رأس‌ها با استفاده از بافت

(Vertex Displacement via Texture Samplers)

در این روش، از یک Noise TOP به‌عنوان Sampler در کدنویسی GLSL (Vertex Shader) استفاده می‌شود تا موقعیت رأس‌های یک مش (Mesh) تغییر کند.

ویژگی‌ها:

  • مناسب برای مش‌های بسیار متراکم (حتی میلیون‌ها رأس)

  • عملکرد بسیار بالا و قابل اجرا در ۶۰ فریم بر ثانیه

  • پردازش کاملاً روی GPU

محدودیت مهم:

  • این روش به مختصات UV وابسته است

  • در لبه‌های مدل ممکن است درز (Seam) ایجاد شود

  • دقت نویز به رزولوشن بافت وابسته است


۳. نویز رویه‌ای مبتنی بر ریاضیات

(Procedural Mathematical Noise)

پیشرفته‌ترین و حرفه‌ای‌ترین روش. در این حالت، به‌جای خواندن نویز از یک بافت، خود تابع نویز (مثل TDsimplexNoise) مستقیماً داخل Vertex Shader نوشته می‌شود.

مزایا:

  • کاملاً رویه‌ای (Procedural)

  • بدون نیاز به Texture یا Sampler

  • امکان استفاده از بعد چهارم (زمان / W) برای انیمیشن نرم و بدون تکرار

  • بدون Seam و محدودیت UV

چالش‌ها:

  • نیاز به دانش GLSL و ریاضیات

  • پیاده‌سازی پیچیده‌تر نسبت به روش‌های قبلی

جدول مقایسه روش‌های ساخت و اعمال نویز:

ملاحظات فنی بهترین کاربرد کارایی و سرعت میزان پیچیدگی روش
محدود به ظرفیت پردازش مرکزی در بخش چوپ نمونه‌سازی ساده و سریع متوسط (در تعداد بسیار بالا سنگین می‌شود) پایین اپراتورهای معمولی
وابسته به مختصات بافت و دقت بیتی تغییر شکل هندسه‌های متراکم بسیار بالا (مناسب برای مش‌های میلیونی) متوسط جابجایی با بافت
نیاز به دانش کدنویسی و محاسبات ریاضی جلوه‌های پیچیده ارگانیک و بدون درز عالی و بهینه بالا ریاضیات رویه‌ای

نکته مهم درباره نورپردازی و نرمال‌ها

در روش‌های Vertex Displacement، معمولاً فقط موقعیت رأس‌ها تغییر می‌کند، اما نرمال‌ها ثابت باقی می‌مانند.
نتیجه این اتفاق، تصویری تخت و غیرارگانیک در نورپردازی است.

راه‌حل:

برای رسیدن به سایه‌زنی طبیعی و زنده، لازم است:

  • محاسبه مجدد نرمال‌ها (Normal Recalculation)

  • این محاسبات مستقیماً در Shader انجام شود

بدون این مرحله، حتی پیچیده‌ترین نویزها هم از نظر بصری «بی‌جان» به نظر می‌رسند.