Бесплатный
графический редактор


Случайный урок:

Баннер для партнерки

Сайт Родителям о детях








Система Orphus



Вращающийся шар

Автор: Андрей Пожарко

Добавлено: 2010-07-31


Перед тем как мы начнем что-то создавать, и чтобы меньше потом переделывать пришлось, предлагаю для начала немного пройтись по теории.

Вопреки нашему воображению, анимация подобного плана состоит обычно всего лишь из нескольких кадров, а иллюзия вращения достигается за счет применения регулярной текстуры вращаемого объекта. Давайте представим, что мы вращаем обыкновенную чашку с ручкой. Чтобы поворот был плавный без рывков, будем делать кадры через каждый 1 градус поворота. Тогда чтобы повернуть чашку на один полный оборот (360 градусов) придется сделать 360 кадров анимации!

Теперь давайте представим, что мы вращаем не чашку, а, к примеру, граненный  стакан, у которого 18 одинаковых граней и нет никаких ручек. В таком случае, чтобы достигнуть эффекта вращения, нет необходимости поворачивать стакан на все 360 градусов, а достаточно повернуть всего на одну грань, и затем прокрутить этот же цикл 18 раз. Это значит что достаточно создать всего 360 / 18 = 20 кадров анимации. Остальные 340 кадров будут избыточны, так как на них будет то же изображение, что на этих 20ти первых кадрах. Из этого примера становится понятно, что чем чаще повторяется изображение при повороте (чем больше граней у стакана), тем меньше кадров анимации нам нужно будет сделать. Обычно плотность текстуры выбирают такой, чтобы в готовой анимации было всего 5-8 кадров.

Для создания текстуры я решил использовать маленькие синие кружочки. Из сказанного выше становится понятно, что количество кружочков по горизонтали лучше брать не любым, а заранее определенным. Иначе у нашего "стакана" может вдруг оказаться 17,3 граней, и потом придется крепко задуматься, на какой же угол мы его будем вращать smile . Для создания кружочков поекспериментировав я решил прибегнуть к нестандартному применению стандартной текстуры GIMP Сетка. Размер готовой анимации я захотел получить очень большой, поэтому изображение создал большого размера, вы же можете пересчитать на меньший размер. Чтобы кружочки выглядели поменьше, я решил размещать их с интервалом аж 36 пикселей. По горизонтали решил размещать 60 кружочков (60 граней стакана), что позволит в готовой анимации обойтись всего 360 / 60 = 6 кадрами. Значит размер изображения по горизонтали должен быть 36 x 60 = 2160 пикселей. При таком размере полученный шар может и в экран не поместиться, поэтому если вам нужен шарик поменьше, то можете взять другие параметры, например, 20 х 45 = 900, кол-во кадров 360 / 45 = 8. Главное чтобы можно было нацело поделить 360 на выбранное количество кружочков по горизонтали.

Далее. На первый взгляд высота изображения должна равняться ширине. Но тут мы вспоминаем каким образом полученное изображение "натягивается" на сферу. А натягивается оно таким образом, что на экваторе кружочки очень растягиваются в ширину.

на экваторе растянуто

От этого никуда не деться, но попробуем это хоть как-то исправить тем, что заранее немного сплющим кружочки. Для этого изначально высоту нового изображения сделаем в полтора раза меньше, а уже после готовую текстуру доведем до квадрата, сплющив по горизонтали.

Ну а теперь по порядку.

1. Нажмите D (выбрать цвета по-умолчанию) .

2. Создаем изображение Ctrl+N новое изображение выбранным размером, например, 2160х1440 пикселей, в качестве заполнения нового изображения укажите цвет переднего плана (т.е. черный). Чтобы лишний раз не запускать калькулятор, в поля для высоты и ширины изображения сразу пишите ваше расчетное выражение, например 36 * 60 и 36 * 60 / 1,5. Зря что ли разработчики запихивали сюда калькулятор, который даже выражения со скобками считает smile .

 

3. Создаем кружочки. Для этого идем в Фильтры - Визуализация - Текстура - Сетка.

создание текстуры Сетка

Поставьте подчеркнутые значения как на картинке, остальные цифры значения не имеют. Также выберите Цвет пересечения, я поставил синий.

4. Получаем вот такую текстуру:

сетка

5. Дальше сплющиваем изображение по горизонтали, как и планировали. После этого нам нужно получить квадратную картинку, иначе после проекции текстуры на сферу получим не шар, а дыню smile. Значит в Изображение - Размер изображения ставим 1440x1440 пикселей. Для данного типа изображения интерполяцию не советую оставлять Кубическую, т.к. кружочки станут угловатыми.

изменяем размер до квадрата

Если у вас медленный компьютер или вам просто не нужно такое большое изображение, то можете еще уменьшить текстуру, лишь бы она получилась квадратной. Правда тогда лучше было изначально создавать меньшее изображение, например уменьшив интервал между кружочками или их количество.

6. Основа готова. Переходим к проецированию. Нам нужно будет создать 6 сфер, поворачивая каждый раз проекцию на 1 градус. Идем в Фильтры - Карта - Проекция объекта. Привожу снимки всех вкладок настроек.

Тут можем поставить галочку Прозрачный фон, можем не ставить, если фон и так черный.

Тут я ничего не менял.

Тут убрал Отражение до 0.

Тут наклоним сферу на 25 градусов к нам.

первая сфера

Первую сферу создали с указанными настройками. Чтобы потом не запутаться, сразу переименуйте слой с полученной сферой, например в "0", соответственно углу поворота.

8. Перед созданием второй сферы нужно на последней вкладке Ориентация поставить угол поворота по оси Y 1 градус (вместо 0). Создайте вторую сферу. Снова переименуйте слой в "1".

9. Создаем так же остальные сферы, устанавливая поворот на 2, 3, 4.. и т.д. градуса.

10. Все полученные сферы должны быть в итоге собраны в одном документе, каждая на своем слое. Можете, например, перетаскивать мышкой все слои в один документ, выстраивая их в нужном порядке. Если вы все делали, как описано, то поместив слой "0" самым нижним, получим вращение сферы в готовой анимации против часовой стрелки, если самым верхним - по часовой стрелке.

11. Чтобы вся наша красота была на черном фоне, как задумывалось, нужно создать еще один (седьмой) слой с черным фоном, поместить его на самый низ в списке слоев. Затем на следующем слое (который над ним) кликаем правой кнопкой мыши и выбираем Слить с предыдущим. В итоге все слои остались на прозрачном фоне, а самый нижний на черном.

порядок слоев

Практически все готово.

12. Кадрируем изображение Shift+C , вырезав только саму сферу или её небольшую часть, если вы делаете аватарку.

13. Можно сохранять анимацию. Чтобы мое чудо влезло в ваш экран, перед сохранением я уменьшил размер изображения, но это не обязательно. Если все же будете уменьшать - не забудьте про интерполяцию, с кубической результат будет хуже (см. пункт 5). Итак, если у вас версия GIMP 2.6 идем в Файл - Сохранить как. Если 2.7 - Файл - Экспорт. Выберите формат GIF.

Сохранение анимации

При сохранении укажите желаемую задержку для кадров. Попробуйте задать, например, 50 миллисекунд, т.е. 20 кадров/с. Она проставится для всех кадров автоматом, что удобнее чем вписывать задержку руками для каждого кадра, или устанавливать дополнительный плагин для управления задержкой кадров до сохранения.

Все готово! Вот результаты:

результат - вращающаяся сфера

Эта анимация состоит из 6-ти кадров и весит без оптимизации всего 87 кБ.

Анимированная вращающаяся аватарка

А эта аватарка 100х100 пикселей весит 19кБ.

 

Написано по просьбе Натульки и Sladkaya

Просмотров: 26127




 

 

Ваши комментарии     



Андрей Пожарко       31.07.2010 - 20:28       Ссылка      

Еще вариант


nightvision       03.08.2010 - 11:55       Ссылка      

нет слов! класс!!!!!!!!


Натулька =)       04.08.2010 - 07:01       Ссылка      

Супер!!! Спасибо большое за урок smile Мне очень понравилось smile


Раиса       01.09.2010 - 07:17       Ссылка      

Замечательный урок с подробными объяснениями. Большое спасибо от учителя со стажем в 34 года


Андрей Пожарко       01.09.2010 - 10:39       Ссылка      

Спасибо за хорошие отзывы! Рад что понравилось, т.к. сомневался, что смогу донести грамотно.


Владимир       02.09.2010 - 13:37       Ссылка      

Можно ещё так сделать...


Владимир       02.09.2010 - 13:47       Ссылка      

Или так. Но у меня наверно плохо получилось.


андрей!!!"""       15.09.2010 - 19:06       Ссылка      

как создать текстуру сетка


Андрей Пожарко       18.09.2010 - 23:54       Ссылка      

Написано и нарисовано в пункте №3.


lesja       15.10.2010 - 20:22       Ссылка      

Отврат!Потерянное время!Потеряны шаги после п.5 или п.6.При создании следуящего слоя для новой сферы что считать "базовым слоем"? Исходя из чего делать следующий слой? Если Вы что-то оставляете при описании "по дефолту", то не надо позиционировать это как "урок". Result: потраченное зря время...


Андрей Пожарко       17.10.2010 - 17:36       Ссылка      

lesja, о чьем потраченном времени вы сожалеете? Если о моем, то не стоит так расстраиваться. В конце урока указано для кого было потрачено это время. Я сожалею, что урок вам не понравился, и даже не достоин называться уроком по вашему мнению. Обратите внимание на то, что он не предназначался для новичков. Попробуйте вначале выполнить более легкие уроки.


Анастасия       24.10.2010 - 12:08       Ссылка      

А мне очень понравилось! Хотелось бы побольше новых уроков,Андрей Пожарко wink


evsenia       24.10.2010 - 18:26       Ссылка      

мне тоже все понравилось и получилось:)


evsenia       24.10.2010 - 18:27       Ссылка      

мне бы вот хотелось подробнее про оптимизацию gif анимации


ilvira-razy       25.10.2010 - 12:21       Ссылка      

прикольно!! обьяснения понятны. wink


illyxasan       26.10.2010 - 14:09       Ссылка      

не получается второй кадр. слой вроде размера 2160*1440,а рисует только в размере 1440*1440.потом получаются одни дыни.5 дней парюсь help me please


Андрей Пожарко       26.10.2010 - 19:24       Ссылка      

Странно, вторую сферу мы делаем из той же текстуты. Т.е. текстуру мы создаем один раз, а затем из нее "клепаем" похожие сферы. Если первая получилась, то и остальные должны.


illyxasan       01.11.2010 - 09:25       Ссылка      

спасибо.все получилось.я раскопировал текстуру по слоям ,а потом напроецировал шариков.однако я не понял ,почему ,не открыв альфа-канал в слое проекция создавалась в новом изображении ,а не сворачивалось в существующем слое?


Андрей Пожарко       06.11.2010 - 11:45       Ссылка      

illyxasan, этого я и сам не понял пока smile


НАТАЛИ       25.11.2010 - 10:24       Ссылка      

CУПЕР.СПАСИБО ЗА УРОК


Вика       27.12.2010 - 13:32       Ссылка      

Не могу сделать второй шаг, дыни получаются.. Не подскажете что нужно?


BorMan       14.02.2011 - 18:47       Ссылка      

Вроде бы как 2 байта об асфальт, а как сам садишся что нить сделать. Так не знаешь куда нажать.


Zliden 2010       23.02.2011 - 15:22       Ссылка      

у меня все слои в разных документах,,,,как их в поместить как под пунктом 11 в картинке,,,


Алексей       08.08.2011 - 21:19       Ссылка      

не получается создать слои 1, 2, 3, 4, 5, 6 автор можно этот момент немного поподробней а так всё круто smile


Владимир       02.09.2011 - 08:54       Ссылка      

Урок хорош, но чуток "сумбурен". На начальном этапе вводит в заблуждение размер картинки на скриншоте пункта 2. Можно сразу было писать 2160 и 1440. После пункта "5" НУЖНО просто накопировать нужное количество слоёв, затем добавить каждому слою "альфа-канал" (правой кнопкой по слою->добавить альфа-канал), и так добавить всем слоям с текстурой сетки. И, уже, после этого "проецируем на сферу" каждый слой, не забывая поворачивать на 1 градус каждый следующий слой. Остальное всё понятно. А "вырезать" только сферу, нужно взять указанный в уроке инструмент, и мышом выделить нужную область и нажать "ентер" (без всяких комбинаций клавиш).


1       02.12.2011 - 16:37       Ссылка      

1


Андрей       28.12.2011 - 10:27       Ссылка      

Урок интересный, сначала получились дыни на втором слое, я разобрался с этим ставя галочку про создании эффекта "создавать новое изображение". Сделав нужное кол-во рисунков, перекинул их как слои в один, анимация собралась, но вот двигающийся шар не получился, шар просто дёргается как паралитик а не крутится, может надо больше кадров.


UJY       03.03.2012 - 15:26       Ссылка      

В урок допущено сто-пятьсот ошибок разъяснительного характера...


Аня       08.03.2012 - 19:05       Ссылка      

а где ориентация? ничо не понятно! yikes


Артём       30.09.2012 - 18:34       Ссылка      

[URL=http://www.radikal.ru][IMG]http://i077.radikal.ru/1209/f0/13fefd54f6ad.gif[/IMG][/URL] не получилось sad


domik       10.11.2012 - 17:31       Ссылка      

yy


бакайкин       01.12.2012 - 17:23       Ссылка      

Спасибо


Бакай       01.12.2012 - 17:25       Ссылка      

спс


Бакайкин       01.12.2012 - 17:46       Ссылка      

Какой же я лох


docent       28.10.2013 - 04:01       Ссылка      

Крутой урок, спасибки


kir       22.10.2015 - 23:51       Ссылка      

Так веселее wink


Добавить комментарий:

[b] [i] [u] [quote]     :) :| :( :D :o ;) :/ :P :lol: :mad: :rolleyes: :cool:


Введите результат =    








Проект OpenNET © 2008-2017 Андрей Пожарко Деньги владельцам сайтов