Головна

анімація

  1. анімація персонажів
  2. Догоспітальна реанімація.
  3. Комп'ютерна 3d-анімація - як вона працює
  4. Наркоз і реанімація
  5. Знеболення. реанімація
  6. повнометражна анімація

анімаціяозначає надання нерухомого предмету руху. Ще одне значення слова анімація - мультфільм.

Анімація за допомогою графічних методів

В Глава 6 я пояснив ідею створення ілюзії руху картинок по екрану. Там же ми рухали за формою об'єкти. Спробуємо змусити рухатися по екрану не об'єкти, а геометричні фігури, отримані графічними методами. Нехай зліва направо рухається коло. Для цього ми повинні спочатку намалювати її зліва і швидко ж стерти, для чого намалювати її на тому ж місці, але кольором фону. Незважаючи на те, що ми коло швидко стерли, вона встигне майнути на екрані, і очей це помітить. Потім потрібно намалювати і стерти таку ж коло трохи правіше, потім ще правіше і т.д.

З огляду на причин, згаданих в 11.3, відмовимося від операторів циклу. Будемо використовувати таймери. Створимо проект. Помістимо в нього таймер. Встановимо його інтервал в будь-яке число <50, при цьому він буде видавати максимально можливе число імпульсів в секунду - 18. Ось програма:

Dim x As Integer 'Координати і радіус кола

Dim y As Integer

Dim R As Integer

Dim Цвет_окружності As Long

Dim Цвет_фона As Long

Private Sub Form_Load ()

x = 1000

y = 1500

R = 200

DrawWidth = 5 'Товщина лінії

Цвет_окружності = vbBlack

Цвет_фона = BackColor

End Sub

Private Sub Timer1_Timer ()

Circle (x, y), R, Цвет_окружності 'Малюємо коло

For i = 1 To 500000: Next 'Порожній цикл для завдання паузи

Circle (x, y), R, Цвет_фона 'Стираємо окружність

x = x + 30 'Переміщаємося трохи направо

End Sub

пояснення: Коли ви спробуєте виконати цю програму на комп'ютері, зображення рухається окружності може вийти неякісним - окружність в процесі руху буде мерехтіти і пульсувати. Це пов'язано з розгорткою електронно-променевої трубки вашого монітора. Якщо створити маленьку паузу між малюванням і стиранням окружності, небажані ефекти зійдуть нанівець. Цю паузу я створюю порожнім циклом. Експериментуйте з радіусом, товщиною окружності, тривалістю паузи або кроком руху по горизонталі. Останні дві величини визначають швидкість руху.

Завдання 100: Нехай по екрану рухається "вагон" - прямокутник і два колеса.

рухаємо об'єкти

Ми більше не будемо займатися анімацією за допомогою графічних методів, тому що об'єкти рухати набагато приємніше.

Помістимо на форму об'єкт Shape у вигляді тієї ж кола і таймер. Нехай окружність рухається вгору. програма:

Private Sub Timer1_Timer ()

Shape1.Top = Shape1.Top - 20

End Sub

Як бачите, вона набагато простіше, ніж програма анімації за допомогою методів.

Завдання 101: Нехай одночасно рухаються два кола. Таймер - один.

Завдання 102: Одна вниз, інша направо.

Завдання 103: Покажіть своїм друзям фільм, знятий "секретної відеокамерою": В небі над вашим будинком летить літаюча тарілка. Для цього вам знадобиться ввести в комп'ютер фотографію, на якій були б видно ваш будинок і небо. Роль літаючої тарілки з успіхом виконає фігура еліпса з заливкою. Можете зробити їй вікна (фігури кіл з жовтої заливкою). Всі ці фігури повинні летіти з однаковою швидкістю, не те вікна "попливуть" з тарілки.

Змусимо якусь фігуру рухатися направо, а потім самостійно відскочити від правого краю форми:

Dim Крок As Integer

Dim x As Integer

Private Sub Form_Load ()

x = Shape1.Left

Крок = 50

End Sub

Private Sub Timer1_Timer ()

x = x + Крок

Shape1.Left = x

If x> Width Then Крок = -50 'Якщо фігура полетіла за правий край форми, то летіти назад

End Sub

Завдання 104 :. Примусьте фігуру нескінченно рухатися, відскакуючи від правого і лівого країв форми.

Завдання 105 :. "Більярдний куля". Намалюйте «більярдний стіл» - великий прямокутник. Куля під кутом літає по столу, відскакуючи від його країв за законом відображення. Потрапивши "в лузу" (будь-який з чотирьох кутів столу), зупиняється. Об'єктом тут зручно взяти Image із завантаженою іконкою у вигляді кульки (відповідні іконки є в Visual Basic).

Завдання 105-1 (складне) :. "Годинник зі стрілками". Якщо ви в ладах з тригонометрією, зробіть годинник зі стрілками: вартовий, хвилинної, секундної. Завдання спроститься, якщо ви виберете як стрілок тоненькі сектора кіл.

Завдання 106: Покажіть політ каменя, кинутого з вежі, для завдання 45 з 6.3. Нагадую умова завдання. Камінь кинули горизонтально зі 100-метрової вежі зі швидкістю v = 20м / с. Його відстань від вежі по горизонталі (s) виражається формулою s = v * t, де t - час польоту каменя в секундах. Висота над землею h виражається формулою h = 100 - 9.81 * t2/ 2. Намалюйте вежу, землю. Каменем може служити Image з відповідною завантаженої іконкою. Потім камінь летить. Досягніть, щоб час польоту каменя на екрані приблизно відповідало реальному часі, отриманого при вирішенні завдання 45. Намалюйте траєкторію польоту каменя. Для цього досить, щоб камінь залишав за собою сліди у вигляді точок.

вказівка: У задачі йдеться про метрах, а на екрані відстань вимірюється в твіпах. Тому вам доведеться поставити масштаб, тобто уявити, що один твіп дорівнює, скажімо, одному метру. Тоді висота вежі буде дорівнює 100 твіпов, а швидкість каменю - 20 твіпов в секунду Правда, картинка на екрані в цьому випадку буде дуже маленькою. Тоді можете задати інший масштаб - 1 метр дорівнює, скажімо, 40 твіпам. Тоді висота вежі буде дорівнює 4000 твіпам, а формули зміняться: s = 40 * v * t і h = 40 * (100 - 9.81 * t2/ 2).

Завдання 107 (складне): Зробіть гру: Гармата на екрані стріляє в ціль ядрами. З якого пострілу вона вразить противника? Між гарматою і метою розташована невелика гора. Перед початком гри випадково задається горизонтальна координата мети. Потім малюється картинка.


Перед кожним пострілом комп'ютер відображає в текстовому полі номер пострілу і запитує у людини стартову швидкість ядра v і кут a нахилу стовбура гармати до землі. Потім летить ядро. Політ ядра підпорядковується двом рівнянням: s = v * t * cosa і h = v * t * sina - 9.81 * t2/ 2 (див. Попереднє завдання). Вважається, що мета вражена, якщо ядро ??її торкнулося, не торкнувшись гори. вказівка: Ви можете запрограмувати автоматичне визначення попадання в ціль. Для цього потрібно в момент, коли ядро ??при падінні перетнуло рівень землі, порівняти горизонтальні координати ядра і цілі. Якщо вони досить близькі, то фіксуйте потрапляння. Визначення дотику до гори - більш клопітка заняття, але ідея та ж.

"Рухаємося" властивості об'єктів

Зробимо рекламний ролик: З чорної глибини екрану на нас напливають, збільшуючись, червоні слова "З'їжте Марс!"

Пофарбуємо форму. Помістимо на форму мітку і зробимо її великою і прозорою. Додамо її властивості Caption значення потрібного тексту. Змінимо назву шрифту на "Times" або який-небудь інший красивий, налаштуємо стиль і колір шрифту. програма:

Private Sub Timer1_Timer ()

Label1.FontSize = Label1.FontSize + 1

End Sub

Завдання 108: Нехай текст також безперервно змінює колір.

Нехай тепер на нас насувається, збільшуючись в розмірах, фото. Для цього додамо це фото об'єкту Image. Встановивши в True його властивість Strech, будемо збільшувати розміри об'єкта, намагаючись зберігати його пропорції:

Private Sub Timer1_Timer ()

Image1.Width = Image1.Width + 10

Image1.Height = Image1.Height + 7

End Sub

Таким чином можна оживляти об'єкт, змінюючи будь-яке його властивість, що має числове значення.

Мультфільм

Коли ми знімаємо відеокамерою йде людини, то на різних кадрах у нього різне положення ніг. Коли мультиплікатори на студії створюють мультик з йдуть чоловічком, вони олівцем і фарбами прорисовують всі кадри, а їх багато - по кілька на кожну секунду фільму - пекельна праця.

Зараз ми з вами створимо надпростий мультфільм, де вот такой вот чоловічок

 
 

йде по білій формі справа наліво. Для створення прийнятною ілюзії ходьби нам достатньо зміни цих трьох кадрів. Я пронумерував їх справа наліво.

Зайдіть в графічний редактор Paint і на білому тлі намалюйте перший кадр. Ви можете зробити чоловічка набагато красивіше і докладніше, ніж це зробив я. Якщо ви відмінно працюєте в солідному графічному редакторі, то можете навіть взяти фотографію вашого знайомого. Збережіть чоловічка під ім'ям Кадр1. Тепер, не стираючи чоловічка, змініть йому положення ніг і збережетеся як Кадр2 (НЕ Save, а Save as ...). Аналогічно створіть і збережіть Кадр3.

Тепер зайдіть в Visual Basic. Зробіть форму білої. Помістіть на форму кудись убік три об'єкти Image. Кожному в якості картинки надайте свій кадр. Тепер помістіть на форму об'єкт Image4. Наша ідея - надавати об'єкту Image4 по черзі з достатньою швидкістю картинки з трьох інших Image. Тоді ми побачимо, що чоловічок в Image4 пересуває ногами. Міняти кадри потрібно в такій послідовності: 1-2-3-2-1-2-3-2-1-2-3-2-1-2 -... Якщо при цьому об'єкт Image4 буде ще й рухатися наліво по білій формі, то результат буде приємним. Давайте-ка для подальшого розуміння розіб'ємо цю послідовність на однакові ділянки: 1-2-3-2 --- 1-2-3-2 --- 1-2-3-2 --- 1 2 -... Довжина ділянки дорівнює 4.

Помістіть на форму таймер і надайте йому інтервал 100 (потім, якщо рух буде занадто швидким або повільним, ви його зміните). Наше завдання - зробити так, щоб при кожному виконанні процедури таймера ми бачили один черговий кадр з наведеної мною послідовності. Для цього я організував змінну N і змусив її пробігати значення 0-1-2-3 --- 0-1-2-3 --- 0-1-2 -... Як бачите, довжину ділянки на ній я підібрав теж = 4. Зробіть три об'єкти Image невидимими, щоб не заважали. Ось програма:

Dim N As Integer

Private Sub Form_Load ()

N = 0 'Починаємо з 0

End Sub

Private Sub Timer1_Timer ()

Select Case N

Case 0: Image4.Picture = Image1.Picture

Case 1: Image4.Picture = Image2.Picture

Case 2: Image4.Picture = Image3.Picture

Case 3: Image4.Picture = Image2.Picture

End Select

N = N + 1 'Збільшуємо N на 1

If N = 4 Then N = 0 'Після 3 повинен йти 0, а не 4

Image4.Left = Image4.Left - 60 'рухаємося чоловічка наліво

End Sub

пару операторів

N = N + 1

If N = 4 Then N = 0

можна замінити одним витонченим оператором N = (N + 1) Mod 4

Ви можете як завгодно покращувати мультик, наприклад, нехай ззаду чоловічка повільно їде автомобіль.

Завдання 109: "посмішка". Для тих, хто вміє малювати. Попросіть в своєї знайомої її фотографію, де вона знята з серйозним виразом обличчя. Введіть фото в комп'ютер. Зробіть в Paint, а краще в FotoShop ще два-три кадри цього фото, акуратно потроху піднімаючи куточки губ на зображенні. Подумайте, в якій послідовності потрібно показувати кадри, щоб посмішка поступово виникала і зникала.

Про прозоре кольорі

Звичайно, вам би хотілося, щоб чоловічок йшов не по білому екрану, а по вулиці (фотографія вулиці). Але тут ви зіткнетеся з проблемою: чоловічок буде обрамлений білим прямокутником фону, в якому ви його малювали. Добре б можна було зробити білий (або будь-який інший) колір прозорим. Але це нетривіальна проблема і в курсі для початківців її не варто вирішувати.



© 2016-2022  um.co.ua - учбові матеріали та реферати