UnityChan(Channel)
402 subscribers
1.79K photos
62 videos
13 files
41 links
کانال آموزش و نکات UnityChan

گروه یونیتی https://t.me/UnityChan
Download Telegram
Edit Driver

منو : Context menu ‣ Copy Driver

درایورها را می توان از طریق منوی زمینه کپی و جایگذاری کرد. هنگام اضافه کردن درایورهایی با تنظیمات یکسان، این می تواند در زمان تغییر تنظیمات صرفه جویی کند.
Copy As New Driver

منو : Context menu ‣ Copy As New Driver

درایوری که مقدار ویژگی را روی مقدار یک ویژگی متفاوت تنظیم می‌کند، می‌تواند به سرعت با استفاده از گزینه Copy As New Driver منوی زمینه ویژگی ورودی ایجاد شود، و سپس نتیجه را روی ویژگی خروجی از طریق Paste Driver قرار دهید.

همچنین می توان متغیر درایور جدید را با استفاده از دکمه Paste Driver Variables در پنل ویرایشگر به درایور موجود اضافه کرد.
Removing Drivers:

منو : Context menu ‣ Delete Driver(s)

میانبر : Ctrl-Alt-D

درایور(های) مرتبط با ویژگی را حذف می کند، چه برای یک ویژگی یا کانال فرعی انتخاب شده، یا همه اجزای یک بردار
Drivers Panel

منو : Sidebar region ‣ Drivers

میانبر » N

دوم

منو : Context menu ‣ Edit Driver

میانبر : Ctrl-D

این پنل در نوار کناری ویرایشگر درایورها یا هنگام افزودن درایور به ویژگی به صورت پاپاور قابل مشاهده است. این ویژگی مشخصه ای را نشان می دهد که در حال رانندگی است، به دنبال آن یک سری تنظیمات که نحوه عملکرد درایور را مشخص می کند

Type

توابع داخلی (میانگین، مجموع، حداقل و حداکثر) : ژگی هدایت شده دارای مقدار میانگین، مجموع، کمترین یا بالاترین (به ترتیب) مقادیر متغیرهای راننده ارجاع شده خواهد بود. اگر فقط یک متغیر درایور وجود داشته باشد، این توابع همان نتیجه را به همراه خواهند داشت.

سفارشی (Scripted Expression). : یک عبارت پایتون دلخواه که می تواند با نام به متغیرهای درایور اشاره کند
UnityChan(Channel)
(Scripted Expression
Expressions

یک فیلد متنی که در آن می توانید یک عبارت پایتون دلخواه را وارد کنید که به متغیرهای درایور با نام آنها اشاره می کند.

این عبارت به مجموعه‌ای از ثابت‌های استاندارد و توابع ریاضی از math، bl_math و سایر ماژول‌های ارائه شده در Driver Namespace دسترسی دارد. برای مثال اضافه کردن یک تابع سفارشی به فضای نام، به مثال فضای نام راننده مراجعه کنید

به دلایل عملکرد بهتر است تا حد امکان از زیر مجموعه Simple Expressions استفاده کنید.

Use Self

اگر این گزینه فعال باشد، متغیر self می تواند برای درایورها استفاده شود تا به داده های خود ارجاع دهند. برای اجسام و استخوان ها مفید است تا از ایجاد متغیر درایور که به سمت خود اشاره می کند اجتناب شود.

مثال: self.location.x اعمال شده بر روی خاصیت چرخش Y همان جسم باعث می‌شود که شی در هنگام حرکت غلت بخورد.

توجه داشته باشید که وابستگی‌های ویژگی‌هایی که از طریق خود دسترسی دارند ممکن است به طور کامل ردیابی نشوند.
UnityChan(Channel)
Expressions یک فیلد متنی که در آن می توانید یک عبارت پایتون دلخواه را وارد کنید که به متغیرهای درایور با نام آنها اشاره می کند. این عبارت به مجموعه‌ای از ثابت‌های استاندارد و توابع ریاضی از math، bl_math و سایر ماژول‌های ارائه شده در Driver Namespace دسترسی…
عبارات ساده

Blender می تواند زیرمجموعه مفیدی از عبارات درایور پایتون را مستقیماً ارزیابی کند که به طور قابل توجهی عملکرد را به خصوص در سیستم های چند هسته ای بهبود می بخشد. برای استفاده از این، عبارت راننده فقط باید از ویژگی های زیر استفاده کند:

نام های متغیر : فقط از کاراکترهای ASCII استفاده کنید.

تحت اللفظی : ممیز شناور و عدد صحیح اعشاری.

جهانی ها : frame

ثابت ها : pi, True, False

اپراتورها : +, -, *, /, ==, !=, <, <=, >, >=, and, or, not .اپراتور شرطی/ سه تایی اگر

توابع استاندارد : min, max, radians, degrees, abs, fabs, floor, ceil, trunc, round, int, sin, cos, tan, asin, acos, atan, atan2, exp, log, sqrt, pow, fmod

توابع ارائه شده از بلندر : lerp, clamp, smoothstep

عبارات ساده حتی زمانی که اجرای اسکریپت پایتون غیرفعال است ارزیابی می شوند.

هنگامی که عبارتی خارج از این زیرمجموعه استفاده می شود، Blender یک هشدار "Slow Python" را نمایش می دهد. با این حال، تا زمانی که اکثر درایورها از عبارات ساده استفاده می کنند، استفاده از یک عبارت پیچیده در تعداد کمی از آن ها مشکلی ندارد.
عبارت نویسی

این یک راه سریع برای اضافه کردن درایورها با عبارت اسکریپت شده است. ابتدا روی خاصیتی که می خواهید درایور به آن اضافه کنید کلیک کنید، سپس یک هش # و یک عبارت اسکریپت شده را تایپ کنید.

چند نمونه:

#frame

#frame / 20.0

#sin(frame)

#cos(frame)
1
UnityChan(Channel)
Drivers Panel منو : Sidebar region ‣ Drivers میانبر » N دوم منو : Context menu ‣ Edit Driver میانبر : Ctrl-D این پنل در نوار کناری ویرایشگر درایورها یا هنگام افزودن درایور به ویژگی به صورت پاپاور قابل مشاهده است. این ویژگی مشخصه ای را نشان می دهد که…
Driver Value : نتیجه فعلی راه اندازی درایور. برای اهداف اشکال زدایی مفید است

Variables : نیاز به توضیح بیشتر

Update Dependencies : به‌روزرسانی وابستگی‌های Driver Value را اجباری می‌کند.

Show in Drivers Editor : ویرایشگر Drivers کاملاً برجسته را باز می کند. این دکمه فقط در نسخه پاپاور پنل Drivers ظاهر می شود.
UnityChan(Channel)
Variables
متغیرهای درایور

متغیرها ارجاعاتی به ویژگی ها، کانال های تبدیل یا نتیجه مقایسه بین تبدیل دو شی هستند.

برای اینکه وابستگی ها به درستی ردیابی شوند، درایورها باید از طریق متغیرهای درایور، به جای ارجاع مستقیم در عبارت Python، به داده های شی دسترسی داشته باشند.

Add Input Variable : یک متغیر Driver جدید اضافه می کند.

Copy/Paste Variables : لیست متغیرهای فعلی را کپی می کند تا بتوان آن را در لیست متغیرهای راننده دیگری جایگذاری کرد

Name : نام برای استفاده در عبارات اسکریپت. نام باید با یک حرف شروع شود و فقط شامل حروف، اعداد یا زیرخط باشد.

Variable Type : نوع متغیر مورد استفاده
Single Property : مقدار یک ویژگی RNA را که توسط یک مرجع بلوک داده و یک رشته مسیر مشخص شده است، بازیابی می کند.

در مورد ویژگی های تبدیل، این مقدار دقیق ویژگی UI را برمی گرداند، در حالی که Transform Channel در صورت نیاز، والد و/یا محدودیت ها را در نظر می گیرد.

ID Type : نوع بلوک ID. به عنوان مثال: کلید، تصویر، شی، ماده.

ID : شناسه از نوع ID-block. به عنوان مثال: "Material.001"

RNA Path : نام RNA ویژگی، بر اساس زیرمجموعه ای از نحو دسترسی ویژگی پایتون. به عنوان مثال: location.x یا location[0] برای مقدار کانال انیمیشن مکان X (قبل از والدین یا محدودیت‌ها)، یا ["prop_name"] برای یک ویژگی سفارشی.

Fallback : در صورت فعال بودن، به جای ایجاد خطا در ارزیابی درایور، امکان تعیین یک مقدار بازگشتی را برای استفاده به عنوان مقدار متغیر در صورتی که مسیر RNA قابل حل نباشد، می دهد.
Transform Channel

مقدار یک کانال Transform را از یک جسم یا استخوان بازیابی می کند.

ID : شناسه شی به عنوان مثال: مکعب، آرماتور، دوربین.

Bone : برای آرماتورها، نام استخوان آرماتور. به عنوان مثال: "Bone"، "Bone.002"، "Arm.r".

Type : به عنوان مثال، X Location، X Rotation، X Scale.

Mode (Rotation) : برای کانال‌های چرخش، نوع داده‌های چرخشی مورد استفاده، از جمله دستورات مختلف اویلر صریح را مشخص می‌کند. استفاده از دستور اویلر هدف به طور پیش فرض. حالت‌های کانال چرخش را ببینید.

Space : فضای جهانی، فضای تبدیل، فضای محلی.
تفاوت چرخشی

مقدار اختلاف چرخشی بین دو جسم یا استخوان را بر حسب رادیان ارائه می کند.

Bone : برای آرماتورها، نام استخوان آرماتور. به عنوان مثال: "Bone"، "Bone.002"، "Arm.r".
فاصله

مقدار فاصله بین دو جسم یا استخوان را ارائه می دهد.

Bone : برای آرماتورها، نام استخوان آرماتور. به عنوان مثال: "Bone"، "Bone.002"، "Arm.r".

Space : World Space, Transform Space, Local Space.
ویژگی زمینه

مقدار خاصیتی را ارائه می دهد که به طور ضمنی به یک صحنه یا یک لایه دید از سیستم انیمیشن ارزیابی فعلی اشاره دارد. این یک مرجع ضعیف است که منجر به پیوند صحنه یا لایه نمایشی که از درایور ارجاع داده شده است، هنگام پیوند داده های انیمیشن نمی شود.

مثال زمانی که چنین ویژگی هایی وارد بازی می شوند، اشاره به تغییر شکل دوربین فعال است. این امکان وجود دارد که یک درایور را در یک فایل کاراکتر تنظیم کنید، و زمانی که کاراکتر به یک مجموعه مرتبط است، راننده را مجبور به استفاده از دوربین تنظیم کنید.

Context : Active Scene, Active View Layer.

RNA Path : نام RNA ویژگی، بر اساس زیرمجموعه ای از نحو دسترسی ویژگی پایتون. به عنوان مثال: camera.location.x یا camera.location[0] برای مقدار کانال انیمیشن مکان دوربین X (قبل از والدین یا محدودیت ها)، یا ["prop_name"] برای یک ویژگی سفارشی

Fallback : اگر فعال باشد، به جای ایجاد خطا در ارزیابی درایور، امکان تعیین یک مقدار بازگشتی را برای استفاده به عنوان مقدار متغیر در صورتی که مسیر RNA قابل حل نباشد، می دهد.
Transform Driver

یک ویژگی را با تبدیل یک شی کنترل کنید. در این مثال، چرخش Y شی 2 توسط موقعیت X شی 1 هدایت می شود. از یک راه اندازی ساده با دو شی شروع می شود:

از طریق منوی زمینه یا با Ctrl-D یک درایور به ویژگی Rotation Y شی دوم اضافه کنید.
ویرایشگر درایورها را باز کنید و ویژگی Y Euler Rotation را در ناحیه کانال ها انتخاب کنید

منطقه Sidebar را باز کرده و تب Drivers را انتخاب کنید

درایور را طوری پیکربندی کنید که مقدار میانگین یک کانال تبدیل اولین شی باشد

حرکت جسم اول را آزمایش کنید و متوجه شوید که چگونه بر چرخش Y شی دوم تأثیر می گذارد
اسکریپت بیان - مدار یک نقطه

با یک عبارت Scripted سفارشی، موقعیت یک شی را به دور یک نقطه بچرخانید. موقع تمیز کردن جدول زمانی، موقعیت شی تغییر خواهد کرد. با استفاده از مثلثات می توان حرکت دایره ای را به صورت دو بعدی با استفاده از توابع سینوسی و کسینوس تعریف کرد.در این مثال، فریم فعلی به عنوان متغیری که حرکت را القا می کند استفاده می شود. frame یک عبارت ساده است که با bpy.context.scene.frame_current مطابقت دارد.

یک درایور به ویژگی X Location اضافه کنید.

نوع درایور را روی Scripted Expression تنظیم کنید.

عبارت 0 + (sin(frame / 8) * 4) را اضافه کنید، جایی که:

frame/8 : فریم فعلی انیمیشن است که بر 8 تقسیم می شود تا سرعت مدار کاهش یابد

(sin( )*4) : حاصل sin(frame/8) را در 4 برای دایره بزرگتر ضرب می کند.

0 + : برای کنترل افست به نقطه مرکز مدار استفاده می شود.

یک درایور به ویژگی Y Location با عبارت 0 + اضافه کنید (cos(frame / 8) * 4)

جدول زمانی را پاک کنید تا اثر را ببینید. برای کنترل اندازه و مرکز مدار، متغیرها را آزمایش کنید
تابع سفارشی - مقدار مربع

یک تابع سفارشی ایجاد کنید تا مربع یک مقدار (یعنی value2) را بدست آورید. افزودن تابع به فضای نام درایور امکان استفاده از عبارات درایور را فراهم می کند. فضای نام درایور فهرستی از توابع داخلی برای استفاده در عبارات درایور و همچنین ثابت هایی مانند π و e دارد. این موارد را می توان از طریق کنسول پایتون بررسی کرد:

bpy.app.driver_namespace[' <tab>
acos']
acosh']
asin']
asinh']
atan']
...

برای افزودن یک تابع جدید به فضای نام درایور، خود تابع باید پیاده سازی شود و سپس به bpy.app.driver_namespace اضافه شود.
بخش کد نویسی

موارد زیر را به ویرایشگر متن داخل Blender اضافه کنید و Run Script را فشار دهید

                 

import bpy

def square(val):
"""Returns the square of the given value"""
return val * val

# Add function to driver_namespace.
bpy.app.driver_namespace['square'] = square



یک درایور با یک عبارت Scripted مانند مربع (فریم) اضافه کنید.

نمونه های تابع سفارشی بیشتری در قالب های ویرایشگر متن Blender ‣ Python ‣ درایور توابع موجود است. از آنجایی که Simple Expressions نمی تواند به توابع سفارشی دسترسی داشته باشد، استفاده از آنها فقط برای محاسبات پیچیده منطقی است.
مشاهده جستجوی ویژگی لایه

Node Attribute Material در حالت View Layer به طور خودکار ویژگی ویژگی را در چندین مکان جستجو می کند. این، برای مثال، می‌تواند به تنظیم مقدار مشخصی از ویژگی سفارشی در سطح صحنه یا جهان اجازه دهد و سپس آن را به‌طور متفاوت برای یک لایه مشاهده لغو کند.

ویژگی‌های زمینه درایورها این رفتار را اجرا نمی‌کنند، بنابراین در صورت لزوم باید به صورت دستی از طریق مقادیر بازگشتی و یک عبارت شرطی شبیه‌سازی شود (شرایط عبارت‌اند از Simple Expression).

برای یک ویژگی به نام attr، گره شش مسیر RNA زیر را به ترتیب امتحان می کند:

["attr"] in the active View Layer (custom property).

attr in the active View Layer (built-in property).

["attr"] in the active Scene.

attr in the active Scene.

world["attr"] in the active Scene.

world.attr in the active Scene.

بسته به ویژگی خاص، ممکن است فقط زیر مجموعه ای از این مکان ها را بررسی کنید. به عنوان مثال، تصویر سمت راست نحوه دسترسی به یک ویژگی را نشان می دهد که مشخص است قطعاً یک ویژگی سفارشی با مقدار رنگ است.