Алгоритм проверки правильности ввода пароля приведен на рис. 24.22. Для его реализации придется использовать дополнительные суррогатные PGC.
Рис. 24.22. Алгоритм ввода пароля.
Нажатие зрителя на любую кнопку, отличную от 7, 6 или 1, приводит к занесению в регистр GPRM2 нулевого значения.
Нажатие зрителя на кнопку 7 после любой комбинации нажатия кнопок меню приводит к занесению в регистр GPRM2 значения 9.
Если зритель сразу после этого нажал на кнопку 6, то система сравнит содержимое регистра GPRM2 с 9 и, если они равны, добавит к значению GPRM2 число 7. При этом в регистре будет храниться уже число 16. Если они не равны, то система занесет в GPRM2 нулевое значение.
Если сразу после этого зритель нажмет кнопку 1, то система сравнит содержимое регистра GPRM2 с 16 и, если они равны, добавит к значению GPRM2 число 3, так что в регистре будет храниться уже число 19. Если они не равны, то система занесет в GPRM2 нулевое значение.
И наконец, если сразу после этого зритель нажмет кнопку Ввод, то система сравнит содержимое регистра GPRM2 с числом 19. В этом случае система считает, что пароль введен правильно и переключается на ракурс 3. Если же значения не равны, то система считает, что пароль введен неправильно, и переключается на ракурс 2.
Сначала надо задать команды обнуления GPRM2 при нажатии на кнопки 0, 2, 3, 4, 5, 8 и 9. Для этого следует дважды щелкнуть на флаге Btns, после чего откроется окно моделирования на закладке Button Commands (Команды кнопок). При этом будет показан список команд для всех кнопок нашего меню. Все они будут иметь значение Nop (Not operation). Необходимые команды следует задать.
Также надо создать две PGC, выполняющие роль пустых болванок. Потребуется найти самый короткий видеофрагмент, зарегистрировать его в программе Scenarist, создать дорожки, после чего переместить их на титульную папку.
Они не будут воспроизводиться никогда, так как на них будут навешены Pre-команды, которые выполняются всегда до момента выполнения самой PGC. Внешний вид сценария с дополнительными PGC приведен на рис. 24.23.
Рис. 24.23. Сценарий фильма с доступом по паролю.
Следует предусмотреть и регистр GPRM для хранения информации о номере отображаемого ракурса. Для этого будет выделен регистр GPRM5. Также надо задать команду присвоения этому регистру единичного значения (первый ракурс) в предваряющей PGC. Надо присвоить ей флаг Entry, так как она должна выполняться первой в титульной папке. Затем нужно задать команды обнуления регистра GPRM2 и команду перехода к PGC нашего меню, как показано на рис. 24.24.
Рис. 24.24. Pre-команды трех PGC.
В качестве Pre-команд PGC меню задается указание номера воспроизводимого ракурса.
В качестве Pre-команд последующей суррогатной PGC, функции которой может выполнять тот же материал, который использован для первой суррогатной PGC, задается проверка регистра GPRM2 на равенство с значением 19 и, если условие выполняется, то в регистр GPRM5 заносится значение 3, которое указывает номер ракурса, который должен отображаться при правильном вводе пароля. Если условие не выполняется, то в регистр заносится значение 2, соответствующее ракурсу, содержащему фразу «Неверный пароль!!!», после чего осуществляется переход на PGC меню.
На кнопку, соответствующую цифре 7, навешивается команда занесения в регистр GPRM2 значения 9, которое уже должно быть занесено в регистр GPRM3. На кнопку, соответствующую цифре 6, навешивается команда сравнения регистра GPRM2 со значением 9. Если условие верно, то в регистр GPRM2 заносится число 16. Ту же команду надо использовать и для кнопки, соответствующей в меню цифре 1.
Также надо зациклить все ячейки меню, кроме последней, на блок Cell Block, как показано на рис. 24.25. От последней ячейки нужно провести связь к фильму.
Рис. 24.25. Команды кнопок PGC меню.
Осталось лишь протестировать пример. На самом деле программа Scenarist предоставляет немало возможностей создания меню с вводом пароля. В этом разделе был рассмотрен только один из вариантов.
Итак, вы увидели, сколь многообразно может быть использование меню в сценариях DVD-дисков и насколько сложными могут быть многоуровневые меню.
Глава 25
Воспроизведение фильма разными способами
Просмотр только определенных сцен фильма
Ранее уже рассматривались примеры фильмов, в которых использовались сцены. Однако недостаток предыдущих примеров заключался в том, что, попав в какую-либо из сцен, зритель мог вернуться в меню только после просмотра оставшейся части фильма, что иногда не очень удобно.
В этой главе будет рассмотрен вариант создания фильма, который можно просмотреть целиком либо просмотреть только одну из его сцен.
Следует использовать фильм из предыдущих примеров, который уже был разбит на сцены. Также потребуется два меню. Потребуется одно главное меню верхнего уровня, располагающееся в пространстве видеоменеджера, а второе меню будет корневым. Именно в нем будет осуществляться выбор сцен. Нужно восстановить пример с использованием меню PTT, для которого на этот раз не будет задаваться тип PTT. Должен получиться сценарий, внешний вид которого показан на рис. 25.1. В этом сценарии из главного меню зритель может просмотреть весь фильм целиком, а из корневого меню – только его фрагменты (сцены). Как уже говорилось ранее, недостаток такого способа заключается в том, что, попав в фильм, например, на второй сцене, зритель будет вынужден просмотреть фильм до конца, включая третью и четвертую сцены.
Рис. 25.1. Сценарий с фильмом, разбитым на сцены.
Попробуем исправить этот недостаток.
Сначала снова придется заняться программированием. Следует учитывать состояние фильма в регистре GPRM0 и, в зависимости от значения в этом регистре, переходить от ячейки каждой воспроизводимой сцены либо в меню, либо к следующей ячейке.
Изначально в регистрах GPRM хранятся нулевые значения, но потребуется добавить команду Pre в PGC главного (титульного) меню, которая будет заносить в регистр GPRM0 значение 1, которое будет свидетельствовать, что зритель смотрит фильм целиком.
В PGC корневого меню надо добавить команду Pre, в которой значение 2 будет заноситься в регистр GPRM0, что будет соответствовать просмотру только выбранной сцены.
Также потребуется создать связь флага Post PGC фильма с главным меню. Помимо этого надо добавить команды к ячейкам PGC фильма. Естественно, команды, которые будут добавлены к ячейкам, будут командами условного перехода. Если регистр GPRM0 будет содержать значение 2, то команда перехода должна выполняться. В противном случае никакая команда в ячейке не выполняется. Такие команды надо добавлять с переходом по команде Post Command of Current PGC, то есть на флаг Post PGC фильма. Внешний вид заданных команд приведен на рис. 25.2.
Рис. 25.2. Команды условного перехода на ячейках PGC.
Так как флаг Post PGC связан с главным меню, то при переходе на конец PGC автоматически произойдет возврат в это меню.
Этот пример надо протестировать. Можно увидеть, что команды перехода исправно выполняются при вызове тех или иных сцен из корневого меню, а в случае запуска фильма на воспроизведение из главного меню зритель просматривает фильм целиком.