ad

درباره نویسنده

سجاد ربیعی

11 سال سابقه کار حرفه ای در صنعت انیمیشن و جلوه های ویژه کامپیوتری به عنوان FX Artist و FX Technical Director. سرپرست جلوه های ویژه در فیلم سینمایی حرکت اول ، سریال تلویزیونی ماتادور ، انیمیشن سینمایی شاهزاده رومی و چندین پروژه کوچک و بزرگ دیگر. مسلط به نرم افزارهای Maya ، Houdini و Nuke و موتور های رندر Arnold و RenderMan. مسلط به انواع زبان های برنامه نویسی و اسکریپت نویسی در صنعت انیمشین نظیر ++C و Python ، MEL , HScript , PyQt. مدرس شرکت cmiVFX برای آموزش جلوه های ویژه و نرم افزار Houdini. برای دریافت اطلاعات بیشتر لطفا به سایت شخصی بنده به آدرس www.JKCompany.org مراجعه فرمایید.

مطالب مرتبط

5 دیدگاه

  1. amir

    با سلام
    اول هر چیز یه تشکر جانانه به استاد عزیز بگیم و بابت مطالب عالیشون تشکر کنم.
    من از مطلب فیزیکال بیس بودن انجین های رندر خیلی استفاده کردم و خیلی مطلب مفیدی برام بود .
    استاد عزیز اگه برای اشما امکانش هست و وقت دارید که برای ما بزارید لطفن در مورد مفاهیم پایه ای رندر و متریال مطلب بزارید چون واقعن بیشتر ما اگه بهترین کارها رو هم رندر کنیم واقعن بی سواد هستیم {البته همه نه} من قبلن ازFresnel برای بیشتر آبجکت هام استفاده می کردم ولی در مطلب شما دیدم که برای آبجکت های کروی کاربرد داره .منظورم اینه ما چیز ها رو طوطی وار یاد گرفتیم و نیاز به مطالب علمی داریم .درسته که مطالب زیادی در این موارد به زبان اصلی وجود داره ولی خیلی هامون این زبان رو بلد نیستیم.
    تشکر فراوان

    پاسخ
    1. سجاد ربیعی

      بابت تعاریفتون ممنونم دوست عزیز.
      راستش من هم در نظر دارم تا در مورد مفاهیم پایه برای چیزهای مختلف مثل متریال ، داینامیک ، کامپوزیت و غیره مقالات دیگری بنویسم ، البته فقط در مورد چیزهایی که احتمال میدم دوستان به صورت حفظی با آنها کار میکنند و منطق اصلی استفاده از آنها را ندونند چیه یا حداقال کامل آشنا نباشند.
      در مورد Fresnel راستش باید بگم که فقط مربوط به اشکال کروی نیست ، (البته من هم ننوشتم فقط برای کرست ! ) ، در مقاله گفتم که اختلاف انعکاس در لبه های مدل نسبت به وسط آن ایجاد میکنه ، فقط برای فلزات این اختلاف خیلی خیلی کمه طوری که شاید به چشم نیاد ، حالا این مدل میتونه هر شکلی داشته باشه ، بنابراین پیشنهاد میکنم که به شکل مدلتون اصلا کاری نداشته باشید و حتما از این گزینه در همه کارها استفاده بکنید. فقط اگر متریالتون فلز باشه میتونید از این گزینه صرف نظر بکنید.

    2. amir

      تشکر
      من به شدت به این مطالب پایه نیاز مندم بنابراین با تمام توان منتظر مقالات شما هستم.
      موفق باشید

  2. nima

    با سلام مجدد خدمت شما استاد گرامی.
    یک سوالی که برام به وجود اومد این هستش که اگر فرضا شما بخواید یک پلاگینی بنویسید که تابع مورد نظرتون مسقیما در خود SDK برنامه وجود نداشت اونوقت باید چی کار کنیم؟
    مثلا فرض کنید شما در مایا یک locator ساختید و گذاشتید وسط یک جسم پلیگان با تعداد face های زیاد.
    حالا شما تصمیم گرفتید یک برنامه بنویسید به این صورت که اگر locator و اون جسمی که locator توش قرار داره با هم انتخاب و سپس کد رو اجرا کنید، برنامه در خروجی چاپ کنه که این نقطه داخل جسم سع بعدی هست یا خارج اون!
    بدیهیه که همچین دستور مستقیمی رو در اسکریپت برنامه ی مایا نداریم و مجبوریم به کتابخانه ی توسعه ی نرم افزار یا SDK اون مراجعه کنیم به آن امید که چنین دستوری حاضر و آماده برای ما قرار داده شده باشد.
    حال اگر ببینید که همچین دستوری آنجا هم وجود ندارد آیا به بن بست میخوریم؟
    مثلا تو هودینی شما میتونید با تبدیل جسمتون به یک جسم VDB تعیین کنید که ایا فلان نقطه در داخل جسم هست یا نه ولی در مایا چنین چیزی وجود ندارد!
    با تشکر و سپاس فراوان از شما استاد گرامی.

    پاسخ
    1. سجاد ربیعی

      سلام.
      از اینکه دیر جواب سوالتون رو دادم عذر خواهی میکنم ، من این مدت درگیر انجام دادن تغییراتی در سایتم بودم.
      در مورد سوالتون باید بگم که حرفتون درسته ، ما برای انجام دادن هر کاری چه در زبان C و چه در زبانهای اسکریپت نویسی توابع از قبل نوشته شده و آماده ای نداریم ، در حقیقت ما فقط توابع اولیه داریم که با آنها میتونیم برای خودمون توابع انحصاری بسازیم ، در حقیقت این توابع پایه مثل این میمونه که به ما آجر و ملات و چیزای اولیه بدن و بگن حالا برای خودتون هر ساختمانی که دوست دارید بسازید.
      فرق اصلی زبان C و MEL در Maya اینه که ما با زبان MEL تنها میتونیم از دستورات و ابزارها و Node هایی که در Maya وجود دارند برای رسیدن به هدفمون استفاده بکنیم ، مثلا از MEL برای اتوماتیک انجام دادن یه سری کارها در Maya استفاده بکنیم. ولی با زبان MEL نمیشه یک Node جدید بسازیم ، مثلا نمیتونیم یک نور جدید یا دوربین جدید به جز آنهایی که در Maya موجوده بسازیم .
      چون Maya یک برنامه Node Base میباشد (بعدا توضیح میدهم) ، بهترین تعریف اینه که با MEL نمیشه Node جدید ساخت ولی با پلاگین میشه .

      حالا زبان C به ما یکسری تابع و کلاس میده که مثلا با اون میتونیم یک Node از جنس نور بسازیم ، ولی اینکه این نور باید چه طوری کار بکنه را باید خودمون منطقشو بنویسیم.

      کلا در هر جایی زبان C یا بقیه زبان ها تنها یک ابزار اولیه میباشد و اصل کار را خودمون باید انجام بدیم ، حالا استثنا اگر شانس بیاریم ممکنه یکسری از کارها را بعضی ها از قبل کدشو نوشته باشن و ما بتونیم از آن به عنوان کتابخانه یا API استفاده بکنیم ، مثل محاسبه برخورد اشیا در فیزیک.

      استثنا در مورد مثال شما در رابط فهمیدن موقعیت Locator در وسط مدل ، ما میتونیم با MEL هم برنامه را بنویسم (چون با MEL میشه هم مختصات Locator را گرفت و هم مختصات Face های مدل) ، فقط کافیه فرمول و منطقش رو بفهمیم چیه ، ولی فرقش با C این میشه که اگر ما با MEL بنویسم ، یا باید از Expression استفاده بکنیم یا باید به صورت یک تابع از Script Editor استفاده بکنیم .

      ولی اگر از C استفاده کنیم و یک پلاگین بنویسیم ، میتونیم یک Node جدید به Maya اضافه کنیم که همین کار را انجام میده ولی با این تفاوت که سرعت محاسبات شاید دهها برابر از MEL بیشتر بشه.

      در زبان C هم برای ساخت مثالتون احتمالا اینطوری میشه که یک Node در Maya ساخته میشه که حداقل 2 ورودی داره ، ورودی اول اطلاعات Vector موقعیت Locator و ورودی دوم اطلاعات Mesh مدل مورد نظر که این Node با دریافت این اطلاعات با توجه به فرمولی که براش نوشتیم نتیجه 0 یا 1 رو میتونه در خروجیه خودش به ما بده.

      اما در مثال های دیگر مثل ساخت نور انحصاری یا حتی ساخت یک Locator با یک قیافه دیگر ، ما حتما باید از C (یا غیره) استفاده بکنیم.

ارسال یک نظر

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

ImanVFX - مستقل