Как сделать чтобы камера не тряслась при ходьбе

Добавил пользователь Алексей Ф.
Обновлено: 18.09.2024

Доброго времени суток. Представлюсь, для тех, кто меня не знает. Меня зовут Дима. Я работаю C++ разработчиком уже более 5-ти лет. На данный момент работаю в крупной Gamedev-студии, предыдущее место работы: SK hynix memory solutions Eastern Europe. Помимо работы увлекаюсь созданием образовательного контента для YouTube и Twitch каналов.

Сложно подобрать аналог данного понятия в русском языке, чтобы он не звучал странно. Тем не менее, в данной статье речь пойдёт о вибрации камеры(Camera Shake) в играх и её реализации на движке Unity.

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

Зачем нужны подобные эффекты? Чтобы лучше передать ощущение от игры, чтобы игрок чувствовал большее погружение. Особенно важно это делать в PC-играх, где отсутствуют возможности тактильно сообщать игроку о полученном уроне через вибрацию геймпада.

Сравним взрывы в разных компьютерных играх и то, как они ощущаются без вибрации камеры:

Особенно хорошо ощущается разница передачи, если нет звука: в первом случае больше похоже на лопнувшую банку оранжевой краски, нежели на взрыв робота. Во втором случае же однозначно чувствуется, что произошёл взрыв космического корабля страшной силы. Хотя не могу не признать, что тряска чересчур уж сильная.

Приведённые выше примеры касаются только вибрации камеры. Есть и другие эффекты. Рассмотрим еще один эффект. Это направленное вращение камеры, имитирующее удар. С помощью этого эффекта можно отлично передать сильную отдачу оружия, полученный от оружия урон, либо же в целом сделать более живыми и правдоподобными анимации персонажа:

Думаю, вступлений достаточно, перейдём к реализации. За основу взят небольшой проект, в котором я на стримах реализую геймплейные механики из игры Doom Eternal на движке Unity.

Вся суть вибрации камеры заключается в том, чтобы заставить камеру вибрировать на протяжении определённого промежутка времени, с определённой силой, то есть смещением относительно исходной позиции камеры, и в резкостью(плавностью) данной вибрации. По сути на протяжении отрезка времени мы будем генерировать очередную позицию камеры, смещать её в данную точку, по завершению вибрации следует вернуть камеру в исходную позицию.
Рассмотрим код функций:

//С помощью данной функции будет запущена вибрация извне данного класса public void ShakeCamera(float duration, float magnitude, float noize) < //Запускаем корутину вибрации StartCoroutine(ShakeCameraCor(duration, magnitude, noize)); >//Преимущество корутин в данной реализации очевидно //Если реализовыывать классически образом, используя функцию Update //Слишком много полей пришлось бы сохранять в полях класса private IEnumerator ShakeCameraCor(float duration, float magnitude, float noize) < //Инициализируем счётчиков прошедшего времени float elapsed = 0f; //Сохраняем стартовую локальную позицию Vector3 startPosition = transform.localPosition; //Генерируем две точки на "текстуре" шума Перлина Vector2 noizeStartPoint0 = Random.insideUnitCircle * noize; Vector2 noizeStartPoint1 = Random.insideUnitCircle * noize; //Выполняем код до тех пор пока не иссякнет время while (elapsed

Главной прелестью данного решения является генерация очередной позиции с помощью шума Перлина. По сути мы генерируем две координаты на текстуре шума и двигаемся от данных координат в сторону нуля. Параметр noize регулирует длину данных координат, то есть векторов:

Чем длиннее будут векторы, тем больше от переходов от чёрного к белому(0..1) попадёт в нашу генерации и тем более дёрганной будет наша вибрация.

Преимущество использования функции Mathf.PerlinNoise, в отличие от обычной генерации случайных чисел, состоит в том, что близкие друг к другу координаты дадут близкие результаты и дельты получатся плавными.

Существует множество различных способов реализовать вращение. Я выбираю следующий. Продемонстрирую сигнатуру функции, дабы объяснение было более наглядным:

Где duration - время в секундах, продолжительность вращения камеры, angleDeg - угол в градусах на который камера будет отклонена от направления взгляда игрока, к которому она в итоге должна вернуться, direction - направление, в котором будет происходить наклон.
На примере это всё выглядит так, с помощью угла, а точнее тангенса угла наклона, мы вычисляем длину направляющего вектора, суммируем его с вектором нашего взгляда и получаем результирующий вектора направления камеры:

Перейдём к реализации функционала:

public void ShakeRotateCamera(float duration, float angleDeg, Vector2 direction) < //Запускаем корутину вращения камеры StartCoroutine(ShakeRotateCor(duration, angleDeg, direction)); >private IEnumerator ShakeRotateCor(float duration, float angleDeg, Vector2 direction) < //Счетчик прошедшего времени float elapsed = 0f; //Запоминаем начальное вращение камеры по аналогии с вибрацией камеры Quaternion startRotation = transform.localRotation; //Для удобства добавляем переменную середину нашего таймера //Ибо сначала отклонение будет идти на увеличение, а затем на уменьшение float halfDuration = duration / 2; //Приводим направляющий вектор к единичному вектору, дабы не портить вычисления direction = direction.normalized; while (elapsed

Для составления полной картины: реализации, иерархии объектов, демонстрации работы, настройки параметров, - рекомендую ознакомиться с записью моего стрима, где всё это реализовано:

Запись довольно-таки объёмная, постараюсь в ближайшее время добавить таймкоды на самые интересные места.

На этом, пожалуй, всё. Я придумал еще один вариант реализации ударного вращения камеры, чему планирую посвятить отдельную статью. Также вибрацию камеры не помешало бы объединить с вращением. Пишите свои замечания и идеи для улучшения данных механик.

Когда владельцу экшн-камеры GoPro окончательно надоедает снимать видео с постоянно дрожащей картинкой (а такое в любом случае надоедает рано или поздно), то он первым делом озадачивается вопросом выбора и покупки хорошего стабилизатора.

Однако прикупив изделие вроде Karma Grip, экшн-оператор тоже понимает, что даже такое оборудование в некоторых ситуациях тоже недостаточно эффективно.

А с учетом специфики экшн-съемок, второй дубль (не говоря уже о третьем и прочих), как известно, снять непросто. Отсюда и совершенно справедливый накал эмоций, когда после уймы часов и сил, затраченных на запись уникального материала выясняется, что весь ролик портит нестабильная картинка.

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

И конечно отметим, что новые GoPro Hero5 наконец-то получили штатный электронный стабилизатор изображения. Функционал такого решения тоже имеет целый ряд ограничений. Тем не менее, как показывает практика, даже с такой стабилизацией камера снимание гораздо более ровную картинку и польза от такой стабилизации очевидна.

Но вернемся к нашей теме.

Итак, вы уже, наверняка, знаете, с помощью программных инструментов для редактирования виде, которыми стандартно комплектуются камеры GoPro (GoPro Studio, Splice, Quik и пр.), в достаточно степени качественно устранить дрожание изображения тоже вряд ли поучится. По крайней мере, в настоящем их виде для такого они подходят не очень.

С другой стороны, всегда можно использовать так называемые сторонние решения. Благо, они тоже есть, притом в общем доступе. Вот о наиболее простых, доступных и распространенных из них мы сейчас вкратце и расскажем.

Итак, как оперативно убрать дрожание изображения на видео, которое снято было экшн-камерой GoPro:

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

Делается это следующим образом:

Главное преимущество iMovie: приложение бесплатное и крайне простое в освоении и использовании (и не только с GoPro). Главный недостаток: прога работает только на Mac-ах.

Преимущества: программка тоже бесплатная и простая. Недостатки: устанавливается только на компы с Win 8 и Win 10.

В видеоредакторе YouTube процедура стабилизации видео выглядит примерно так:

  • сначала переписываем ролик с GoPro на комп;
  • с компа загружаем его на YouTube («Добавить видео«);
  • после этого находим ролик в списке, кликаем по кнопке «Изменить«, в появившемся меню выбираем «Улучшить видео«;
  • на следующей странице жмем «Стабилизация«, проверяем результат.

Плюсы видеоредактора YouTube: универсальность (работать можно как с Mac-а, так и с Windows-ПК). Минусы: во-первых, в процессе обработки редактор всегда сжимает видео (потому загрузка и стабилизация больших роликов требует времени), во-вторых, что самое неприятное, редактор работает только 23 сентября текущего года .

вариант лучший: Wondershare Filmora

Лучший по той простой простой причине, что очень удачно сочетает преимущества всех перечисленных выше редакторов.

Выберите формат в котором вы хотите получить видео. В меню дополнительных настроек, кликните у пункта стабилизировать видео.

Из оригинала 1/2 оригиналaltа 1/4 оригинала 176х144 320х240 325х288 480х320 640х480 720х480 720х576 800х480 1024х600 1280х720 1920х1080

Из оригинала 1/2 оригинала 1/4 оригинала 176х144 320х240 325х288 480х320 640х480 720х480 720х576 800х480 1024х600 1280х720 1920х1080

Из оригинала 1/2 оригинала 1/4 оригинала 176х144 320х240 325х288 480х320 640х480 720х480 720х576 800х480 1024х600 1280х720 1920х1080

Из оригинала 1/2 оригинала 1/4 оригинала 176х144 320х240 325х288 480х320 640х480 720х480 720х576 800х480 1024х600 1280х720 1920х1080

Из оригинала 1/2 оригинала 1/4 оригинала 176х144 320х240 325х288 480х320 640х480 720х480 720х576 800х480 1024х600 1280х720 1920х1080

Из оригинала 1/2 оригинала 1/4 оригинала 176х144 320х240 325х288 480х320 640х480 720х480 720х576 800х480 1024х600 1280х720 1920х1080

Из оригинала 1/2 оригинала 1/4 оригинала 176х144 320х240 325х288 480х320 640х480 720х480 720х576 800х480 1024х600 1280х720 1920х1080

Из оригинала 1/2 оригинала 1/4 оригинала 176х144 320х240 325х288 480х320 640х480 720х480 720х576 800х480 1024х600 1280х720 1920х1080

Из оригинала 1/2 оригинала 1/4 оригинала 176х144 320х240 325х288 480х320 640х480 720х480 720х576 800х480 1024х600 1280х720 1920х1080

Из оригинала 1/2 оригинала 1/4 оригинала 176х144 320х240 325х288 480х320 640х480 720х480 720х576 800х480 1024х600 1280х720 1920х1080

Из оригинала 1/2 оригинала 1/4 оригинала 176х144 320х240 325х288 480х320 640х480 720х480 720х576 800х480 1024х600 1280х720 1920х1080

Из оригинала 1/2 оригинала 1/4 оригинала 176х144 320х240 325х288 480х320 640х480 720х480 720х576 800х480 1024х600 1280х720 1920х1080

Из оригинала 1/2 оригинала 1/4 оригинала 176х144 320х240 325х288 480х320 640х480 720х480 720х576 800х480 1024х600 1280х720 1920х1080

Из оригинала 1/2 оригинала 1/4 оригинала 176х144 320х240 325х288 480х320 640х480 720х480 720х576 800х480 1024х600 1280х720 1920х1080

Из оригинала 1/2 оригинала 1/4 оригинала 176х144 320х240 325х288 480х320 640х480 720х480 720х576 800х480 1024х600 1280х720 1920х1080

Как стабилизировать видео в онлайн-редакторе

Как стабилизировать видео — второй способ

Убрать дрожание картинки с помощью онлайн сервиса вы можете в любой момент и с любого компьютера. Но если видео очень большое или помимо стабилизации требуется отредактировать ролик, такой способ не годится. Лучшим решением будет установить программу на компьютер. В редакторе ВидеоМАСТЕР вы не только устраните тряску, но также сможете перевернуть видео, наложить фильтры, поработать со звуком и многое другое.

ОСНОВНОЙ ФУНКЦИОНАЛ ПРОГРАММЫ:

  • обрезка ненужных фрагментов,
  • склеивание роликов,
  • поворот видео,
  • наложение визуальных эффектов,
  • Добавление надписей и картинок,
  • работа со звуком.


Как стабилизировать изображение в ВидеоМАСТЕРЕ

ШАГ 1. Установка программы

Скачайте ВидеоМАСТЕР на свой компьютер. Откройте папку, в которую вы сохранили дистрибутив. Двойным щелчком мыши запустите процесс установки. Следуя подсказкам инсталлируйте ВидеоМОНТАЖ, не забыв создать ярлык на рабочем столе. Когда установка завершится, запустите программу.

Установка

ШАГ 2. Добавление роликов

Добавляем ролик

ШАГ 3. Устранение дрожания в кадре

Стабилизировать видео

Веб-ресурс или программа – что выбрать?

Оба варианта дают профессиональный результат при минимуме усилий. Различаются лишь принципы их работы.

Веб-сайт работает на любых устройствах, будь то ПК, планшет или телефон. Чтобы стабилизировать видео онлайн, не нужно скачивать и устанавливать софт. Однако сервис зависит от скорости интернета и обрабатывает только один файл за раз.


Программа позволяет работать в режиме оффлайн и конвертирует большое количество файлов без потери качества. Вы не зависите от интернет соединения. Можно редактировать ролики и конвертировать в любой нужный формат.

Все мы наверняка неоднократно сталкивались с этой проблемой: смазанность снимков вследствие дрожания камеры при съёмке с рук. Это особенно касается тех из нас, кому не повезло иметь твёрдую руку. Хоть и нельзя полностью устранить шевелёнку, к счастью существует несколько приёмов, с помощью которых можно значительно снизить её влияние — настолько, чтобы она перестала быть заметной с первого взгляда.

снимок смазан в результате сотрясения камеры
снимок без сотрясения камеры
смаз вследствие сотрясения камеры чёткий снимок без сотрясения камеры

Снимок нижней части Эйфелевой башни ночью — Париж, Франция (2005).

Общие положения

Когда скорость срабатывания затвора низка относительно скорости непреднамеренного сдвига камеры, её сотрясение становится заметно на снимке. Соответственно, уменьшить этот эффект можно с помощью:

  1. методов, повышающих скорость затвора (сокрашающих выдержку)
  2. методов, уменьшающих движение камеры

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

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

Методы сокращения выдержки

К сожалению, существует всего три способа сократить выдержку: оптимизировать параметры экспозиции (1), избегать переэкспонирования (2) и улучшить освещённость предмета (3).

треугольник экспозиции

Выберите оптимальные параметры экспозиции. Убедитесь, что вы нашли наилучший компромисс в пределах треугольника экспозиции камеры; действительно ли вы используете максимальную светочувствительность ISO и/или минимально возможную f-ступень? Убедитесь, что вы обеспечили необходимую глубину резкости при выборе диафрагмы.

Впрочем, если вы используете камеру в автоматическом режиме, скорее всего, она уже предприняла всё возможное, чтобы сократить время выдержки.

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

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

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

Улучшите свою технику съёмки с рук

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

фотограф использует стену, чтобы опереть камеру

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

Обопритесь и обоприте камеру. Можно прислониться к стене, припасть к земле или присесть, использовать видоискатель вместо заднего экрана (тем самым прислонив камеру к лицу). Всегда избегайте ситуаций, когда ваше положение или оборудование требуют от вас напряжения при съёмке. Фиксация камеры относительно стены или другого неподвижного объекта значительно повышает стабильность.

Оптимизируйте свой способ держать камеру. Важно держать камеру крепко, но без напряжения, а также использовать обе руки. Используя большие телеобъективы, придерживайте одной рукой объектив снизу, а другой держите камеру. сохраняйте руки близко к туловищу и в комфортном положении. Частое использование камеры придаст вашему хвату большую естественность и натренирует мышцы ваших рук. Также не забывайте о собственном комфорте и тепле.

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

Сделайте три снимка подряд. Часто само осознание того, что руки нужно держать неподвижно, может этому мешать.

первый кадр
(смазан)
второй кадр
(резок)
третий кадр
(слегка смазан)

Вы можете обнаружить заметную разницу в чёткости между несколькими снимками, в частности потому, что вы меньше сосредоточены на отдельном снимке. Только не забывайте просматривать их в полном разрешении.

Прочие приёмы и советы по оборудованию

Конечно, лучшим способом минимизировать сотрясение камеры руками является съёмка без участия рук. Однако особенностям применения штативов посвящена отдельная статья, тогда как эта рассматривает случаи, когда штатив недоступен. К счастью, существует несколько альтернатив:

Пример снимка с установкой
камеры на землю и нацеливанием
с помощью крышки объектива.

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

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

Используйте объективы со стабилизатором изображения (IS) или редуктором вибраций (VR). Эти устройства способны значительно уменьшить сотрясение камеры — особенно при использовании с телеобъективами. Зачастую они позволяют сделать снимки с рук при выдержках, которые в 5-10 раз длиннее, чем это было бы иначе возможно. Однако они всё же не могут творить чудеса, так что наилучшим образом работают только при должной технике съёмки с рук.

Избегайте телеобъективов, где только возможно. Классный стабилизирующий объектив не является единственным способом уменьшить смаз вследствие шевелёнки. Приближение к предмету съёмки (с использованием меньшего фокусного расстояния или объектива с более широким углом зрения) уменьшит влияние дрожания рук и вдобавок может зачастую создать более интересную перспективу.

Читайте также: