Blend Trees در یونیتی /درخت ادغام انیمیشن ها در یونیتی
منبع:gameover.blog.ir
مترجم:گیم آور دات بلاگ دات آی آر
بعضی مواقع می خواهیم دو یا چند حرکت شبیه را ادغام کنیم.شاید بهترین مثال،ادغام پیاده روی و دویدن کاراکتر باشد.یا به عنوان مثال بعدی،کج شدن کاراکتر به چپ یا راست در حین چرخیدن زمانیکه که کاراکتر در حال دویدن باشد.
تشخیص بین Transitionsو Blend Trees حائز اهمیت است. با وجود اینکه هردوی اینها برای ایجاد یک انیمیشن نرم و smooth می باشند،از آنها در انواع مختلف وضعیت ها استفاده می شود.
* Transition ها (خطوط انتقال)،برای سوئیچ بین یک انیمیشن و انیمیشن دیگر در یک میانگین زمانی مورد استفاده قرار می گیرند.این خطوط انتقال به عنوان بخشی از Animation State Machine محسوب می شوند.اگر transition سریع باشد انتقال از یک انیمیشن به یک انیمیشن کاملا متفاوت ،می تواند خوب باشد.
*Blend Tree ها برای ادغام multiple animation ها (ادغام چند انیمیشن همزمان) استفاده می شوند( با ترکیب بخش هایی از آنها با درجات مختلف). میزان همکاری انیمیشن ها برای تاثیر نهایی انیمیشن با استفاد از پارامتر blending کنترل می شود.این پارامتر تنها یکی از پارامترهای Animator Controller می باشد.برای ادغام موشن هایی که scene را می سازند موشن ها بهتر است زمانبندی و رفتار مشابهی داشته باشند تا کار طبیعی تر شود. Blend Tree ها(درختان ادغام) نوع مخصوصی از state در Animation State Machine هستند.(نکته: ماشین حالت همون پنجره انیماتور منظورشه که سوئیچ می کنه بین انیمیشن ها و شرط می ذاریم و این حرف ها)
استفاده از Blend Trees:
برای شروع کار با یک new Blend Tree باید مراحل زیر رو طی کنیم:
در یک فضای خالی از پنجره ی Animator Controller راست کلیک کنید و Create State->New blend tree رو انتخاب کنید.
(نکته
: شاید فکر کنید شکل blend tree کمی فرق کنه اما اینطوری نیست اونی که شما
توی سایت یونیتی دیدی بهش می گن Blend Tree Graph (گراف بلندر تری) که با
دوبار کلیک روی یکی از state ها باز می شه.
در سمت چپ فقط گره ریشه (root node) وجود داره و هیچ گره یا نود فرزندی(child node) هنوز بهش اضافه نکردیم.
در سمت راست root node رو با چند Animation Clip می بینید که به عنوان گره ی فرزند بهش اضافه کردیم.
برای اضافه کردن کلیپ های انیمیشن به درخت ادغام( blend tree ) می توانید blend tree را انتخاب و سپس روی آیکن بعلاوه(plus icon) در فیلد motionدر کادر خصوصیات(inspector) کلیک کنید.
قبل از افزودن هر موشن، یک Blend Node در inspector نمایان می شود.با استفاده از plus icon می توانید کلیپ های انیمیشن را یا blend tree های child (فرزند) را اضافه کنید.به طور جایگزین،می توانید animation clip ها یا child blend node ها را با راست کلیک روی blend tree و انتخاب از منوی context اضافه کنید.
وقتی یک درخت ادغام با استفاده از کلیپ های انیمیشن و پارامترهای ورودی تنظیم شد،inspector در هنگام تغییر مقدار پارامتر، یک تجسم گرافیکی یا ویژوال( graphical visualization) از چگونگی ترکیب انیمیشن ها به ما نشان می دهد.(وقتی اسلایدر یا نوار لغزان را drag می کنید فلش های جهت دار از ریشه ی درخت سایه یا shading خودشان را تغییر می دهند تا کلیپ انیمیشن غالب را نشان دهند یا برجسته کنند)
در تصویر فوق یک 2D Blendtree را در inspector مشاهده می کنید که با 5 انیمیشن تنظیم شده است.
شما می توانید هر گره(node) در Blend Tree graph را انتخاب کرده و آن را در inspector بررسی کنید.اگر node انتخاب شده یک Animation Clip باشد،Inspector برای Animation Clip نمایان می شود.اگر انیمیشن از یک مدل import شود ، setting ها read-only هستند. اگر node یک Blend Node باشد Inspector برای Blend Node ها نمایان خواهد شد.
شما می توانید blending یک بعدی(1D) یا دو بعدی(2D) را از منوی Blend Type انتخاب کنید. فرق بین آنها در بخش های مربوط وجود دارد.
برای اطلاعات بیشتر به این لینک ها مراجعه شود:
http://docs.unity3d.com/Manual/BlendTree-1DBlending.html
http://docs.unity3d.com/Manual/BlendTree-2DBlending.html
Blend Trees and Root Motion
درخت ادغام و حرکت ریشه ایادغام بین انیمیشن ها به وسیله ی خطوط ارتباط نمایش داده می شود.(برای مثال میانگین هر انیمیشن میانگینی است که انیمیشن های مجزا مجزا شده ای هست که با استفاده از پارامتر blending موزون یا weight می شود.) به هر حال شما باید توجه کنید که root motion به همان صورت الحاق نمی شود.برای اطلاعات بیشتر صفحه ی root motion را مطالعه بفرمایید( برای اطلاعات بیشتر در مورد اینکه چه تاثیری روی کاراکتر شما می گذارد):
http://docs.unity3d.com/Manual/RootMotion.html
نکته مترجم : root motion یا حرکت ریشه ای یک چیز مثل همون پارامتر apply root motion هست که وقتی به یک کاراکتر انیمیشن یا انیماتور می دادیم باید گزینه رو غیر فعال می کردیم تا کاراکتر توی هوا معلق نشه یا نیروهای دیگه روی اون تاثیر بد نذارند. موفق باشید. گیم آور