در این پست میخواهیم در مورد یکی از قابلیتهای راینو به نام History صحبت کنیم که استفاده به جا و اصولی از آن، میتواند فرآیند ترسیم و مدلسازی در راینو را بسیار انعطافپذیرتر کند. این ویژگی اولین بار در نسخه ۴ راینو معرفی شدو در آن نسخه تنها بر روی ۳۰ دستور از مجموع دستورات راینو کار میکرد. اما در نسخههای بعدی توسعه پیدا کرد و اکنون در آخرین نسخه راینو بالغ بر ۸۵ دستور را پشتیبانی میکند. اما قبل از آنکه به معرفی این ویژگی جالب و پرکاربرد راینو بپردازیم لازم است ابتدا کمی با ساختار دستورات در راینو آشنا شویم.
میتوان گفت در راینو بیشتر دستورات از یک الگوی درونداد-پردازش-برونداد (Input-Process-Output) پیروی میکنند. به این معنا که کاربر یک یا چند درونداد (ورودی) به دستور داده و دستور براساس ورودیها و با الگوریتمهایی بک یا چند برونداد (خروجی) ایجاد میکند. برای مثال فرض کنید با دستور ExtrudeCrv یک دایره را انتخاب کرده و به آن مقداری ارتفاع دهیم تا یک استوانه ایجاد شود. در این مثال ورودی دستور (آنچه ما به دستور دادهایم) یک Curve به شکل دایره است و خروجی دستور (آنچه دستور به ما پس داده است) یک Surface به شکل استوانه است. برخی دستورات مانند Copy انواع مختلفی از ورودیها را میپذیرند، مثلا با دستور Copy میتوان هم Point هم Curve هم Surface و هم انواع دیگری از اشیا را کپی کرد. در خالی که برخی ابزارها تنها نوع مشخصی را به عنوان ورودی میپذیرند. مثلا به دستور ExtrudeCrv تنها میتوانید اشیایی از نوع Curve بدهید. توجه داشته باشید که خروجی یک دستور میتواند به عنوان ورودی دستور دیگر استفاده شود. در مثال قبلی استوانه ساخته شده با دستور ExtrudeCrv میتواند به عنوان ورودی دستور Copy استفاده شود.
در حالت عادی، یعنی زمانی که Record History خاموش است، خروجی هر دستور کاملا از ورودیهای آن مستقل است. مثلا زمانی که با دستور Copy از یک دایره چندین کپی میسازید، با تغییر دایره اولیه، دایرههای کپی شده هیچ تغییری نخواهند کرد. اما ماجرا از آنجا هیجانانگیز میشود که در زمان اجرای دستور، Record History را از Status bar (نوار پایین پنجره راینو) روشن کرده باشید. به این ترتیب History آن دستور ثبت شده و پس از آن با تغییر ورودی دستور تمام خروجیها نیز با آن تغییر کرده و بروز میشوند. در مثال قبل اگر هنگام اجرای دستور ExtrudeCrv گزینه Record History روشن باشد، پس از اجرای دستور اگر نقاط کنترل دایره را روشن کرده و آن را تغییر دهیم شکل Surface ایجاد شده هم به تناسب آن تغییر خواهد کرد.
جالب است بدانید که ایده به وجود آمدن پلاگین گرسهاپر نیز از همینجا شکل گرفته است. به زبان ساده هر تعریف (definition) در گرسهاپر مجموعهای از دستورات است که خروجی هر یک میتواند ورودی دستور دیگر باشد و بنابراین تغییر هر یک از پارامترها میتواند بر تمام دستورات مرتبط دیگر تاثیر گذارد.
نکات و ترفندهایی در مورد History
اکنون که با مفهوم History و روش استفاده از آن آشنا شدید، دانستن نکتهها و ترفندهای مرتبط با آن میتواند به شما کمک کند در فرآیند مدلسازی خود استفاده هوشمندانهتر و موثرتری از این ویژگی راینو داشته باشید.
۱- هربار که از نوار وضعیت (Statusbar) روی Record History کلیک کنید، این ویژگی تنها برای یک دستور فعال خواهد شد و پس از اجرای دستور دوباره به حالت غیرفعال درمیآید. در صورتی که میخواهید یک بار برای همیشه این ویژگی را فعال کنید، روی عبارت Record history در نوار وضعیت کلیک راست کرده و گزینه Always record history را علامت بزنید.
۲- آموختیم که اگر در زمان اجرای دستوری Record history فعال باشد، پس از اجرای دستور با تغییر ورودیهای دستور خروجیهای آن نیز تغییر خواهند کرد. اما به خاطر داشته باشید که این یک رابطه یکطرفه است. به این معنا که با تغییر خروجیها نه تنها تغییری در ورودیهای دستور ایجاد نخواهد شد. بلکه رابطه History بین آن دو نیز از بین خواهد رفت. بنابرین هر بار که یکی از خروجیها را تغییر دهید راینو به شما هشدار خواهد داد که با این کار رابطه بین ورودیها و خروجیهای دستور از بین خواهد رفت. در صورتی که مایل نیستید هربار این پیام هشدار را ببینید، باز هم میتوانید روی Record history از نوار وضعیت راینو کلیک راست کرده و این بار علامت کنار گزینه History break warning را بردارید.
۳- رابطهای که بین ورودیها و خروجیهای دستور اجرا شده با History به وجود میآید رابطه والد و فرزندی نامیده میشود. در این رابطه به ورودیها والد (Parrents) و به خروجیها فرزندان (Children) گفته میشود. با دستور SelParrents میتوان والدها و با دستور SelChildren نیز فرزندان یک شی انتخاب کرد. همچنین دستور SelObjectsWithHistory تمامی اشیایی را که دارای این رابطه هستند انتخاب میکند.
۴- گاهی نیز ممکن است نابجا فعال بودن Record History باعث سخت شدن کار شما شود و باعث شود با تغییر یک شی متوجه شوید که بسیاری اشیای دیگر نیز در فایل شما تغییر کردند، در حالی که شما نمیخواهید این اتفاق بیفتد! پس باید راه حلی نیز برای خنثی کردن و از بین بردن رابطه والد و فرزندی بین اشیا وجود داشته باشد. آن راه حل دستور HistoryPurge است. آبجکتهایی را که میخواهید History آنها غیرفعال شود انتخاب کرده و دستور HistoryPurge را در خط فرمان وارد کنید.
۵- همانطور که اشاره شد این قابلیت برای تمام دستورات راینو کار نمیکند و در حال حاضر در راینو ۶ بر روی حدود ۸۵ دستور میتوان آن را به کار برد. در راهنمای نرمافزار در کنار نام هریک از دستورات که عبارت History Enabled و آیکن یک هرم زرد رنگ را مشادهده کردید به این معناست که قابلیت History در مورد آن دستور کار میکند. در راینو ۶ این قابلیت به چند دستور جدید مانند BlendSrf اضافه شده است که کار ویرایش و تغییرات بر روی مدل را بسیار سادهتر و انعطافپذیرتر میکند.
سلام آقای نیکوکار
عالی و کامل و کاربردی بود .
خیلی ممنون بابت این مطلب آموزشی
من در زمینه طراحی و تولید کفش کار می کنم این نکته واقعا سرعت و کیفیت طراحی رو بالا می بره
ممنون از شما عالی بود