Cutscene tutorial/ru

From Dragon Age Toolset Wiki
Jump to: navigation, search
Инструкция по созданию роликов
Начало / Русская DA Builder Wiki / Поделиться ВКонтакте
Cutscene topics

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

Наша, приведенная в качестве примера ситуация в этом учебнике, будет служить началом разговора между игроком и двумя НПС. Игрок только что прибыл к месту разбития лагеря, где эти НПС и находятся. Он приближается к огню. Один из НПС рад видеть игрока и приветствует его, а другой – подозрителен (недоверчив). Эти двое обменялись краткими репликами, чтобы показать это до того, как интерактивная часть разговора началась.

Создание новой кат-сцены

Чтобы создать новый ресурс - катсцену, создайте этот ресурс в обычном порядке:

New resource.png

Результат открыт в редакторе кат-сцен.

Cutscene new.png

В cutscene редакторе есть два основных раздела; экраны видов (в верхней части редактора) и временная шкала (внизу).

Экраны видов (Viewports)

  • Экраны видов могут быть привязаны к разным камерам для предварительного просмотра того, что они могут видеть
  • Установите «Safe frame» для камеры экрана вида, чтобы обеспечить правильное соотношение сторон
  • Задать для экрана вида установку «User» (пользователь), чтобы увидеть, где камера расположена с другой перспективы. Это можно сделать кликнув правой кнопкой мыши в титульной строке экрана вида и в меню выбрав «Detach From Camera»

Камера в экранах видов catscene редактора работает также как и в редакторе сцены (Stage editor). Вы можете установить количество и расположение экранов видов в меню "View" (Вид).

Cutscene tutorial viewport layout.png

И для каждого индивидуального экрана вида (области просмотра) вы можете выбрать, какую камеру он показывает, и установить другие опции отображения, кликнув правой кнопкой по титульной строке.

Cutscene tutorial viewport properties.png

При установке видового экрана для показа вида через одну из камер кат-сцены, желательно включить для этого экрана опцию «Safe Frame».Это вставит в экран вида границы, отображающие, что именно будет видно при воспроизведении кат-сцены.

Обратите внимание, что при воспроизведении кат-сцены в самом редакторе, только в настоящий момент активном экране вида (тот, который с синим заголовком), будет транслировать воспроизведение «наживо», другие же экраны не будут обновлять вид, отображенный в них пока они не будут выбраны (активны). Для предварительного просмотра сцены в таком виде, в каком ее должен видеть игрок, вам нужно задать для одного из экранов вида установку «Active Camera» и убедиться, что окно вида активно при воспроизведении кат-сцены в редакторе. Если активное окно вида стало серым, попробуйте установить свойству «Enable Level Effects» катсцены значение «false».

Шкала хронологии (Timeline)

  • В катсцене присутствует всегда только один Мастер Объект.
  • Каждый активный объект отображен в шкале хронологи с множеством своих «трэков».
  • Все объекты имеют позиционные трэки (которые делятся на X, Y и Z трэки). Некоторые объекты имеют дополнительные встроенные трэки.
  • Другие действия и эффекты могут быть добавлены к общим трэкам. Объекты могут иметь столько общих трэков, сколько вы захотите.

Под экраном вида находится шкала хронологи. Вдоль верхней части шкалы простилается временная шкала. Она может быть установлена либо для отображения кадров (до 30 кадров в секунду), либо в миллисекундах, путем изменения свойств «временной шкалы» катсцены в «object inspector». Маркер указывает, какая точка времени на шкале хронологи экрана вида в данный момент показана.

Под ней расположены набор строк, содержащих разных актеров, камеры, и другие объекты, активные в этой катсцене. Именно здесь будет иметь место большая часть редактирования катсцены. Каждый объект будет иметь определенное количество «треков», которые будут содержать команды, направленные актерам в определенное время при воспроизведении катсцены.

Cutscene tutorial timeline.png

Первый объект в трэк-листе – это «Мастер» объект. Это специальный объект, который каждая катсцена имеет только один. «Мастер» объект это эквивалент корневого узла дерева разговоров, хранилище для общих настроек и эффектов. Например, «Мастер» объект содержит трек, который определяет, какая из камер активно в любой момент времени. Мастер объект не может быть удален. По умолчанию, Мастер объект выглядит как маленькая зеленоватая сфера. Вы можете изменить внешний вид Мастер объекта в настройках опций катсцены.

Новая катсцена также имеет камеру под названием Camera 1.Эта камера может быть удалена или изменена так, как вы пожелаете. Мы можем добавить новую камеру позднее, тогда, когда нам необходимо.

Каждый объект имеет трек «позиции» (Position) и трек «ориентации» (Orientation), которые контролируют расположение объекта в пространстве. Камеры также имеют треки FOV (fields of view) поля зрения.

Объекты также могут иметь другие «общие» треки, добавленные редактором, если необходимо.Эти общие треки содержат все те другие команды и инструкции, которые мы можем задать.

Настройки катсцены

  • МАСТЕР объект должен быть перемещен в любое место возле центра действия вашей катсцены.
  • Вы можете задать сцену (Stage) для вашей катсцены, делая доступными привязанные к сцене действия для объектов.

Установка настроек катсцены делается в «object inspector» в группе свойств, помеченных как «Settings» (настройка). Самая важная из свойств – это area(область), которая позволяет вам разместить вашу катсцену в доступной локации. Мы уже имеем подходящую область, которая была создана в предыдущем учебнике – локация «great_outdoors».

По умолчанию, МАСТЕР объект и Camera 1 будут расположены в области с координатами 0,0,0. Вы захотите переместить камеру в более подходящее место внутри области, используя стандартный набор инструментов 3D controls для перемещения и управления «сектором обозрения» камеры. МАСТНР объект невидим, когда катсцена воспроизводится в игре, поэтому, совершенно неважно, где вы его расположите. Однако, есть некоторые настройки, которые зависят от места расположения МАСТЕР объекта – например, вы можете установить уровень детализации моделей так, чтобы LOD модели изменялся, в зависимости от того, насколько близко от МАСТЕР объекта она находится. Поэтому желательно разместить МАСТЕР объект где-нибудь возле эпицентра того места, где будет происходить действие катсцены.

Вы также можете задать сцену (уже созданную) для катсцены. Это необязательно, но настройка сцены позволяет использовать действие «Jump to Stage Place» (перейти к месту сцены) и действие «Jump to Stage Camera» (перейти к камере сцены), которые могут помочь сделать настройку катсцену намного проще если вы уже имеете хорошую сцену (stage), определенную в данной области (Area).

Добавление объектов и существ.

  • Объекты уже представлены в области, где установлена катсцена, но по умолчанию – неактивны. Вы должны активировать их для контроля над ними.
  • Другие объекты могут быть добавлены из палитры ресурсов как стандартные.

Все объекты, которые обычно присутствуют в области, (такие как существа, размещаемые предметы) будут видимы в редакторе катсцен, но все они первоначально будут помечены как «неактивные» (inactive). Это означает, что хотя они и будут видимы во время воспроизведения катсцены, они не будут контролируемы: они просто будут выполнять те же действия, которые выполняют в обычном окружении. В случае нашей области расположения лагеря, двое существ, которые расположены здесь в редаеторе области (Area editor), счастливый обитатель лагеря под именем «camp_happy» и сердитый обитатель под именем «camp_angry». Нам необходимо взять контроль над ними, чтобы сделать их активными участниками катсцены. Чтобы сделать их активными, щелкните правой кнопкой мыши по ним и в меню выберите «Activate objects»:

Cutscene activate object.png

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

Cutscene object activated.png

Мы активируем обоих обитателей лагеря и после этого они оба будут брать участие в диалоге катсцены.

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

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

Добавление игрока

  • Используйте свойство «Mapping Tag» актера, чтобы заставить игру заменить его (актера) другим объектом (таким как ИГРОК) на время воспроизведения.

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

Это делается путем добавления «модели, манекена» виртуального актера и затем присвоения свойству «Mapping Tag» актера тега «Player»

Cutscene dummy player.png

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

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

Добавление камер.

  • Не забудьте разрешить опцию «Safe Frame», когда привязываете окно вида к камере.
  • Используйте окно активной камеры «Active Camera» для предварительного просмотра катсцены.
  • Используйте видовой экран «User» чтобы увидеть позицию камеры сбоку. Это можно сделать, щелкнув правой кнопкой мыши по заголовку видового экрана и выбрав в меню опцию «Detach From Camera».

Мы можем снимать катсцену, если захотим, только одной камерой в виде одиночного статичного кадра, либо двигая камеру по кругу к новой позиции, если необходимо. В большинстве случаев, проще и более удобно просто добавить несколько разных камер, и просто использовать трек «Active Camera» в МАСТЕР объекте для переключения между ними.

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

Камеры добавляются щелчком правой кнопкой мыши по экрану вида и выбору команды «Insert -> Camera».

Cutscene insert camera.png

Вы можете расположить их, используя стандартную панель 3D controls. Для того, более простого получения настройки камеры с приемлемым ракурсом, хорошей методикой будет установление одного из экранов вида на отображение материала, поданного этой камерой. Вы можете затем переориентировать и переместить камеру, используя кнопки управления этой камерой, одновременно видя то изображение, которое видит камера в своем новом положении.

Мы также собираемся переименовать эти три камеры по этому случаю теми именами, которые будут напоминать нам, какое предназначение каждой камеры. Мы назовем их «Arrival Camera» (камера прибытия), «Happy Camera» (дружелюбная камера) и «Angry Camera» (сердитая камера). Нам нужно, чтобы вначале была активна «Arrival Camera», по этому, для этой роли можно использовать оригинальною камеру (ту, которая была установлена в самом начале). Она уже задана активной по умолчанию. Как переключаться с одной камеры на другую, мы рассмотрим в этом учебнике позднее.

Теперь мы имеем все основные реквизиты (объекты и предметы), необходимые нам для работы катсцены.

Добавление анимации актеру.

  • Задайте свойство «Pose» для актера, чтобы заставить его дышать и естественно ерзать, когда не действуют другие анимации.
  • Другие виды анимации задаются добавлением действия «Play Animation» (проиграть анимацию) к общему треку.
  • Имена файлов анимаций часто имеют мистический, непонятный смысл и их трудно найти.

Если вы проигрываете катсцену сейчас, то первое, на что вы скорее всего обратите внимание, это полная неподвижность актеров. Обычно, когда кто-то стоит на месте, он не стоит полностью неподвижно, он дышит, переминается с ноги на ногу, и так далее. Так как каждый актер, которого мы используем, будет нуждаться в этом, мы не хотим прикладывать много усилий для настройки каждого из них, и к счастью, мы и не должны. Каждый актер имеет свойство «Pose» (позирование) в «Object Inspector». Просто установите его позу в положение «Standing Neutral» (стоять спокойно), и актеры будут показывать эти стандартные, едва различимые движения, если никакие другие анимации в данный момент на них не наложены явно.

Cutscene set pose.png

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

Что бы сделать это, нам нужно добавить новый трек в шкале хронологии актера. Щелкните правой кнопкой мыши по актерской записи в шкале хронологии и в появившемся меню выберите команду «Add Track» (добавить трек):

Cutscene add track.png

Новый трек по умолчанию будет называться «New Track», и он будет пустым. Актеры в катсценах иногда будут иметь дюжину треков, управляющих их действиями, по этому, мы хотим переименовать этот трек на что-нибудь немного более информативное. В нашем случае, мы присвоим ему имя «Walk to fire». Что бы фактически актера заставить идти к огню, мы должны добавить ему действе "Play animation" (играть анимацию). Что бы сделать это, нужно правой кнопкой мыши щелкнуть на треке и в меню выбрать «Add Action» (добавить действие).

Cutscene add action.png

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

Изначально, действие не имеет анимации, привязанной к нему. Чтобы задать анимацию, выберите действие (action) на шкале хронологии и, затем, в Object Inspector перейти к свойству «Animation», и щелкнуть на кнопке (Ellipsis.png).

К сожалению, именно здесь есть тайны, покрытые мраком, поскольку имена разных файлов анимации часто очень неясны, и не все отображаются в стандартном списке. Вам придется методом проб и ошибок отсортировать их, чтобы найти именно тот, который вам нужен, но так как в ресурсах игры доступно несколько сотен видов анимации, то это занятие заберет у вас какое-то время. Смотрите animation list (перечень анимации) и Beerfish Excel Utilities для составления перечня многих из них.

Отметьте себе, что только одиночная анимация может проигрываться в любое время в данном треке. Однако, можно иметь несколько анимаций для персонажа, каждая из которых должна быть на разных треках. Это необходимо для того, чтобы было возможным сопрягать анимации вместе, как подробно описано вPlay_animation#Blending_Animations. Плавное сопряжение анимаций необходимо для того, чтобы ваши персонажи переходили «без швов» от одной анимации к другой, что является основной задачей для того, что бы движения персонажа выглядели естественно.

В нашем случае, анимация "mh.dg_f_5p" ("male human dialog forward five paces" - мужской человек диалог вперед 5 шагов), которая нам нужна, не отображается в стандартном перечне анимаций, доступном в сортировщике анимаций. Вам понадобится нажать кнопку «Next» в поле «Custom Animation» и найти ее в полном перечне всех анимационных ресурсов.

Cutscene finding an animation.png

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

Перемещение актера

Ключи позиции и ориентации.

  • Объекты будут перемещаться в течении времени благодаря установке «Key frames» (ключевых кадров) на своих треках позиции и ориентации.
  • Промежуточные кадры интерполируются между ключевыми кадрами.
  • Вы можете задать тип кривой между ключевыми кадрами с помощью свойства «transition out» для любого ключа.

Каждый объект катсцены имеет предопределенный трек «Position» (позиция) с тремя под-треками для его (объекта) X, Y, Z координат. Большинство объектов также имеют предопределенный трек «Orientation» (ориентация), с тремя подтеками для pitch (тонгаж, поворот вокруг оси X ), yaw (рыскание, поворот вокруг оси Y) и roll (крен – поворот вокруг оси Z ). Эти треки могут быть использованы, чтобы заставить объект перемещаться в пределах зоны катсцены.

Движения обрабатываются, задавая позицию и ориентацию объекта в определенные моменты времени, названные ключевыми кадрами, и затем – интерполяция промежуточных позиций и ориентаций. Чтобы задать ключевой кадр, кликните правой кнопкой мыши на актерской записи в шкале хронологии и выберите «key position» (позиция ключа). Это установит ключ для конкретной позиции и ориентации в конкретный момент времени на шкале хронологии. Вы можете, если хотите, установить ключ позиции и ориентации самостоятельно. Так как эта операций очень распространена, для нее есть очень удобный ярлык: «k» - вставляет ключ для текущей позиции выбранного объекта и ориентации, «p» - вставляет ключ для его позиции, «o» - вставляет ключ для его ориентации. Альтернатива – выберите объект и нажмите на команду «key» на панели инструментов: IconKey.png

Чтобы сгладить переходы между одной и другой анимацией - Выберите две анимации, которые вы совмещаете, клик правой кнопкой мыши, затем выберите "add transition". Это должно вам помочь.

Cutscene key selection.png

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

Cutscene key marker.png

Эти маркеры по существу означают, что «в этот конкретный момент времени «dummy_player» будет находиться в этом конкретном месте, и направлен лицом в этом конкретном направлении.»

Чтобы актер двигался все это время, вы должны задать два ключевых кадра: один – в начале движения, с актером в его стоячем положении, второй – в конце движения, с актером в его конечном положении. Вы можете задать, как движок катсцены интерполирует между двумя позициями, установив свойство «Transition Out» начального ключевого кадра либо «Bezier» (Безье - гладкая кривая), либо «Linear» (Линейный - прямой), либо «Step» (Шаг – резкий скачок из исходного положения в конечное). Для более подробной информации смотрите страницу curve editor (en) (редактор кривых).

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

Существует более простой способ для подгонки анимации, такой как вот этот механизм перемещения по сцене, называемый «GAD».

Использование GAD.

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

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

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

Чтобы разрешить GAD, выберите действие анимации и задайте «Play GAD» значение TRUE в object inspector. Если нет ключевых кадров, определенных для актера, редактор катсцены высветит предупреждение на этот счет, предлагая нам добавить ключи позиции и ориентации до того, как мы добавим GAD:

Cutscene gad warning.png

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

Как только мы задали ключевой кадр и установили опции «Play GAD» действия значение TRUE, вы увидите, что теперь актер двигается вперед так, как он и шагает, Это хорошо, но, так как мы стартовали движение из позиции, которая предполагалась как конечная, в результате актер пройдет прямо сквозь огонь костра. Вам нужно переместить актера назад так, что бы он стартовал подальше от огня.

Отметьте себе, что если вы уже задали ключевой кадр как описано в разделе выше, вам необходимо переустановить его для нового положения актера (или альтернатива – задать режим «update keys» с помощью инструмента IconUpdateKeys.png). В противном случае, в тот момент, когда анимация стартует, актер будет мгновенно перемещаться назад на то место, где вы задали ключевой кадр. Как только вы задали ключевой кадр для актера, перемещение актера в редакторе катсцены не изменит его позиции до тех пор, пока вы не переустановите ключевой кадр для новой позиции. Ключевые кадры и кривые интерполяции между позициями всегда имеют преоритет. ^ | ((РЕД: это требует более глубокого объяснения кем-то, кто знает как сделать это правильно, так как этот параграф звучит бестолково!!)

  • Свойство анимации "Extend Gad Beyond Action" сохраняет перемещения по окончанию анимации.

Другие свойства GAD автоматически заданы в наиболее подходящей по умолчанию форме, когда вы выбираете анимацию, но одно конкретное свойство необходимо упомянуть здесь на случай, если вы столкнетесь с проблемами при использовании его позднее; свойство "Extend Gad Beyond Action" (Расширение GAD за пределы действий). В случае этого, значение пешеходной анимации (Walk), будет по умолчанию TRUE. Это означает, что как только анимация закончится, перемещение, которое актер претерпел, в результате останется в силе – он будет стоять в конечной позиции, к которой он пришел. Если бы значение было FALSE, то как только анимация закончится, все перемещения актера, которые он приобрел в результате, будут отменены и он мгновенно переместится туда, откуда начал ходьбу. Если в какой-то момент в будущем вы обнаружите, что с актерами это происходит, это свойство является первым местом, где нужно искать ответ.

Осталась одна последняя деталь, которую мы настроим здесь. Шагающая анимация начинается с того, что игрок стоит в бездействии, а это не дает того впечатления, которое мы хотим передать. Игрок должен идти некоторое время до того, как камера включится. Мы могли бы задать, что бы анимация начала проигрываться на полпути, изменив свойство действия «Start Offset», но так как это происходит в самом начале шкалы хронологии, более простой способ – это просто выбрать анимационное действие и расположить его так, что бы оно начиналось на полсекунды раньше катсцены. Катсцена будет отображаться только с нулевой отметки, и ничего, что делается до этой отметки во времени, никогда не будет показано, поэтому начальные пол секунды анимационной ходьбы актера не будут видимы.

Перемещение камеры.

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

Выберите «камеру прибытия» (Arrival Camera) и откройте ее трек-лист. Она так же как и актеры имеет треки Позиции и Ориентации, и может иметь ключевые кадры, установленные точно также. При указателе времени, установленном на 0, переместите Камеру Прибытия так, чтобы ее обзор показывал, как вы хотите, чтобы кадр смотрелся в начале ролика. В нашем примере, мы собираемся установить ее так, чтобы она показывала игрока в центре кадра. Выделите камеру и нажмите «k», чтобы задать ключевой кадр для камеры.

Cutscene camera start position.png

Вы можете заметить, что трек поля зрения (FOV – Field Of View) также получает отметку «ключ». Мы не хотим изменять FOV камеры, поэтому можете проигнорировать его.)

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

Как только ваш кадр выставлен правильно, нажмите «k» для установки второго ключевого кадра.

Cutscene camera end position.png

Вы можете заметить, что окно вида User теперь показывает красные линии, прослеживающие траекторию выбранного объекта в пространстве (если нет, вы должны нажать на кнопку «show trajectories» IconShowTrajectory.png на панели инструментов). На протяжении первых пяти секунд проигрывания катсцены, Камера Прибытия будет плавно скользить вдоль красной линии и плавно поворачиваться вокруг своих осей, перемещаясь от первого ключового кадра ко второчу (если вместо этого, она мгновенно переместится из одной позиции, вам нужно кликнуть на инструменте "default curve mode" IconDefaultCurveMode.png и попробовать установить ключи снова, или изменить свойство "transition out" ключевого кадра для кривой Безье) .

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

Cutscene camera middle position unadjusted.png

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

Cutscene camera middle position adjusted.png

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

Переключение между камерами.

  • Трек МАСТЕР объекта определяет, какая из камер в настоящее время активна."

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

Трек, где активная камера меняется, привязан к МАСТЕР объекту. Переместите индикатор времени на шкале хронологии в точку времени, когда вы хотите переключить камеры, в данном случае 5,5 секунд, давая сцене полсекунды отобразить игрока, после того, как он пришел к месту остановки. Правый щелчок мыши на треке Активной Камеры и выбор команды «Add Action» (добавить действие). Единственная опция, доступная для этого трека – это действие «Switch Camera» (переключить камеру), поэтому добавляем эту опцию. В новых свойствах действия «Switch Camera» задайте переключение активной камеры на Happy Camera (счастливую камеру).

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

Cutscene switch active camera.png

Добавление диалога.

  • Строки диалога могут быть вставлены из уже существующего разговорного ресурса. Для удобства, создайте новый разговор, чтобы вставить диалог для катсцены.
  • Титры, озвучка и лицевая анимация все вложено в каждую строку.
  • Если вы потом начнете редактировать разговор, изменения будут отражаться в катсцене. Не забудьте заново сгенерировать VO и FaceFX в редакторе разговора.

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

В данном Тулсете имеется набор инструментов, разработанный для обработки всего этого – это редактор розговора. Актеру в катсцене может быть дано действие «Speak Line» (озвучить строку), которое заставляет его произнести строку с существующего диалога, со всемя тремя компонентами, собранными вместе в актерской игре автоматически.

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

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

Cutscene conversation.png

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

Как только вы создали диалог, возвращайтесь к редактору катсцены и добавьте новый трек для актера «camp_happy». Переименуйте этот трек на что-нибудь информативное, такое как «Dialogue» (диалог). Переместите маркер шкалы хронологии в позицию, откуда вы хотите, чтобы ваш актер начал разговор и добавьте новое действие «Speak Line».

В свойствах действия Speak Line, задайте свойство «Source Conversation» для ресурса разговора, который вы только что создали. Затем, в свойствах «Source Line» выберите конкретную строку, которую вы хотите, чтобы читал ваш актер (оно будет иметь выпадающее меню со всеми строками разговоров ресурса в нем).

Это все, что вам необходимо, чтобы заставить актера говорить. Вы можете добавить еще одну деталь этот случай – прослеживание направления головы. Это действие, которое заставляет актера поворачивать свою голову к конкретной цели. Обычно – к персоне, с которой он ведет беседу, или которая обращается к нему. Это действие добавляется как его собственное, поэтому создайте еще один трек и добавьте ему действие «Headtracking» и цель – игрока (player). В данном случае, мы хотим, чтобы дружелюбный обитатель лагеря повернул свою голову в направлении игрока перед тем, как заговорить.

Добавление других деталей

  • Действие «Headtracking» заставляет актера смотреть на другой объект катсцены.
  • Вы можете иметь более одного действия на трек, если они не пересекаются.

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

Чтобы добавить катсцене немного больше анимации, добавим еще один трек для camp_happy (дружелюбного) с анимационным действием (mh.dg_hnd_salute_01, приветствие) на протяжении его разговорной линии. С этой анимацией проще иметь дело чем с анимацией ходьбы, потому что она не перемещает актера, нет необходимости в определении ключей позиции или беспокоиться о разрешении GAD.

Мы зададим направление взгляда для NPC camp_angry (сердитому) так, чтобы она повернула голову в направлении NPC camp_happy (дружелюбного), пока тот говорит. Когда мы в дальнейшем переключим камеры, чтобы показать ее линию диалога, она уже будет смотреть в его направлении.

Для следующей строки разговора NPC camp_happy, мы сделаем изменение «headtraking» (направление взгляда/головы) видимым во время показа его (NPC) крупным планом так, чтобы игрок увидел, как внимание актера camp_happy переключается на NPC camp_angry (сердитого). Отметьте себе, что мы можем повторно использовать существующие треки «Dialogue» и «Headtraking» для этого актера. Нам не нужно создавать новый трек для каждого одиночного действия, которое выполняет актер. До тех пор, пока продолжительность действий на трек не перекрываются, они могут мирно сосуществовать.

Наконец, после последней разговорной строки обитателя лагеря camp_angry, мы зададим для него headtraking (направление головы) так, чтобы он посмотрел обратно на игрока. Мы интегрируем эту катсцену в разговор в тот момент, когда он собирается произнести следующее слово, так что это хороший способ указать, что фокус разговора теперь перешел к игроку.

Как только мы закончили разработку катсцены, мы знаем, какова должна быть ее продолжительность. Теперь вы можете перейти к свойствам разговоров в Object Inspector и задать продолжительность катсцены такую, какую вы пожелаете.

Окончательно шкала хронологии будет иметь такой вид:

Cutscene finished timeline.png

Как протестировать катсцену

Во вкладке триггеры создаете триггер. Потом устанавливаете его на локацию. Далее пишете скрипт

#include "log_h" 
#include "log_h"
#include "utility_h"
#include "wrappers_h"
#include "events_h"
void main()
{
event ev = GetCurrentEvent();
int nEventType = GetEventType(ev);
Log_Events("", ev);
switch(nEventType) {
case EVENT_TYPE_ENTER:
{
object oHero = GetHero();
DisplayFloatyMessage(oHero, "Test", FLOATY_MESSAGE, 16777215, 2.f);
CS_LoadCutscene(R"1catscene.cut");
PlayCutscene();
break;
}
}
}

Для триггера нужно сделать скрипт, а название этого скрипта (справа в pallete window) указать в атрибутах триггера (attributes). Скрипт запускает "1catscene.cut" (файл катсцены)

CS_LoadCutscene(R"1catscene.cut");

Полезности

Здесь мы приведём кое-какие советы, которые позволят вам сэкономить время и нервы при создании роликов.

- Head tracking (слежение) часто используется, чтобы заставить одного актёра посмотреть на другого либо на какой-либо видимый предмет в ролике. Однако вы можете манипулировать глазами актёра, заставляя его смотреть и на невидимые объекты. Вы можете заставить актёра смотреть то на один невидимый предмет, то на другой, а можете и передвигать отслеживаемый невидимый предмет, заставляя актёра поворачивать голову и смотреть на что-либо независимо от других видимых актёров или предметов.

- Полезно давать используемым камерам осмысленные имена. Можно назвать камеру именем актёра или предмета, на который смотрит камера, например cam_actor_1, или указать на какую-либо характеристику камеры, наппример close-up (крупным планом) или wide-angle (широкоугольная).

- Если вы передвигаете камеру вокруг объекта (комнаты) наблюдая за группой актёров или предметов, может появиться проблема с внезапным вращением камеры в другом направлении. Заставить камеру двигаться так, как нужно вам, можно добавляя или вычитая 360 градусов позиции/ориентации.

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

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

- Обратите внимание на то, что при перемещении камеры с использованием ключевых кадров (key frames) необходимо правильно установить параметр transition out, который устанавливает каким образом происходит переход к следующей позиции камеры. По умолчанию этот параметр установлен в Step (шаговый переход), то есть рывком, в то время как Bezier и Linear заставят камеру двигаться плавно. Таким образом, если вам не нравится, как двигается камера, проверьте это параметр.

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

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

- После размещения анимации на дорожке вы можете ускорить её, укоротив её отображение на дорожке, либо наоборот замедлить, соответственно удлинив её отображение на дорожке

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

- Если вы обнаружите, что актер идёт по любой поверхности (даже по такой, например, как вода), в то время, как он должен двигаться только по земле, вы можете установить для локации, на которой базируется ролик, параметр items follow surface, тогда актёр сможет ходить только по земле и сможет залезть в воду. Если же вы хотите, чтобы актёр или предмет не следовали по вертикали за землёй, а, например, плыли частично погружёнными в воду, то придётся регулировать вертикальное положение актёра или лодки по оси z.

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



Язык: English  • русский