4.7.3. Смена музыкального сопровождения в меню при перемещении по кнопкам
Данный пример расскажет, как при перемещении по кнопкам меню можно изменять музыкальное сопровождение для каждой кнопки. Вместо музыки, кстати, вы можете записать свои комментарии к каждой главе и таким образом зритель, посмотрев меню и послушав ваши комментарии, может получить тем самым подробную информацию о вашем фильме. Разумеется, правильнее всего использовать такие приемы в меню эпизодов.
Идея способа состоит в том, что вместо перемещения от одной реальной кнопки к другой происходит перемещение от реальной кнопки к невидимой, по которой происходит переход к специально созданной пустой PGC, на Pre которой и выполняются все необходимые действия с последующим возвратом к нужной кнопке меню. Это краткое описание, сейчас мы перейдем к более подробному рассмотрению этого способа.
Вначале создадим на subpicture меню эпизодов нашего тестового проекта фантомные кнопки, которые зритель видеть не будет. Мы нарисуем их красного цвета в виде небольших квадратиков так, как показано на рисунке:
Размеры невидимых кнопок, их форма и т.п. совершенно не важны. Цвет тоже роли не играет, но с одним условием - в меню не должно быть видимых кнопок того же цвета. В нашем примере мы выбрали красный цвет. Изготовим такие же subpicture для двух других частей меню эпизодов.
Введем заново в Track Editor собственно сами меню эпизодов (удалив их предварительно сначала из Scenario Editor, затем из Track Editor), так как наличие звуковой дорожки требует, чтобы меню были введены как slide show, к still menu звук добавить нельзя. Введем и новые subpicture в проект. Также добавим по 4 звуковых дорожки к каждому меню в Track Editor. Разумеется, звуковые треки тоже надо предварительно ввести в проект. Не забудьте "растянуть" меню в Track Editor до окончания нужной вам звуковой дорожки, "растянув" также subpicture.
Примечание: в реальных проектах мы рекомендуем всегда использовать motion menu, если у меню будет звуковое сопровождение.
Теперь нужно правильно проложить связи между кнопками, как показано на рисунке (мы подробно расскажем только о первом меню эпизодов, остальные делаются точно также):
Примечание: В параметре Display пока установлена 100% видимость для исходного красного цвета. После выделения кнопок этот параметр надо убрать в 0.
Идея расстановки связей здесь проста - нам надо "перехватывать" невидимой кнопкой любое обращение к кнопке видимой. В этом примере кнопка 8 "перехватывает обращение к реальной кнопке "Часть 3", кнопка 9 "перехватывает обращение к реальной кнопке "Часть 1", кнопка 10 "перехватывает обращение к реальной кнопке "Часть 4", кнопка 11 "перехватывает обращение к реальной кнопке "Часть 2". Надо учесть, что при прокладке связи учитывается только действия инструмента прокладки, т.е. если вы прокладываете все связи слева направо, то это означает, что вы перейдете по ней при нажатии кнопки стрелка влево на пульте ДУ плеера. Как эта связь будет зрительно нарисована в Scenarist, никакого значения не имеет.
Не забудьте установить параметр Forced Selected Button в значение Nonexistent, как показано на рисунке, иначе вне зависимости от наших команд, всегда будет выбираться определенная кнопка.
Присваиваем каждой из невидимых кнопок атрибут Auto Action:
Проделаем аналогичные операции для двух других меню эпизодов нашего учебного проекта (или просто скопируйте Highlight первого меню на остальные). Теперь надо создать отдельный Title для нашего меню, так как в домене Language нельзя иметь PGC с несколькими звуковыми дорожками, как показано на рисунке:
После этого вы обнаружите в Scenario Editor новый Title:
Далее "навешиваем" все наши меню эпизодов как отдельные PGC на новый Title.
Теперь соединяем каждую из невидимых кнопок со своей же собственной PGC. Таким образом, при попадании на любую из невидимых кнопок, плеер автоматически перейдет к Pre PGC текущего меню. Теперь напишем последовательность команд, которая будет выполнять нужные нам действия, на Pre PGC первого меню эпизодов.
1:Mov GPRM0, 9216
2:if ( GPRM0 == SPRM8 ) SetSTN audio=1
3:if ( GPRM0 == SPRM8 ) LinkPGN PTTMenu1-t-scn-pg, button=1
4:Mov GPRM0, 11264
5:if ( GPRM0 == SPRM8 ) SetSTN audio=2
6:if ( GPRM0 == SPRM8 ) LinkPGN PTTMenu1-t-scn-pg, button=2
7:Mov GPRM0, 8192
8:if ( GPRM0 == SPRM8 ) SetSTN audio=3
9:if ( GPRM0 == SPRM8 ) LinkPGN PTTMenu1-t-scn-pg, button=3
10:Mov GPRM0, 10240
11:if ( GPRM0 == SPRM8 ) SetSTN audio=4
12:if ( GPRM0 == SPRM8 ) LinkPGN PTTMenu1-t-scn-pg, button=4
13:SetSTN audio=1
14:SetHL_BTNN HL_BTNN=1
Рассмотрим подробно набор команд только для одной кнопки (9 невидимой и первой видимой), поскольку наборы команд для каждой кнопки по сути одинаковы.
Mov GPRM0, 9216 - по этой команде (Set GPRM) мы записываем в регистр GPRM0 номер кнопки. Почему 9216? Потому, что DVD плеер в регистр SPRM8, в котором хранится номер последней выбранной кнопки, записывает номер кнопки, умноженный на 1024, т.е. 8-ая кнопка будет запомнена с кодом 9216, а 11 кнопка, например, с кодом 11264.
if ( GPRM0 == SPRM8 ) SetSTN audio=1 - по этой команде (Set Angle/Audio/Sub-picture)мы устанавливаем для воспроизведения первую звуковую дорожку в том и только в том случае, если зритель выбрал переход к кнопке "Часть 1" (первой) и тем самым сработала 8-ая невидимая кнопка.
if ( GPRM0 == SPRM8 ) LinkPGN PTTMenu1-t-scn-pg, button=1 - по этой команде (Jump to Program), опять же в том и только в том случае, если зритель выбрал переход к кнопке "Часть 1" (первой) и тем самым сработала 8-ая невидимая кнопка, мы переходим к нашему же меню эпизодов.
Последние команды (13 и 14) предназначены для тех случаев, когда мы попадаем в данное меню эпизодов извне, из другого меню эпизодов по кнопкам "Вперед" или "Назад" или же из главного (root) меню. Если же меню будет просто крутиться в цикле, то будет одна и та же кнопка и музыка к ней соответственно, но для этого не забудьте "замкнуть" воспроизведение меню через команду cell. Что еще необходимо - на Pre основного фильма следует обязательно "повесить" команду установки первой звуковой дорожки. Дело в том, что если хотя бы в одном Title есть несколько дорожек, то DVD плеер будет считать, что у каждого Title в этом VTS тоже по 4 дорожки. Поэтому, если вы ушли в фильм из меню при включенной 4-ой звуковой дорожке, то звука фильма вы не услышите - так четвертая и несуществующая (для фильма) дорожка и останется включенной.
При смене кнопки и звуковой дорожки кнопки нашего тестового проекта на мгновение исчезнут, но надо понимать, что это происходит только из-за того, что в нашем проекте кнопки являются единственными картинками в меню, т.е. меню состоит фактически из subpicture. В реальных меню такого эффекта не будет.
Готовый проект вы можете переписать отсюда.
Пример, рассмотренный выше легок в том смысле, что вы создаете физически один клип или одно still show меню и только меняете звуковые дорожки. Минусы у такого способа таковы:
-
Для зрителя на индикаторе DVD плеера будет та же картина, что и при просмотре обычного видео, поскольку меню эпизодов размещается не в домене Language. Строго говоря, следует через UOP запретить возможность перемотки клипов такого меню, остановки, переключения звуковой дорожки и т.п.
-
PGC в Title с меню надо перемещать к началу DVD диска, ближе к Root menu, как показано на рисунке:
в противном случае переход от Root menu к меню эпизодов будет с паузой, которая тем больше, чем дальше меню эпизодов от Root menu и Title menu. Этот способ неудобен в том случае, если диск, возможно, будет проигрываться на компьютере - действия мыши не эквивалентны действиям по нажатию кнопок стрелок пульта ДУ.
Есть другой способ, который в основном применяется на коммерческих DVD-Video дисках. Смысл его в том, что под каждую кнопку создается свой видеоклип со своей звуковой дорожкой. Конечно, клипы эти, как правило, короткие, 30-50 секунд, но на 3 меню эпизодов в каждом из которых по 4 выбора сцен, как нетрудно догадаться, потребуется 16 клипов. Зато все эти клипы можно разместить в домене Language и меню получится во-первых, в строгом соответствии с канонами, во-вторых, можно и видеокартинку меню менять вместе со звуком. Мы не будем подробно останавливаться на таком проекте, поскольку он более трудоемок в изготовлении, но требует меньших затрат на программирование. Желающие могут переписать наш готовый проект с одним меню эпизодов, сделанным таким образом и посмотреть как он работает.