من یک مستند ویدئویی از پروژه میان ترم خود برای کلاس 544 خود تهیه کرده ام. برای کوتاهتر نگهداشتن آن، در ویدیو به جزئیات اشاره نکردم که این فقط یک مرحله تکمیلشده از یک پروژه بزرگتر است: مهر و موم ربات مستقل. من در ابتدا قصد داشتم یک بدن کامل را ترکیب کنم که اجزای خود را پنهان می کرد، اما این نمونه اولیه فعلی در مرحله ای نیست که نیاز به یک بدن کامل داشته باشد. بنابراین، من یک سر/صورت موقت برای بادی ساختم که قرار است جای یک بدن کامل را که در زمان بعدی این ترم ساخته میشود، نگه دارد. این چهره موقت از نمایش مدار جلوگیری می کند و به این حس کمک می کند که اعمال دنیای واقعی بر بادی تأثیر می گذارد.
وظیفه این بود که "موجودی" بسازیم که "شخصیت" را به نمایش بگذارد. از آنجایی که من هیچ تجربه ای با ربات ها، آردوینو یا پردازش قبلی در این کلاس ندارم، با کمی ناامیدی متوجه شدم که دوره میان ترم برای ایجاد یک ربات مستقل کاملاً کارآمد بسیار کوتاه است. با ایجاد یک نمایش ساده از برخی از رفتار مهر و موم روی صفحه و تمرکز روی تنها یک حسگر که در نهایت بخشی از "حواس" او به عنوان یک ربات خواهد بود، من چیزهای زیادی در مورد نحوه نوشتن کدی که می تواند داده ها را از آن دریافت کند، یاد گرفتم. سنسور و وظایف را بر این اساس انجام دهید. اگرچه ربات "بادی" روی صفحه نمایش در حال حاضر فقط انیمیشن های مختلفی را بسته به ورودی نور نشان می دهد، ورودی نور و کد برای دستکاری پاسخ ها اساساً یکسان هستند.
این ممکن است ساده و ابتدایی به نظر برسد، اما دادن توانایی بادی برای تشخیص حضور (دست خود را روی سرش نگه دارید) و موج (دست خود را روی سرش تکان دهید) کار بسیار دشواری است. من هنوز به ظرافت کامل در کدم دست پیدا نکرده ام. بسته به مکان و سرعت حرکت دستتان، ممکن است چند بار پشت سر هم برایتان دست تکان دهد یا متوجه نشود که دستتان را تکان دادید و فقط فکر کند که آنجا هستید. توانایی بادی برای دقیق بودن بهتر شده است و اکنون در اکثر اتاقهایی که نور مناسبی دارند با یک موج تمرین شده، بادی مطابق با ورودیهایی که میخواهید به او بدهید، پاسخی را که از او انتظار میرود، میدهد.
راهاندازی سختافزار اولیه است (اگرچه پس از مواجهه با مشکلات بسیار، آنقدرها هم ساده نبود!). یک مدار سنسور معمولی با یک مقاومت نوری و یک مقاومت 10k به زمین.
با تشکر از تدی که پیوندی در مورد نحوه استفاده از انیمیشن های گیف در پردازش برای من ارسال کرد . این کار کمی زمان برد تا به درستی کدنویسی کنم، اما در نهایت با استفاده از این پیوند، کتابخانه ای را که به انیمیشن های گیف اجازه بارگیری و پخش در Processing را می دهد، به درستی نصب کردم و متوجه شدم که چه اتفاقی می افتد. به عنوان مثال، در کد من "وارد کردن gifAnimation.*" را مشاهده می کنید. که از اطلاعاتی که در کتابخانه برای پردازش نصب کرده ام برای پخش انیمیشن استفاده می کند. بعد، من مجبور شدم فایل انیمیشن را به یک متغیر تبدیل کنم: "Gif sealdefault;" نوع متغیر و نامی است که من برای انیمیشن پیش فرض انتخاب کردم. سپس، در تابع setup، این دو خط:
"sealdefault = گیف جدید (این، "sealdefault.gif");
sealdefault.play();”
فایل را از پوشه داده با کد من (جایی که فایل "sealdefault.gif" در آن قرار دارد) تماس بگیرید و فایل را پخش کنید. من همه آنها را صدا می زنم و همه آنها را به یکباره در تنظیمات پخش می کنم تا بارگذاری شوند، اما از آنجایی که همه آنها برای مدت کوتاهی به طور همزمان بازی می کنند، ممکن است برای یک ثانیه نامرتب به نظر برسد اما اگر پلک بزنید احتمالاً آن را به کلی از دست خواهید داد.
در نهایت، در تابع رسم، از آنجایی که این پیش فرض است، با این خط شروع می کنم: "image(sealdefault, 0, 0);" و این انیمیشن را در موقعیت های x و y (0، 0) روی صفحه قرار می دهد. من این انیمیشن ها را طوری طراحی کردم که اگر آنها را در (0، 0) به این ترتیب قرار دهم، مهر و موم من هرگز به طور تصادفی دور صفحه نمی پرد. هر انیمیشن مهر و موم دارد (یا حداقل بدن، سر و باله های او بسته به عمل حرکت می کنند) در همان فاصله از (0، 0).
من هر تصویر را در Adobe Illustrator ترسیم کردم و فایلهای png. را به Adobe CS4 Flash وارد کردم تا آنها را متحرک کنم. من به هر انیمیشن نرخ فریم 30 دادم زیرا نرخ فریم من در Processing 30 است. پس از انیمیشن در Flash، سپس این فایل ها را به عنوان انیمیشن Gif خارج کردم و آنها را با کد Processing در پوشه داده قرار دادم.
با هر حالت متفاوتی که بادی به آن تغییر می کند، می توان یک خط جدید در تابع ترسیم نوشت تا انیمیشن مناسب پخش شود. از آنجایی که به همه چیز قبلاً یک متغیر اختصاص داده شده و بارگذاری شده است، تنها چیزی که برای نوشتن در کد ضروری است، "image(//different_animation_variable_here//, 0, 0);" جدید است. خط متناسب با انیمیشن مورد نظر