Как я создавал короткометражный sci-fi боевик «Jumper». 1 часть
Я был поражён такой масштабной реакцией на мой короткометражный экшн. Еще раз всем спасибо -- и тем, кто хвалил, и тем, кто ругал. Этот фильм -- самая важная работа в моей жизни на текущий момент. На подготовку, съемку и пост-продакшн ушло полтора года -- серьезный срок. Надеюсь в следующий раз увидимся в залах кинотеатров на моем полнометражном фильме, а пока что поделюсь, как создавался фильм. Почти всё я делал впервые и возможно кому-нибудь мой опыт пригодится.
Рождение фильма «Jumper»
В начале 2024 года мой друг Эмиль приобрел роборуку и предложил попробовать её в нашей следующей творческой работе. Мы устроили себе «гаражную лабораторию» – раз в неделю собирались и тестировали возможности новой приблуды.
Параллельно много обсуждали любимые фильмы. Эмилю нравился Апгрейд – за движения камеры, а мне Рейд – за постановку драк. Роборука позволяла снимать сложные однокадровые хореографии и повторять их с идеальной точностью. Так на стыке наших любимых приёмов и возникла идея снять ролик с боевой хореографией и телепортациями, где герой в рамках одного кадра исчезает и появляется, продолжая драться. Потом к приемам добавился POV -- вид от первого лица (тут самое время передать привет Хардкору) и Point Cloud (новая технология, применение которой я раньше в кино не видел).
На видео один из первых тестов: мы проверяли, насколько точно актёры могут подстраиваться под траекторию роборуки и синхронизироваться с её жёстким ритмом. Скажу честно – было немного страшно сниматься, когда камера так быстро проносится рядом 😱.
Bullet time по-новому
Следующий важный тест – 360-градусная облётка в духе «Матрицы». Мы с Эмилем видели много попыток её повторить, но везде результат был посредственным. Причина проста – мало камер. В сцене с Тринити было 120 камер, а найти и арендовать такой парк сегодня практически нереально.
Но время не стоит на месте, и я решил протестировать нейросети. В «Матрице» каждая камера – это один кадр. А что, если на каждый честный кадр дорисовывать нейронкой ещё два промежуточных?
Для теста мы собрали систему из девяти GoPro. Из 9 кадров (чуть больше трети секунды) нужно было замедлить видео в восемь раз. Я прогонял материал через все существующие сервисы и программы. И лишь одна нейронка справилась достойно – Runway.
После тестов стало ясно: эффекту быть. Мы остановились на 45 камерах, выстроенных в сегмент на 270 градусов – это максимум, который реально можно было арендовать в Москве.
Экшн и боёвка
Параллельно мы задались вопросом, где найти героев для нашего экспериментального фильма. В западных блокбастерах бои давно стали отдельным искусством – настолько, что обсуждается даже отдельная «оскаровская» номинация. У нас же эта профессия не так сильно распространена.
Через две недели поисков -- удача в лице каскадера Микки. Он был каскадером в "Майоре Громе" и "Серебряных коньках" и согласился поучаствовать в проекте. Во многом потому, что обычно каскадеры остаются «невидимыми героями», а Микки хотел играть в кадре и его харзима и живость позволяли это делать.
Самыми сложными стали два момента: однокадровый 13-секундный дубль с дракой под роборуку и падение на стол в 360°. Первый требовал математической точности – малейшее замедление или заминка, и камера «теряла» актёров. Мы репетировали целый день и сделали около 40 дублей, прежде чем всё совпало.
«Облётка из Матрицы» на практике
В фильме эта сцена стала одной из ключевых. Мы собрали конструкцию из 45 GoPro, чтобы в деталях и со всех сторон заснять падение героя о бетонный пол. Эмиль, как инженер на все руки, разработал конструкцию в AutoCAD. Основу нам сделали из металла, а кейсы для каждой камеры Эмиль напечатал на 3d принтере.
Еще этот трюк стал испытанием физическим для каскадера. Из-за облётки 360° обмануть монтажом было нельзя. Падать нужно было по-настоящему, без защиты, прямо на подпиленный реквизитный стол. Если бы он оказался слишком хлипким – Микки ударился бы о бетон, если слишком крепким – кадр бы не сработал. Мы нашли баланс и сняли со второго дубля.
Сборка этого кадра заняла у меня три недели ежедневной работы. Нужно было выровнять все камеры, добиться плавности движения, а потом вручную стереть с каждого кадра всю нашу конструкцию.
Картину осложняло то, что каждая GoPro отличалась по цвету и контрасту. Всё это пришлось доводить вручную. Седых волос у меня прибавилось, но результат того стоил: детская мечта повторить «облётку из Матрицы» сбылась – и удалось привнести в неё что-то своё.
Продолжение следует...
P.S. И, как в прошлый раз, задавайте вопросы, если что-то интересно. С позиции одновременно начинающего и опытного режиссера, постараюсь ответить.
Подписывайтесь в телеграме и инсте. Я там в ближайшие недели буду публиковать, как я это реализовал и делиться успехами на пути этого концепта в сторону полнометражного фильма.
Продолжение поста «Эффект поражения»1
Мы доработали эффект критического поражения глайда!
Теперь, в момент попадания появляется яркое пламя, а за корпусом тянется густой дым.
Эти детали делают момент падения ещё зрелищнее и помогают мгновенно понять — глайд получил смертельный урон.
Как думаете, стало лучше? Пишите свои идеи в комментариях
LEGO ламба прямо посреди города
vfxил сам, так что тэг моё
хочу развить свой телеграмм-канал, так что буду рад подписке ❤️
https://t.me/xxcactussellmp
Эффект поражения1
Мы разработали эффект для наглядного отображения момента поражения глайда: при критическом попадании корпус мгновенно охватывает пламя, после чего он теряет аэродинамическую устойчивость и стремительно падает.
Этот эффект усиливает драматизм воздушных сражений и помогает моментально идентифицировать критический урон.
Как тебе этот эффект? Что стоит добавить, чтобы сделать его еще лучше?
Делись своими идеями
В какой игре для тебя были самые запоминающие эффекты?
Как создать атмосферный туман в Unity: пошаговое руководство
Ссылка на скачивание всех файлов: https://drive.google.com/file/d/1JMFbpmPtTw0qn_EQdWtqJkBVeQDLXdao/view
В этой статье мы рассмотрим, как создать атмосферный туман в Unity. Материал состоит из двух частей:
1. Создание тумана.
2. Реализация рассеивания тумана вокруг определённого объекта. (Игрока)
Часть 1: Создание тумана
Что понадобится?
Для создания тумана используется всего одна текстура, которую можно скачать по ссылке ниже:
Шаги создания
Создайте систему частиц
Добавьте систему частиц в сцену и настройте её параметры. В качестве примера можно взять следующую конфигурацию:
После настройки вы получите атмосферный туман, который можно использовать в ваших проектах.
Часть 2: Рассеивание тумана вокруг объекта
Чтобы добиться эффекта, когда туман рассеивается вокруг определённого объекта (например, игрока), нам потребуется немного дополнений в виде шейдера и скрипта.
Сначала скачайте шейдер по ссылке ниже, либо создайте и настройте его:
Если вы используете шейдер отдельно, убедитесь, что у него правильно настроено имя Reference для передачи значений из скрипта.
Создайте новый материал, используя скачанный шейдер.
Ниже приведён простой скрипт на C#, который будет передавать значения в шейдер для контроля рассеивания тумана:
using UnityEngine;
namespace _Code.Scripts.VFX
{
public class ParticleSystem_FogAvoidPlayer : MonoBehaviour
{
public Transform player;
public float minDistance = 2f;
public float maxDistance = 10f;
public float updateInterval = 0.1f;
private ParticleSystemRenderer particleRenderer;
private MaterialPropertyBlock propBlock;
private float nextUpdateTime;
private readonly int playerPosId = Shader.PropertyToID("_PlayerPosition");
private readonly int minDistId = Shader.PropertyToID("_MinDistance");
private readonly int maxDistId = Shader.PropertyToID("_MaxDistance");
public void Init(Transform playerTransform)
{
player = playerTransform;
}
void Start()
{
particleRenderer = GetComponent<ParticleSystemRenderer>();
propBlock = new MaterialPropertyBlock();
UpdateShaderParameters();
}
void Update()
{
if (Time.time >= nextUpdateTime)
{
UpdateShaderParameters();
nextUpdateTime = Time.time + updateInterval;
}
}
void UpdateShaderParameters()
{
if (player == null || particleRenderer == null)
return;
particleRenderer.GetPropertyBlock(propBlock);
propBlock.SetVector(playerPosId, player.position);
propBlock.SetFloat(minDistId, minDistance);
propBlock.SetFloat(maxDistId, maxDistance);
particleRenderer.SetPropertyBlock(propBlock);
}
}
}
Применение скрипта
Добавьте скрипт Прикрепите скрипт ParticleSystem_FogAvoidPlayer к системе частиц.
Настройте ссылку на объект в инспекторе укажите ссылку на объект (например, игрока)
Результат:








