Профессиональный Blu-ray авторинг: ничего сложного

Профессиональный Blu-ray авторинг: ничего сложного

Показано с 1 по 4 из 4

  1. #1

    Профессиональный Blu-ray авторинг: ничего сложного

    Обсуждение авторинга ведём в теме Работаем и пересобираем в Scenarist BD и UHD

    Вступление.

    В нашей чудесной стране самым популярным инструментом реавторинга Blu-ray дисков является весьма дорогостоящий отраслевой стандарт Sonic Scenarist BD. Предназначен он для профессионалов и простому пользователю нелегко в нём разобраться. В связи с этим появилось неплохое руководство С. Шувалова. Но беда в том что уважаемый Сергей, по его же признанию, не занимался авторингом DVD в Scenarist`e и ему пришлось осваивать всё с нуля, базируясь на референсном проекте Sonic. Тот в свою очередь сам по себе страдает излишествами, да и создавался ещё во времена версии 4.0, когда плееры были откровенно слабыми. В результате проект, который предлагает Сергей, мягко говоря, раздут многочисленными ненужными командами и вызывает недоумение.
    Настоящим имею предложить более осмысленные способы авторинга, довольствующиеся необходимым минимумом. Своего рода, дзен. И попытаюсь объяснить неопытным пользователям что есть что.

    Сначала разберёмся с BD-структурой как таковой и её разновидностями, нам это пригодится при работе с программами.
    Если что и называть матрёшкой, так это BD-структуру. В основе её (как и в сонове DVD-структуры) лежат элементарные потоки видео, аудио, закодированная графика и текст (файлы *.pes, *.ies). Всё это мультиплексируется в клипы Clip (*.m2ts) и является "фактическим" (actual) содержимым диска, они содержатся в папке STREAM, а информация о содержании клипов в папке CLIPINF. В клипе могут быть и все три вида элементарных потоков или только один из них. Отдельным клипом может быть интерактивная графика (закодированная в потоковые данные, файлы *.ies), текстовые субтитры или презентационная графика. Клипы в свою очередь вкладываются в плейлисты Playlist. В отличии от DVD, плейлист является не термином некоторых программ авторинга, а неотъемлемой частью BD, даже если на диске всего один клип фильма он всё равно должен быть в плейлисте. В плейлисте могут находится несколько разных клипов, но с одинаковыми параметрами или один и тот же клип вложенный в него несколько раз, так же плейлист содержит информацию об интерактивной графике и маркерах глав, углах зрения, PiP и т.п. Плейлисты находятся в папке PLAYLIST. Плейлист закрепляется за Movie Object, фильм-обьектом. В одном Movie Object может быть несклолько плейлистов. Так же в нём содержится навигационная информация. Информация о Movie Object содержится в файле MovieObject.bdmv. Movie Object закреплён за заголовком Title. Заголовки объединяются в домен видеозаголовков. Кроме того существует ещё два домена содержащие по одному специализированному заголовку: First Play и Total Menu.
    First Play - это стартовая точка диска, расширенная до видеозаголовка, здесь находятся обычно разные предупреждения, заставки, анонсы и т.п.
    Total Menu - вместилище главного меню диска.
    Оба эти заголовка могут ничего не содержать но сами они должны быть обязательно.
    Информация о точках входа во все заголовки содержится в индексной таблице, это уже вершина BD сценария. Индексная таблица и информация о видеозаголовках содержится в файле index.bdmv.
    Всё вышеперечисленное - базовый режим, Blu-ray Disc Movie или BDMV.

    BDMV спецификация включает в себя два режима HDMV (High Definision Movie) и BD-J (Blu-ray Disc Java). HDMV в большинстве случаев именуют как ВDMV, что не совсем верно, но мы в дальнейшем будем пользоваться именно этим распространённым термином.

    Давайте сравним BDMV и BD-J.

    Описание BDMV-меню сродни PHP и соответственно работает так же как и Web-графика т.е. графический документ поделён на прямоугольные области (слайсы, а в BD-терминологии - кнопки) часть которых остаётся неизменной, а часть имеет многослойную структуру и каждый слой вызывается на верх, в зависимости от состояния кнопки,

    по этой причине кнопки не могут частично или полностью перекрывать друг-друга и при этом одновременно демонстрироваться на экране, так мы имеем три состояния кнопки: нормальное, выделенное, активное;

    и так же есть возможность накладывать кнопки друг на друга, но в состоянии переключателя, когда видна только одна из них.
    Далее, поскольку мы имеем дело с Web, палитра так же весьма ограничена - 256 цветов (но всё равно это в 64 раза больше чем на DVD).
    Размер виртуального буфера загрузки страницы BDMV небольшой - 16 Mb. Буфер загрузки текущей страницы субтитров - 4 Mb
    Следует подчеркнуть, что интерактивная и презентационная (субтитры) графика не содержатся на диске в виде привычных нам графических форматов, она закодирована в потоковую информацию, по этому размер графических файлов которые подготавливают для кодирования не имеет отношения к размеру получаемых потоковых данных и на него не нужно ориентироваться.

    BD-J или Blu-ray-Java это процедурная среда на основе языка Java, расширяющая возможности BD. Авторинг ведётся на основе BDMV, но с применением BD-Java-объектов, BDJO. В этом случае каждая кнопка, графический фон, а так же их анимация является Java-приложением, а навигационные команды задаются с помощью языка Java.
    BD-J не имеет жёстких декларированных ограничений присущих BDMV - это полностью программируемая среда. В ней используется Xlet - специализированный Java-объект, помещённый в BDMV структуру, в виде BDJO и исполнительного файла *.jar, перед плеером стоит задача воспроизводить этот объект, выполнять поступающие из него команды с использованием контента в jar-файле. Java-объектов может быть один или несколько. (Java-объекты содержатся в папке BDJO, а Java-контент в папке JAR)
    Применяемая в BD-J графика имеет полноцветную (true colors, millions of colors) палитру и, поскольку не является кнопками в привычном нам понимании, имеет возможность перекрывать друг друга и свободно передвигаться по экрану (В случае BD-J, графика тоже фактическое содержимое, находящееся в папке JAR).

    Поддерживает всё это виртуальный буфер размером 45,5 Mb, т.е. почти в три раза больше чем BDMV. В новой версии BD-J буфер расширили до 61,5 Mb, и этот объём касается только части контента демонстрируемой в данный момент на экране.
    Эти свойства Java открывает поистине безграничные возможности программирования BD: в меню можно увидеть настоящие акробатические номера в исполнении кнопок; в фильме, всплывающие во время паузы, линейки с указанием текущих времени и главы; вывернутое на изнанку поп-ап меню когда графика занимает весь экран, а фильм демонстрируется как PiP...
    Но возможности BD-J пока осваиваются слабо - всему виной ограничения BD-плееров. И основной козырь - это использование функции BD-Live - выход в интернет на сайт фильма, где размещены допматериалы, игры и другой мультимедиа контент. (Ну понятно BD-Live в нашем деле не пригодится).
    Впечатляет? Если нет, то вы просто не видели это в действии. Но, я думаю, вы представляете сколько это работы - просто запрограммировать всю эту феерию.
    В Scenarist BD есть набор утилит для создания Java-приложений. Однако авторинг BD-J - трудоёмкий процесс и до появления такого инструмента как Blu-Disc Studio представлял собой задачу для целой команды дизайнеров и программистов по этому в Голливудских дисках огромное количество BDJO и сложная гибридная навигация, объединяющая Java и BDMV принципы авторинга.
    Но мы при помощи некоторых нехитрых приёмов сможем обмануть границы HDMV спецификации и добиться весьма впечатляющих результатов.

    Итак, если всяк сюда входящий не оставил надежду, начнём.
    Для начала представим структуру нашего будущего BD.
    При запуске диска проигрывается заставка с логотипом, за ним воспроизводится зацикленное главное меню, в нём имеется интерактивная графика с опциями просмотра фильма, выбора эпизодов, настройки дорожек аудио и субтитров и доступа к трём бонусам. Далее фильм, с интерактивной графикой, имеющей почти те же опции, но вместо просмотра будет опция возврата в меню, по окончании фильма снова воспроизводится главное меню. В клипе фильма будет содержаться две аудиодорожки и дорожка субтитров. В клипах бонусов будет по два аудиопотока и потоку субтитров.
    Теперь нужно выяснить чем и из чего мы будем творить свой BD.
    На поверку Sonic Scenarist это целый программный комплекс, но нам потребуется только часть его :
    Scenarist BD - сборщик
    MUI Generator - генератор виртуальных файлов, с которыми и работает Scenarist
    Scenarist Designer PS - плагин к Adobe Photoshop для рендеринга интерактивной графики (устанавливается отдельно)
    StillImageEncoder - кодировщик слайдшоу
    Так же могут понадобиться:
    Scenarist QC - плеер и отладчик (устанавливается отдельно)
    SineVision - кодировщик (устанавливается отдельно)
    ArcSoft TotalMedia Theatre - альтернативный плеер
    IG Editor - альтернативный кодировщик графики
    В качестве кодировщика видео и аудио может использоваться любой профессиональный видеоредактор\кодер, но, скорее всего, совместно с AVC Corrector`ом.
    Почти весь этот пакет нормально ставится и работает на Windows XP, Vista, Se7en и 8; 32/64-битные версии. К тому же занимает всего 280Mb.
    Исключение составляет необходимый Designer PS, его версия 2.61 работает с Photoshop CS2, CS3 и CS4; но 64-битный вариант не работает на 64-битных системах(!?). Производитель никак это не прокомментировал. Но не будем унывать есть простой выход - метод Сергея Шувалова по установке 32-битного дизайнера на 64-битную систему с установленым 32-битным Photoshop`ом любой версии начиная с CS2. К тому же на нашем форуме есть версия Designer PS 3.0 для Photoshop CC 2014 x64.





    Установили? Пойдём дальше.

    Подготовка материала.

    Форматов видео указанных в спецификации BD всего три: VC-1, MPEG-2 и наиболее часто встречаемый H.264 или AVC.
    VC-1 - видеокодек Microsoft, в связи с чем является официальным кодеком для игровой приставки Xbox 360. Единственное достоинство - поддержка работы с чересстрочной разверткой без преобразования в прогрессивную. Используется крайне редко, его рассматривать не будем.
    MPEG-2 - заслуженный формат разработанный ещё для DVD. Бродкастовый стандарт, именно его систему мультиплексирования (m2ts) используют в BD. Имеет меньшую степень сжатия при том же качестве по сравнению с двумя своими соседями. Возможен рендеринг без перекодирования.
    H.264 - очень популярный, перспективный формат обладает способностью кодировать лучшее качество при высокой степени сжатия.
    Форматов аудио значительно больше:
    DTS®, DTS-HD High Resolution Audio, DTS-HD Master Audio
    Dolby® Digital, Dolby Digital Plus, Dolby TrueHD
    Linear PCM
    48kHz, 96kHz, and 192kHz; 16 bits, 20 bits, 24 bits per sample; 2, 4, 6 or 8 channels
    Систему разрешений и частоты кадров в BD спецификации можно увидеть в уже известной многим таблице

    Кое что об аудио в этой таблице

    При использовании MPEG-2 проблем не возникает. А вот с H.264 начинаются непонятки. Даже при, казалось бы, полном соблюдении спецификации, выходные файлы некоторых видеоредакторов и кодировщиков не принимаются Scenarist`ом (и не только им), другие программы могут принять эти файлы но с учётом перекодировки. Вспоминая что TMPGEnc перекодирует AVC в MPEG, хочется спросить что же это за формат такой H.264? Он не только более совершенный но и в некоторых отношениях революционный. Оказывается, в нём нет таймкода! Вместо этого используется, так называемый, штамп времени, Time Stamp - в данном случае порядковый счёт кадров или сэмплов от некоей исходной точки. И вот, многие видеоредакторы по старой памяти (в DVD отсчёт времени фильма мог начинаться и с 1 часа и с 3-х) распологают эту точку иногда задолго до начала фильма, а в некоторых тяжёлых случаях счёт ведётся не покадрово, а посэмплово (?!...). Кроме того не декларированное описание прямых и возвратных кадров в GOP привело к тому что кодеры не всегда корректно их создают. Это и становится камнем преткновения, поскольку в BD это и недопустимо. Возможно что вы пользуетесь именно таким кодировщиком, но это легко исправить с помощью AVC Corrector`a.
    Итак экспорт видеоматериала должен вестись без мультиплексора, в виде элементарных потоков. Желательно сразу наметить расположение глав - в сценаристе на глаз это делать затруднительно. Мало того если ваша монтажка может начинать GOP (ставить I-picture) в местах обозначенных маркерами, поставьте такие маркеры (к примеру Premiere Pro начинает GOP в местах установки Encore Marker).
    Если вы воспользовались MPEG то пропускаете следующий абзац, если H.264 то... Меняем расширение файла на *.avc или *.264 это важно и для Scenarist`a и для корректора. Открываем AVC Corrector, далее File > Open > выбираем ваш файл, после нажимаем кнопку "Need Correct?", если видим окно с сообщением "Yes" закрываем это окно и нажимаем кнопку "Correct" и Corrector создаёт файл пригодный для авторинга, если в окошке написано "No" вздыхем спокойно и продолжаем читать.




    Интерфейс Scenarist`a, создание и настройка проекта, импорт материала.

    Запускаем Scenarist и видим его неброский интерфейс.

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

    Scenarist запоминает настроенный интерфейс автоматически. Что бы вернуть интерфейс по умолчанию нажимаем Window > Default Layout. Сразу скажу дефолтный интерфейс не самый удобный, его нужно сразу видоизменить таким образом чтобы панели группы Tree располагались рядом и были всегда открыты, панели группы Editor могут оставаться в одном окне поскольку открываются автоматически.

    Если вы счастливый обладатель двух мониторов (Dual Monitor), то могу рекомендовать настройку интерфейса

    В панелях группы Tree мы будем работать с древовидными раскрывающимися списками: для того чтобы раскрыть элемент нужно нажать на "+" слева от него (после раскрытия он станет "-"), или кликнуть на нём ПКМ > Expand. Для закрытия нажимаем "-" или ПКМ > Collapse
    Теперь создадим проект, нажимаем File > New Solution, в появившемся окне пишем имя и указываем расположение, причём указывать нужно некую общую директорию или вообще диск на котором Scenarist сам создаст папку с указанным именем и в ней файл solution (с тем же именем).
    После создания в окне SolutionExplorer появиться значок в виде листов и название solution, делаем щелчёк правой кнопкой мыши на этом значке и выбираем New Disc Project ... "Так Solution это не проект?!" скажите вы. Да в Scenarist BD внедрена система "решений", solutions, в одном решении может содержаться несколько проектов или вариантов проектов это очень удобно для сравнения различных вариантов одного диска. Итак нажали New Disc Project и видим окно Create New Project,

    здесь множество позиций, но нас интересует лишь малая часть:
    Disc Project Name - можете указать любое понятное вам название.
    Version - оставляем без изменеий или напишите 01.00.0001 и в дальнейшем если нужны другие версии диска именуйте 2,3 и т.д.
    Language Code - на BD вещь немаловажная, от этого зависит регистр языка меню и язык аудио и субтитровых дорожек присваиваемый по умолчанию. Нажимаем кнопку в этой графе и в гигантском алфавитном указателе находим rus.
    Auto Create - автоматически создать рабочие папки:
    Output Path - папка с готовым диском, автоматически создаётся внутри папки вашего проекта <disc name>/<solution folder>/<project named folder>/<version nuber>/Output/MUX/BDROM/DB (например, D:/New/New Project/01.00.0001/Output/MUX/BDROM/DB, содержимое папки Output будет создано после сборки диска).
    Если вас не устраивает расположение, снимаете чекбокс и указываете желаемое расположение.
    Encode Path - папка с автоматически закодированным материалом, в основном это кодированная интерактивная графика (*.ies) и субтитры (*.pes) менять её расположение нам нет нужды.
    Нажимаем ОК. В панели появилось название вашего проекта и номер его версии. как видите решение, проект и версия проекта оформлены в виде "дерева" - такова идеология работы Scenarist BD.
    Теперь настроим проект.
    Выполняем команду Tool > CPS > открывается окно CPS Editor. Его можно открыть и нажатием на значёк CPS.

    В окне нажимаем Setting и в открывшемся окне ставим переключатель в положение Unencrypted Setting, нажимаем ОК

    Затем снова в окне CPS Editor открываем вкладку CP/CMF и там ставим чекбоксы всех трёх регионов, нажимаем ОК.

    Как вы догадались это установки защиты от копирования, вернее отключение защиты. Непосредственно защита - процесс непростой, но к сожалению или к счастью (нужное подчеркнуть) BD защита также легко вскрывается как и на DVD (мало того на BDMV просто нет возможностей для экспериментальных видов защиты какие применяют например Pixar, а усложнённая защита BD-J приводит к проблемам с воспроизведением).
    Теперь займёмся импортом.
    Сценарист работает, почему-то, не с самим видео и аудио, а с их виртуальными копиями, имеющими расширение *.ves, кроме того создаётся ещё два вспомогательных файла *.mui и *.xui (не надо зубоскалить)
    Открываем папку с нашими файлами в проводнике Windows и просто перетаскиваем в окно DataTree или Data Editor видеопоток вашего фильма (ещё раз напомню для формата AVC расширение должно быть *.avc или *.264).
    Появится окно Creating VES/MUI/XUI files, показывающее процесс генерации виртуальных файлов.

    По окончании (а это достаточно длительный процесс) видео появится в DataTree. Сгенерированные файлы появятся и в проводнике рядом с реальным видео, они должны там находится не надо создавать для них отдельную папку на диске.
    Теперь перетаскиваем аудио файл. Если у вас звук AC-3 то появится окно Select Coding Type где у вас спросят с чем имеем дело Dolby Digital (AC-3) или Dolby Lossless,

    оставляем вариант по умолчанию (если у вас не лосслесс), жмём ОК и видим уже знакомое окно генерации.
    Если звук WAV то окно Select Coding Type спросит для чего он: Button Sound или LPCM (WAV) у нас пока звук фильма по этому вибираем второй вариант и вновь дожидаемся окончания импорта.

    Таким же образом поступаем с остальным аудио\видео.
    При большом колличестве материала можно его упорядочить распределив по папкам. Щелкаем ПКМ по значку Data в DataTree и выбираем New > Folder - появится новая папка, кликнув по ней называем понятным вам именем. Рекомендую папки Film, Bonuses, Menu, IG (интерактивная графика), конечно вы вольны организовывать материал как вам удобно, но не советую видео и аудио помещать в разные папки - придётся выделять их одновременно, а в разных папках Scenarist не позволит это сделать.
    Распределить по папкам уже импортированный материал можно простым перетаскиванием.
    Если вы не любите много перетаскивать для вас второй вариант импорта.
    Запускам MUI Generator, он находится по адресу C:/Program Files (Program Files (x86))/Sonic/Scenarist BD/Utilites/MUI Generator/MUIGenerator.exe (при установке должен появиться значёк на рабочем столе).

    Справа от графы ES File нажимаем кнопку с троеточием и указываем видеофайл, жмём Create File и смотрим на уже надоевшее окно дожидаясь окончания. повторяем процедуру для всех необходимых аудио\видео файлов. Если Generator в окне Open не увидит *.ac3 и *.wav файлов придётся их перетащить из проводника в графу ES File.
    Как видите Generator не запрашивает у вас Coding Type, а по окончании выдаёт окно MUI Generation END
    Далее закрываем MUI Generator и открываем Scenarist, щёлкаем ПКМ на папке Data и выбираем New > Actual Assets, как видите в таком варианте возможно увидеть только файлы *.ves, *.ies, *.pes, *,tes. Импортируем ваши *.ves файлы. Во время импорта Scenarist показывает окно Reading ES File.

    Желательно сразу дать компонентам понятные имена или переименовать их в Scenarist`e для чего нужно выделить элемент затем: щёлкнуть по его названию, или выполнить ПКМ > Rename, или нажать клавишу F2. Если создавать клипы и плейлисты не отдельно, а на основе компонентов у них будут те же имена.
    Далее необходимая деталь: выделяем аудиофайл, идём в окно Property (если в нём не отобразились свойства файла - ПКМ на файле и выбираем Property) ищем графу Frame Rate и видим там 29,97 fps, частота кадров по умолчанию. У вас может быть друая, щёлкаем по этой графе и видим в ней справа кнопку с треугольником, нажимаем её и в выпадающем списке выбираем нужную частоту кадров. Также в Property можно совершать двойные щечки по названию нужной графы и параметры будут меняться с каждым щелчком или сделать двойной клик в правом конце графы чтобы появился весь имеющийся список параметров.





    Предварительная сборка.

    Выделяем в окне DataTree видео и аудио файлы фильма и перетаскиваем их в окно StreamTree на значок папки Steream. Либо выделив эти файлы щёлкнуть ПКМ и выбрать Generate > Playlist.
    Так же будет полезно знать процедуры создания тех или иных элементов при более сложной компановке:

    Создание элементов


    В окне StreamTree ПКМ на папке Clip выбираем New > Clip > Movie Application создаётся новый клип Clip#01, присвоим ему имя вашего фильма и выполним на его значке двойной клик - откроетя окно Clip Editor. Затем перетаскиваем туда из окна DataTree видеофайл, появляется окно Select Video Type, проследите чтобы переключатель был в положении Primary Video и нажмите ОК. Перетащите аудиофайл и в появившемся окне выберите Primary Audio. Ваши файлы появятся каждый в своей графе.
    Затем ПКМ на паке Stream выбираем New > Playlist и присваиваем новому плейлисту имя вашего фильма. Далее двойной клик по значку плейлиста для открытия окна Stream Editor, далее перетаскиваем туда клип из окна StreamTree на полосу с надписью [Clip : ] - появится окно Select Use ES Clip, ничего не меняем, жмём ОК и видим что надпись изменилась [Clip : имя плейлиста] <Disc>.
    Если необходимо вложить в плейлист ещё один клип, в левом нижнем углу плейлиста в окне Stream Editor нажимаем на значок похожий на переход на предыдущую главу (это масштаб отображения) нажимаем ПКМ на свободной части плейлиста и выбираем New > Play Item - появляется пустая Play Item перетаскиваем ваш клип на полосу с надписью [Clip : ].
    [свернуть]

    Все варианты приведут к одному - в папке Clip появится клип с названием вашего фильма, а в папке Stream появится плейлист с тем же названием. Понажимав плюсики напротив значков можно убедится что файлы вложены в клип, клип занимает PlayItem вложенное в плейлист. Чтобы просмотреть в плейлисте содержимое клипов нужно в окне Stream Editor нажать на голубые треугольники рядом с клипами.

    (Специфика Scenarist`a: клипы, т.е. содержимое фактической папки STREAM числится в папке Clip, а плейлисты, т.е. содержимое папки PLAYLIST (виртуальное), числится в папке Stream.)
    То же касается других частей диска, а для меню есть свои особенности.
    Как вы помните в DVD можно было зациклить видеофон меню до бесконечности или установить определённое количество циклов, а затем начать воспроизведение фильма. Потом можно было создать статичное меню, которое представляло собой однокадровое видео воспроизводимое в режиме принудительной паузы.
    То же, конечно, можно сделать и в BD, но это выглядит иначе - мы добавим клип меню в плейлист множество раз. Дело в том что если просто зациклить плейлист с одним клипом то при возврате на начало плейлиста плеер снова будет его буферизировать, а это значит что интерактивная графика вернётся в исходное положение (наверняка в самый неподходящий момент) и на аппаратных плеерах будет неприятный затык, пауза, пока буферизируется плейлист.
    Щёлкните по плейлисту меню чтобы открыть его в окне Stream Editor (это нужно нам для контроля), затем начинаем перетаскивать клип меню из папки Clip в плейлист меню в папке Stream (каждый раз будет появляться окно Select Use ES Clip, жмём ОК) и видим как он добавляется в Sream Editor`e. Ну или как описано в спойлере "Создание элементов".
    Понятно что от количества вложенных клипов зависит количество циклов меню и чем их больше, тем дальше мы отодвиним неизбежный затык при переходе в начало плейлиста. (В проекте который прилагается в конце у меня 1 и 5 клипов в плейлистах меню - пусть это вас не останавливает, сделайте их пару десятков.) Чтобы зациклить меню до бесконечности необходимо применение команд навигации, а их мы рассмотрим позже.
    Сейчас мы примем меры, чтобы при переходе с одного PlayItem на следующий не возникало "заиканий", т.е. была непрерывность (seamless) воспроизведения. Для этого щёлкаем по PlayItem и в окне Property в графе Connection Condition выбираем Seamless. Этот параметр назначается на начало PlayItem и по этому его можно выставить со второй по последнюю.
    Теперь статичное меню.
    С начала мы рассмотрим слайдшоу. Но слайдшоу здесь не просто видеофайл, а можно сказать тот же режим паузы только с чётко ограниченной длительностью.
    Допустим у вас имеется картинка Still-menu, разумеется с разрешением принятым спецификацией, сохраняем её в любом из перечисленных форматов: JPEG, BMP, PNG или TIFF. Теперь запускаем Still Image Encoder (C:/Program Files (Program Files (x86))/Sonic/Scenarist BD/Utilites/StillImageEncoder/StillImageEnc.exe)
    перетаскиваем картинку в окно Encoder`a или File > Open Files, нажимаем на кнопку слева в строке вашего файла (в ней должен появиться треугольник), нажимаем Set Duration и указываем длительность слайдшоу.

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

    Если вы планируете меню со звуком укажите длительность аудиоролика, а если при этом несколько картинок, выставляйте длительность каждой сверяясь с общей продолжительностью в строке Total.
    В списке EncodeMovie Type выбираем Timebase Slideshow, битрейт (указанного хватит) CBR, кодек желательно MPEG-2 (AVC будет компактнее, но в качестве слайдшоу ведёт себя неадекватно), FrameRate должен соответствовать проектному и AspectRatio = 16:9
    Указываем папку сохранения, имя файла и жмём StartEncode. По окончании увидите окно "The encode processing succeeded" жмите OK. Как видите размер файла смехотворно мал для такой длительности, а Encoder уже сгенерировал необходимые виртуальные файлы, так что если вы будете не импортировать *.ves файл, а перетаскивать реальный, Scenarist выдаст окно Confirmation в котором спросит "заменить ли существующие виртуальные файлы?" нажимаем "No" (зачем их переписывать?)
    В Scenariste с меню-слайдшоу поступаем так же как и с обычными видеофайлами.
    Почему-то в Blu-ray режим принудительной паузы, в том виде что и на DVD (однокадровое видео), очень куций и не поддерживает аудио и интерактивную графику. Но он успешно работает с Timebase Slideshow в форматах MPEG-2 и VC-1.
    Добавляем изображение в Encoder выставляем Timebase Slideshow и продолжительность 1 кадр кодек MPEG-2 или VC-1, жмём Start Encode.
    Далее кадр импортируем в программу, на его основе создаём клип и плейлист, в свойствах PlayItem в который вложен этот клип, в графе Still Mode необходимо установить Still for Infinite Duration. Меню будет воспроизводится в режиме паузы, зацикливать его не нужно. Анимация полностью поддерживается.
    Если нужно добавить музыку, то в клип вкладывается звуковой файл, а в свойствах PlayItem выставляется Still Mode: Still for Finite Duration (в бесконечном, Infinite режиме аудио воспроизведётся один раз и "дальнейшее - молчание"), время можно не выставлять - оно исходит из продолжительности звукоряда. В этом случае меню необходимо зациклить, но следует помнить, при повторном воспроизведении интерактивная графика вернётся в исходное положение. По этому нужно или выбирать продолжительный звукоряд, или вложить клип в плейлист несколько раз, как это мы делали в случае анимированного фона или слайдшоу, правда, режим Seemless, в данном случае, не поддерживается..
    Каждому элементу будь то поток, плейлист или заголовок Scenarist присваивает ID (в этом примере они могут отличатся от ваших), названия элементов нужны только вам их можно менять на любой стадии разработки проекта.
    Расставим главы фильма. Открываем плейлист в Stearm Editor`e и нажимаем ПКМ на нижней полосе озаглавленной PlayListMark и вабираем Insert > PlayListMark появится окно Chapter Setting, где в графе Time Code of Video следует выставить время начала главы.
    Если начало главы стоит не на I-picture, в окне Result появится сообщение "Warning : The specified time is not an I-Picture ([NDF] 00:00:12:23 [DF] 00:00:12:23). The nearest I-Picture is [NDF] 00:00:12:02 [DF] 00:00:12:02." "В указанной точке времени нет реального кадра ([без пропуска кадра] 00:00:12:23 [с пропуском кадра] 00:00:12:23) Ближайший реальный кадр находится [без пропуска кадра] 00:00:12:02 [c пропуском кадра] 00:00:12:02." (Разумеется, в вашем случае, время будет другим.) Это, как видите, не ошибка, а предупреждение и значит оно, что на аппаратных BD плеерах со старыми прошивками могут быть проблемы с выбором таких глав. Но это давно в прошлом и все современные плеера таких проблем не имеют.
    Главы фильма в BD это просто маркеры плейлиста, никаких программ и ячеек как в DVD здесь нет, и если вы хотите сделать несколько вариантов просмотра то вам необходимо разрезать фильм на несколько файлов и уже из них составлять плейлисты.
    Чтобы изменить время маркера нужно его переместить по плейлисту в ту или иную сторону или сделать по маркеру двойной клик и вы снова увидите окно Chapter Setting, где введёте новое время. Для удаления маркера выделяете его и ПКМ > Delete или клавиша Delete на клавиатуре.
    Советовал бы ещё добавить маркер на последний кадр заставки чтобы пользователь мог пропустить её при повторных просмотрах.
    Существует более профессиональный способ добавления маркеров.
    В блокноте создаётся документ следующего содержания <частота кадров>,NonDrop,<время маркера>, … Например 23.976,NonDrop,00:00:00:00,00:03:52:03,00:10:44:20,00:16:02:06,00:21:28:14,00:26:50:17,00:32:26:00,00:37:56:09,00:45:11:15
    Затем изменить расширение с *.txt на *.csv. В Microsoft Exel это должно выглядеть так:

    Затем в сценаристе в окне StreamTree ПКМ на значке плейлиста и выбираем Import > Chapter Import File
    В открывшемся окне в графе File Name указываем csv-файл и, если в плейлисте уже есть маркеры, ставим чекбокс Clear Existing Chapter Marks. Жмём "Import".

    Теперь наша деятельность перемещается в окно ScenarioTree. У нас в проекте шесть плейлистов: Заставка (Blu-ray Logo), Меню (Menu), Фильм (Film), Bonus 1, Bonus 2 и Bonus 3
    Делаем двойной клик на папке Scenario чтобы открыть Scenario Deditor
    Делаем ПКМ на значке FirstРlayback и выбираем New > MovieObject для его создания это можно сделать как в Scenario Editor так и в ScenarioTree. Нажмите плюсик рядом со значком FirstРlayback для открытия MO#1 и далее NavigationCommand. Можно дать ему понятное имя.
    Повторяем операцию для TopMenu.
    Теперь ПКМ на значке Scenario в ScenarioTree или на поле Scenario Editor и выбираем New > HDMV Title - Scenarist создаёт заголовок с фильм-объектом.
    Можно создать сразу несколько заголовков с фильм-объектами, для этого выделяем в окне ScenarioTree папку Scenario и в главном меню жмём кнопку Objects, в открывшемся окне указываем необходимое количество заголовков и далее ОК. Понажимав плюсики убеждаемся что в каждом заголовке есть по фильм-объекту.

    Заёмемся навигационными командами.
    Открываем FirstPlayback / Заставка / NavigationCommand и двойным щелчком по значку NavigationCommand открываем окно NaviCommand Editor - это одно из самых важных окон Scenarist`a
    В строке ObjectName видим название MovieObject`a в подразделе CmdList имеется окно в котором будет список команд, а справа кнопки Move Up и Move Down которые служат для изменения последовательности команд в списке.
    Ниже расположен подраздел CmdEdit в нём выпадающий список Cmd с командами, в зависимости от выбора под ним меняются под-категории в которых выставляются параметры команд. Если выбрать команду Set или Set System появятся под-категории SubCmd. А если поставить чекбокс Compare добавится одноимённая под-категория где назначаются команды логического сравнения.
    Справа имеются кнопки:
    Add - добавление набранной команды
    Change - подтверждение изменения команды
    Delete - удаление команды
    Register... - вызывает окно в котором можно дать название системным регистрам
    Label - создание маркера исходной точки списка команд
    Import - импорт списка команд
    Export - экспорт списка команд
    Назначаем команду для воспроизведения плейлиста заставки:
    Выделяем строку в CmdList (если не выделена)
    Cmd > PlayPL
    В подразделе PlayListID -
    data type > PL Entried
    value > Blu-ray Logo [ID:2]
    Нажимаем Add
    По окончании воспроизведения заставки нам нужен переход в главное меню - назначим команду прехода в заголовок TopMenu:
    Cmd > JumpTitle
    В подразделе TitleID -
    data type > Title Entried
    value > TopMenu [ID:0]
    Нажимаем Add
    Таким образом у нас в список команд выглядит следующим образом:
    1 PlayPL Blu-ray Logo[ID:2]
    2 JumpTitle TopMenu[ID:0]

    А в ScenarioTree рядом со значком NavigationCommand появится "+" раскрыв его и все нижние можно увидеть что теперь здесь числятся и плейлист и элементарные потоки и единственный маркер главы.

    Переходим в TopMenu / Меню / NavigationCommand
    Если у вас открыт NaviCommand Editor, достаточно щёлкнуть по значку NavigationCommand
    Cmd > PlayPL
    В подразделе PlayListID -
    data type > PL Entried
    value > Menu [ID:1]
    Нажимаем Add
    Теперь наша задача зациклить меню до бесконечности
    В списке CmdList выделяем строку 1 PlayPL Menu[ID:1] и нажимаем кнопку Label - появится окно Label Edit, тут всё просто вводим название лейбла (Цикл Меню) и жмём Add
    Далее выделяем нижнюю строку и назначаем команду
    Cmd > GoTo
    В подразделе PlayListID -
    data type > Label Entried
    value > Цикл Меню

    Впрочем, параметры команды появятся автоматически поскольку других лейблов нет. Всё, теперь, по окончании плейлиста меню, воспроизведение начнётся с начала.
    Переходим в заголовок Фильм / Фильм / NavigationCommand
    Назначаем команды как было сказано выше но с другими параметрами, здесь у нас такой список
    1 PlayPL Film[ID:0]
    1 JumpTitle TopMenu[ID:0]

    То есть после воспроизведения плейлиста фильма мы возвращаемся в меню.
    Таким же образом присваеваем фильм-объектам плейлисты Bonus 1, Bonus 2 и Bonus 3
    На этом предварительная сборка закончена идём в главное меню > Tool > MUX или нажимаем Ctrl + M на клавиатуре или нажимаем на значок MUX,

    открывается окно MUX Configuration,

    смотрим чтобы переключатель MUX Processing Type стоял в положении Full Mux и был снят чекбокс Create disc image file, нажимаем MUX Start.
    Запускется MUX Remoting Server и открывается окно MUX Monitoring, где можно проследить за ходом мультиплексии. По окончании ползунки достигнут 100% и загорится зелёное окошко Disc Complete.
    Теперь нам нужно проверить предварительную сборку. Это можно, конечно, сделать с помощью Scenarist QC, но настоятельно рекомендую ArcSoft TotalMedia Theatre - он не даст расслабится и прозевать важные вещи.
    Дело в том что QC воспроизведёт диск не взирая на любую защиту, а Theatre зорко следит за ней. И так запускем Theatre и воспроизводим BD по адресу который я приводил в описании создания проекта в моём случае он выглядит так F:\New\New Project\01.00.0001\Output\MUX\BDROM\DB.
    Но что это! О ужас! Плеер сообщает что этот диск невозможно воспроизвести! А ведь мы не применяли никакой защиты! Мы - нет, а Scenarist применял.
    Открываем Scenarist, главное меню > File > Open Folder > Output и далее MUX\BDROM\DB и видим папки AACS, BDMV, CERTIFICAT, удаляем папку AACS.
    Теперь снова воспроизводим наш диск и видим что всё нормально - проигрывается заставка а затем меню, в фильм мы пока выйти не можем потому что нет кнопок и вот как раз этим мы сейчас займёмся.


    Последний раз редактировалось Mowny Devam; 14.04.2020 в 17:38.
  2. #2
    Создание интерактивной графики.

    Sonic Scenarist BD имеет внутренние средства компановки IG, но их нельзя назвать даже приемлимыми (об удобстве даже речи не идёт). Rovy не стали его дорабатывать, а создали плагин к Adobe Photoshop - тут тебе полные, удобные средства фотошопа для создания IG с нуля и сам плаг, как компановщик-индексировщик.
    Среди сторонних средств можно упомянуть DVD Logic IG Editor, который позволяет и создавать графику на основе PSD и редактировать уже созданную, сохраняя результат в виде *.ies файлов.

    Установка Scenarist Designer по методу Сергея Шувалова

    Она ни сколько не нарушает авторские права. (пример для CS6, для остальных аналогично)
    Открываем папку "С.Шувалов.Руч.уст.2.6.1x32подWx64" и копируем содержимое вложенных папок по указанным адресам
    To Optimized Output Settings Folder.\Designer.iros --> C:\Program Files (x86)\Adobe\Adobe Photoshop CS6\Presets\Optimized Output Settings
    To Photoshop Folder\все содержащиеся там файлы --> C:\Program Files (x86)\Adobe\Adobe Photoshop CS6
    To Plug-Ins Folder\Sonic --> C:\Program Files (x86)\Adobe\Adobe Photoshop CS6\Plug-Ins
    To Scripts Folder\все содержащиеся там файлы --> C:\Program Files (x86)\Adobe\Adobe Photoshop CS6\Presets\Scripts
    To Sonic Folder\Scenarist Designer PS --> C:\Program Files (x86)\Sonic\
    Теперь запускаем Photoshop, создаём пустой документ 1920х1080, далее File > Export > Scenarist Designer PS, появится окно Scenarist Designer PS Activation

    вводим ключ, жмём ОК и видим подтверждение,

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


    Создание IG самый трудоёмкий процесс в BD-авторинге, поскольку требует ручного создания графических элементов, их многократное дублирование и распределение в структуру понятную Scenarist Designer`у.
    Графические элементы вы можете создавать в любом удобном вам редакторе, главное чтобы он поддерживал работу со слоями, имел набор эффектов и возможность анимации
    Например я использую After Effects, основной плюс её использования это динамически изменяемые настройки эффектов.
    Вы вольны придумывать любую графику, но стоит знать некоторые закономерности.
    Понятно, что, чем обширнее графические объекты, тем больше они загружают буфер. Можно сделать панель размером почти в пол-кадра и она нормально поместится в буфере, но тогда может не остаться места для анимации.
    Да и многокадровая анимация крупных обьектов хорошо выгладит только на программных плеерах, на аппаратных может немного притормаживать (снизится частота кадров), чтобы этого не происходило приходится сжимать анимацию до 5-6 кадров.
    Или поступить проще - поместить панель в видеофон и в графике останутся только надписи, пользователь не заметит разницы, а у вас расширится поле деятельности.
    При использовании эффектов следует избегать плавных градаций цветовых переходов - они будут съедены индексацией цветов и ваши красивые картинки рискуют превратится в бесформенные пятна.
    Вот пример: слева - полноцветная графика, справа - она же после индексации.

    При увеличении разница особо заметна, поэтому подобные приёмы допустимы только при очень небольшом масштабе. Тоже справедливо и для постеров выбора эпизодов и фотографий, их следует делать небольших размеров увеличивать контрастность и при рендеринге тщательно подбирать настройки палитры. Очень эффектно, "богато" смотрится графика с насыщенными, но высококонтрастными текстурами - "сталь", "бронза", "золото" с неровными фактурными "поверхностями", но создание такой графики требует много времени.
    Не стоит делать продолжительную анимацию кнопок - это только замедлит навигацию.
    Методы работы у каждого свои (кто-то рисует блок схемы, кто-то держит всё в голове) но основную структуру меню следует разработать с самого начала. В нашем случае структура такова:
    Main Menu
    Страница 1 - вступление, плавное появление (Fade In) элементов главной страницы, будет состоять из одной кнопки,
    Страница 2 - главная, на ней будут расположены кнопки "Просмотр", "Эпизоды", «Настройки» и «Дополнительно»
    Страница 3 - переход (Cross Fade) на страницу эпизодов, так же состоит из одной кнопки,
    Страницы 4, 5, 6 - станицы эпизодов, на каждой из них расположены по 4 кнопки эпизодов (как вариант - по 6 кнопок и страниц будет 2), кнопки перехода на предыдущую и последующую страницу эпизодов, кнопка возврата на главную страницу.
    Страница 7 - страница перехода в меню настроек
    Страница 8 - страница настроек содержащая кнопки: «Аудио 1», «Аудио 2», «Субтитры», «Без субтитров» и « Меню»
    Страница 9 - переход на страницу бонусов
    Страница 10 - страница выбора бонусов, содержащая кнопки: «Бонус 1», «Бонус 2», «Бонус 3» и « Меню»
    Pop-Up Menu будет отличаться от главного тем что там вместо кнопки «Просмотр», будет кнопка «Главное меню»
    Структура интерактивной графики в Scenarist Designer PS.
    Для обозначения принадлежности к соответствующей части меню, существует система префиксов, которые должны присутствовать в начале названия каждого слоя или группы слоев.
    По этим префиксам Designer определяет, какой слой (группа) какую функцию должен нести. Упрощенно, структура меню выглядит так:

    Если кнопка анимирована, выглядит так:

    Система префиксов представляет собой буквенно-цифровое обозначение и двоеточие. После двоеточия может быть пробел, может не быть - Designer его игнорирует.
    Дальше может идти любой текст с названием слоя/группы.
    Означают коды следующее:
    1. IG: - Interactive Graphic. Означает, что структура представляет собой меню (интерактивную графику). Бывает еще PG: - Presentation Graphic (субтитры).
    2. DS: - DisplaySet. Воспроизводимый набор, находится внутри группы IG
    3. P: - Page. Страница меню. Страниц как правило много.
    4. BOG: - Button Overlap Group. Группа кнопок с наложением. BOG много всегда. Внутри этой группы может быть одна или несколько кнопок. Если кнопок несколько, то только одна из них может быть активна в каждый момент времени, т.е. кнопки внутри BOG могут использоваться только в качестве переключателя.
    5. B: - Button. Кнопка. Кнопок тоже много всегда, как минимум столько же, сколько BOG. Группа B содержит в себе как минимум 3 слоя с картинками состояния кнопки (Normal, Selected, Active). Но бывает что кнопка содержит только изображение одного состояния.
    6.
    N1: - Normal. Неактивное (нормальное) состояние кнопки. Единица означает номер кадра анимации. Она должна присутствовать всегда, независимо от наличия анимации в кнопке.
    Если анимация присутствует, то cлои-кадры должны идти строго по порядку сверху-вниз: N1:, N2:, N3: и т.д..
    S1: - Selected. Кнопка выделена (выбрана). Всё вышесказанное по поводу номера и анимации - в силе и для этого состояния кнопки.
    A1: - Activated. Кнопка активирована (нажата). Всё вышесказанное по поводу номера и анимации - в силе и для этого состояния кнопки.
    Это состояние кнопки нефиксировано, т.е. после активации кнопка вернется к состоянию Selected или к состоянию Normal (если в списке команд этой кнопки есть переход на другую кнопку).
    7. BG: - Background. Фоновая (неактивная) часть каждой страницы. Располагается под всеми BOG. На этом слое может располагаться вся графика и текст, имеющиеся на странице, кроме кнопок (активных элементов).
    Не буду вас утомлять рассказами о простых (не анимированных) кнопках, примемся за создание меню с полной анимацией.
    Дабы облегчить себе жизнь, будем делать анимацию по ключевым кадрам с последующим экспортом в графическую последовательность (собирать покадровую анимация нас не устраивает поскольку нам нужны отдельные кадры, а не видеофайл). Делать анимацию в Photoshop версии CS5 и ниже не всегда удобно - там отсутствует анимация трансформации текста, но анимацию стиля, позиции и прозрачности создать можно.
    Приведу пример создания анимации в After Effects и в Photoshop CS6.
    Создадим два PSD-документа 1920х1080 с прозрачным фоном, один назовём Main Menu другой Анимация (он будет вспомагательным). В документ Анимация добавляем (по желанию) скриншот видеофона меню для уверенной компановки, а так же направляющие две горизонтальные 108 pix и 972 pix, две вертикальные 192 pix и 1728 pix это Safe Area, чтобы не вылезть на края кадра. Теперь создаём надписи "Просмотр", "Эпизоды", «Настройки» и «Дополнительно» и распологаем их как нужно. Далее вызываем окно анимации Window > Timeline выбираем в нём Create Video Timeline в правом верхнем углу окна Timeline вызываем меню и выбираем Set Timeline Frame Rate ставим 6 кадров секунду.

    Теперь на правом краю слоя нажимаем на стрелочку и в открывшемся окне выбираем Zoom (остальное без изменений)

    свойство Transform окрашивается красным и там появляются два ключевых кадра, двигая ползунок видим что надпись увеличивется.
    Далее хватаемся за правый край слоя и уменьшаем его длительность до 7 кадров (если это сделать до зума, увеличение будет незначительным), ставим ползунок на 4 кадр и добавляем ключевой кадр, нажимаем Ctrl + T и удерживая Shift + Alt слегка увеличиваем надпись на этом кадре.
    При вспроизведении видно что надпись ведёт себя словно (замедлено) лопающийся пузырёк. Теперь добавляем ключевые кадры свойства Style в тех же местах что и в Transform и выставляем свойства стиля.

    Теперь видно что надпись уподобилась микровзрыву.
    С остальными надписями поступаем так же, только свойства Style копипастим из надписи "Просмотр" (в меню в правом углу окна Timeline - Keyframe > Copy и потом Keyframe > Paste). Чтобы отделить надписи друг от друга отключаем надпись "Эпизоды", нажимаем на значок в виде стрелочки внизу таймлинии или выбираем File > Export > Render Video, выводим в отдельную папку с понятным вам именем (у меня Play Animation).

    Можно сразу частично наименовать файлы поставив вместо Button Animation букву S.
    Теперь выключаем "Просмотр" и включаем "Эпизоды" повторяем экспорт но меняем под-папку (Chapters Animation). Повторяем операцию для остальных надписей выводя их в папки Settings Animation и Bonuses Animation соответственно.
    В After Effects настойки аналогичны,

    а в настройках экспорта выберем формат IFF Sequence, Chanels: RGB + Alpha и сразу частично проименуем кадры назовём их S, а номера AE присвоит автоматически.
    Сразу рассмотрим анимацию другого рода. Оставим надписи без изменения а рядом с ними поместим какой-нибудь значок пригодный для вращения, например, широко известный, инь-янь и анимируем его вращение. Только для пущей плавности сделаем 24-кадровую анимацию. (Анимация будет циклической по-этому не замедлит навигацию.)
    Для этого импортируем файл в AE как композицию. (Папки здесь будут выглядеть как вложенные композиции) В настройках проекта для удобства укажем Timecode > Frames, а в настройках композиции Start Timicode 00001 и End Timecode 00024. Теперь анимируем свойство Rotation слоя ying-yang.

    Выходной модуль настраиваем на экспорт IFF Sequence, Channels: RGB + Alpha и именюем последовательность S, экспортируем в папку.
    Открываем документ Main Menu и перетаскиваем туда кадры из выходной папки (Play Animation), поскольку расположение слоёв должно быть с верху вниз - перетаскиваем начиная с последнего кадра. Самый верхний слой (начальное состояние надписи) именуем N1: Play, остальные S1: Play, S2: Play до S6: Play.
    Слой S4: Play дублируем перетаскиваем вниз и именум A1: Play. Группируем слои в группу B: Play, а эту группу помещаем в группу BOG: Play. Повторяем процедуру перетаскивая кадры из папки Chapters Animation, именуем соответственно N1: Chapters, S1: Chapters - S6: Chapters и A1: Chapters. Аналогично для кнопок Settings и Bonuses.
    Группируем это в группы B: Chapters и BOG: Chapters. Теперь обе BOG-группы собираем в группу P: Main - теперь у нас есть главная страница меню.
    Для анимации с вращением - перетащим кадры в Main Menu сгруппируем, назначим выделенным состоянием кнопки (S1...S24), как описано выше. Продублируем первый кадр перетащим вниз и назначим активным состоянием (A1). То есть у нас получилось так что надписям места не досталось. Теперь значит дублировать надписи и объединять со значками?
    Поступим проще, объединим надписи "Просмотр" и "Эпизоды", «Настройки» и «Дополнительно» в группу BG: Main и расположим под всеми слоями внизу страницы. Позже мы объединим эти слои в один и при ренедринге, Designer обьединит слои с бэкграундом.
    В чём разница между двумя видами анимации? В первом случае при выделении кнопки анимация проиграется и остановится на последнем кадре, если её зациклить, это будет выглядеть не очень хорошо, зато во втором случае анимация сама по себе циклического характера, как её зациклить расскажу позже.
    Теперь примемся за страницы выбора эпизодов.
    Сделаем скриншоты ключевых моментов эпизодов, по одному на каждый эпизод. Поместим их в документ Main Menu выше надписей "Просмотр" и "Эпизоды". И придумаем какую нибудь анимацию выделения, например в нормальном состоянии картинка будет затуманена а при выделении пелена сойдёт с неё от центра к краям.
    Откроем AE и импортируем туда файл Main Menu не важно в виде композиции или единого изображения. Создаём композицию на основе изображения. Далее инструментом Rectangle Tool делаем прямоугольник под размер окошка главы.
    Делаем его белого цвета или лучше под цвет фона, если он у вас неизменный и увеличиваем прозрачность до ~ 60%, затем ПКМ на слое Shape Layer 1 и выбираем Mask > New Mask - создаётся маска под размер прямоугольника.
    Инвертируем маску, анимируем свойство Mask Expansion и ставим на первом кадре -82 pix (для размера картинки 287х162) на 7-ом 0 pix.

    Теперь отключаем всё кроме слоя Shape Layer 1 и перетягиваем композицию в Render Queue.
    Выходной модуль настраиваем на экспорт IFF Sequence, Channels: RGB + Alpha и именуем последовательность S, экспортируем в папку. Перетаскиваем в Photoshop в наш файл Main Menu, группируем и именуем как рассказано выше, так что бы полный прямоугольник (S0) стал N1, а активное состояние кнопки остался пустым кадром.
    Объединяем в один слой скриншоты эпизодов на каждой странице в отдельности и именуем их BG: Ch 1-4 (Ch 5-8, Ch 9-12), кнопки эпизодов оставляем без изменений. Копируем группы BOG и размещаем их поверх окошек эпизодов, то есть у нас должно быть 12 групп.
    Идём дальше. На уровне надписи "Настройки" размещаем текстовые значки "<" и ">" (предыдущая и следующая страница), а на уровне надписи "Дополнительно" пишем "Меню". Теперь помещаем BG: Ch 1-4, а так же "Меню", "<", ">", "N1: Play", "A1: Chapters", «N1: Settings” и «N1: Bonuses” в документ Анимация, изменяем продолжительность получившихся слоёв до 12 кадров
    Переходим на первый кадр анимируем свойство Opasity 0% для слоёв BG: Ch 1-4, "Меню", "<" и ">"; Opasity 100% для слоёв "N1: Play" и "A1: Chapters", «N1: Settings” и «N1: Bonuses”. Переходим на 12 кадр и анимируем Opasity соответственно наоборот BG: Ch 1-4, "Меню", "<" и ">" - 100%; "N1: Play", "A1: Chapters", «N1: Settings” и «N1: Bonuses” - 0%. При воспроизведении видим что страница Main плавно сменяется страницей Chapters 1-4. Теперь анимируем вступление на основе слоёв N1: Play, N1: Chapetrs, N1: Settings и N1: Bonuses, в первом кадре ставим для всех слоёв Opasity 0% на 12-ом - 100%, все надписи должны плавно появиться. Анимацию надписи "Меню" проведём соответственно как и с надписями "Просмотр" "Эпизоды", а вот с переходами "<" ">" поступим иначе, анимацию стиля скопируем из кнопки "Просмотр", потом скопируем кнопки и анимируем позиции копий для "<" сместим немного влево, а для ">" сместим немного вправо. При просмотре видно что кнопки вспыхивают и раздваиваются приобретая вид значков перемотки.
    Экспортируем отдельно анимации: вступления, перехода, кнопок "Меню", "<" и ">". В документе Main Menu между страницами P: Main и P: Chapters 1-4, создаём страницу P: Transition в ней BOG: Transition и B: Transition перетаскиваем полученные кадры перехода именуем их А1: Transition (до А12: Transition), перед страницей P: Main создаём страницу P: Intro помещаем туда кадры вступления, кадры анимации "Меню", "<" и ">" помещаем в страницу P: Chapters 1-4. Группируем и переименовываем как было сказано ранее, но небольшая поправка, Designer не примет символов < и >, вместо этого назовём, например, Previous и Next. Копируем полученные группы "BOG: Menu", "BOG: Previous" и "BOG: Next" в страницы P: Chapters 5-8 и P: Chapters 9-12.
    Аналогичным образом создаём страницы Bonuses и Settings и переходы к ним.

    Но в Setings сделаем один фокус. Дело в том что по правилам хорошего тона В DVD и BD принято подсвечивать активные дорожки звука и субтитров, а для этого нам нужно будет добавить дополнительное выделение кнопок
    Продублируем папку кнопок B: Audio 1 и в той же BOG поместим ниже основной папки, добавим в название папки и слоёв отличительную особенность (я дописал ON), затем сделаем дополнительное выделение, я добавил жирную точку со свечением, размножаем слой с этой точкой и объединяем с каждым слоем.

    Теперь наше меню имеет законченный вид.

    Для меню с вращением немного иначе.

    На основе Main Menu создаём поп-ап меню. Сохраняем документ Main Menu и далее сохраняем как Pop-Up Menu, удаляем из полученного документа слои кнопок на страницах переходов и BOG: Play. По аналогии с описанным выше создаём кнопку Main Menu и новые переходы добавляем в документ. Переименовываем IG и DS в Pop-Up Menu, в противном случае Scenarist решит что это тоже меню и захочет его апдейтить. Для Меню с вращением придётся изменить фон, в папке BG меняем надпись Просмотр на Главное меню объединяем слои, а саму папку удаляем слой BG должен быть вне пепки.
    Остался только рендеринг графики. Но перед рендерингом следует растеризовать все текстовые слои и эфекты, а так же тщательно проверить везде ли есть префиксы, без ошибок, и есть ли после них названия, к тому же Designer не понимает кириллицу и всякие знаки только латиница и цифры.
    Запускаем 32-битный Photoshop открываем в нём файл Main Menu идём File > Export > Scenarist Designer PS. Если вы не активировали его как указано ранее увидите окно с просьбой ввести ключ (см. спойлер "Установка Scenarist Designer по методу Сергея Шувалова").
    Designer выполняет препроцессинг и выдаёт окно Export

    здесь необходимо указать:
    в графе Directory где будет сохранено итоговое меню
    в графе Project Name название папки итогового меню (это не проект Scenarist BD)
    поставить чекбокс Enable Scenarist HDMV Export.
    снять (если стоит) чекбокс Just Export Files (Skip Preview) - он сразу экспортирует пропуская превью и нужен если вы уверены в настройках заданных в опциях.
    Нажимаем кнопку Options и видим окно настроек

    В закладке HDMV можно поставить чекбокс Output Flattened Composites - вывод общих композиций графики в сборе, чтобы увидеть как это всё выглядит в общем, постранично.
    В закладке Palette указываем Dither Options > None, и ставим переключатель Generate Global Palette. Это самые экономичные для буфера настройки.

    На самом деле придётся выбирать компромисс между качеством картинки и размером буфера. Если графика не очень насыщена цветовыми переходами, то можно ограничиться этими настройками. Если в графике есть сложные цветовые переходы, то, как я уже упоминал, это может привести к тяжёлым последствиям и нужно применять сглаживание, если и оно не спасает ситуацию, то тогда придётся делать отдельные палитры для каждой страницы (Generate optimized palette for each Рage), но это еще большая нагрузка на буфер. Поскольку буфер имеет определяющее значение, то приходится либо жертвовать качеством, либо уменьшать количество цветовых переходов в меню или, как альтернатива, уменьшать размеры графических объектов, что скрадёт плавность переходов, но сделает графику более куцей, скучной.
    Нажимаем ОК и видим окно превью

    Здесь имеются инструменты Лупа (увеличитель) Пипетка (проба цвета при редактировании палитры) Рука (перемещение при большом увеличении), а так же калькулятор буфера - необходимый нам радужный квадратик.
    В правом верхнем окне выбираются слои, в главном окне будут показаны только выбранные слои или вся страница с кнопками в нормальном состоянии (конечно без анимации).
    Под главным окном есть меню масштабирования и чекбоксы Show Bakground - показать фон (активно только при экспорте отдельных кнопок) и Show Button Slice - показать порезку кнопок. Под окном слоёв есть выбор сглаживания, а ниже таблица редактирования палитр.
    Текстовые эффекты нас не очень волнуют, хотя если вы примените сложные и обширные эффекты их необходимо проверять. В нашем случае тревогу вызывают кнопки эпизодов, поскольку это фотографии.
    Рассмотрим конкретную фотографию на насыщенном фоне. Выделяем слой и с помощью инструмента «рука» находим изображение. Увеличиваем, чтобы можно было разглядеть дефекты.
    При отстутствии сглаживания оно имеет плачевный вид.

    Под окном выбора слоёв есть Dither Options где мы выбираем разновидности сглаживания
    Error Diffusion - диффузия случайного характера, разработки Флойда-Штайнберга, привносит много "шума" в изображение.
    Ordered - сглаживание посредством приблизительной замены смешанных цветов фиксированными патернами, такой способ подчёркивает чистые цвета и ужесточает края переходов.
    Riemersma - сложный процесс сглаживания когда изображение приводится к специфической цветовой схеме с ограничением влияния на пиксель соседних пикселей внутри небольшой зоны.
    Error Diffusion и Riemersma имеют регуляторы в процентах, Ordered - переключатель размера квадрата последовательности распределения патернов.
    Выбираем Error Diffusion (по умолчанию 80%) лупой увеличиваем до заполнения.
    Заметно лучше но не удовлетворительно.

    Reimersma - шумная картинка, хотя дела обстоят намного лучше.

    Ordered. Двигаем переключатель, рассматривая очень разные результаты.

    4х4 неплохо, но в силу алгоритма процесса - очень резкие переходы.
    С учётом того что програмные плееры и телевизоры (особенно LED) съедают мелкие дефекты, Riemersma и Ordered 4x4 можно считать приемлимыми результатами.
    Разумеется это очень сложное для индексирования изображение - обширный плавный цветовой переход - в большинстве случаев разница между настройками вовсе не будет заметна.
    К примеру соседняя с ним фотография при Ordered 4x4 выглядит отлично.

    Бывает что при составлении страниц эпизодов всё индексируется нормально за исключением одного-двух изображений, которым больше подходит другой метод сглаживания. Можно назначать им или отдельным сраницам другой метод сглаживания ,в новой версии это возможно. А так же можно будет индексировать заранее. В Фотошопе существуют собственные средства индексирования, но в новых версиях алгоритм индексирования не всегда удовлетворяет нашим требованиям и по этому будем использовать Scenarist Designer.
    Для этого создаём новый документ и выполняем команду File > Scripts > Scenarist Designer - Generate IG, помещаем наше изображение в папку B: Button и удаляем слой Background. Далее вызываем Designer подбираем подходящий режим сглаживания, затем ПКМ на картинке > Export Image > Export 8 bit (slise) и указываем путь сохранения картинки

    В отличии от простого экспорта Designer выполняет индексирование цветов, но экспортирует изображение в режиме RGB Color.
    Потом помещаем картинку в рабочий документ.
    Предварительное индексирование даёт возможность создавать глобальную палитру и не применять сглаживание, но повторное индексирование может ухудшить ситуацию, не следует им увлекаться и необходимо тщательно проверять результат перед рендерингом.
    Далее, если мы удовлетворены настройками в окне превью жмём Export, а если мы назначили общий тип сглаживания в Options и уверены в нём, то в окне Export ставим чекбокс Just Export Files (Skip Preview) и нажимаем ОК.
    Designer экспортирует составляющие графики в указанную папку. В нашем случае это будет папка Buttons, где будут автоматически созданы папки с именами наших меню.
    Проделываем рендеринг для Pop-Up Menu.

    *

    Наверняка не всё рассказанное выше понятно "на словах", по этому прикрепляю сюда файлы фотошопа с готовыми для рендеринга меню.


    Последний раз редактировалось Mowny Devam; 22.01.2020 в 15:05.
  3. #3

    Основной авторинг.

    Запускаем Scenarist BD.
    Чтобы открыть существующий проект идём в главное меню File > Project Hystory и в открывшемся окне делаем двойной клик на названии проекта.
    В DataTree создаём паку IG, далее ПКМ на папке и выбираем Import > Scenarist Designer File, в появившемсмя окне указываем файл Buttons\Main Menu\HDMV\Main Menu.scenarist.designer, Scenarist покажет окно с указанием разрешения и выбором частоты кадров, выбираем нужную, повторяем тоже для поп-ап меню и в папке IG появятся папки Main Menu_Graphics и Pop-Up_Graphics и очень важные для нас значки Main Menu и Pop Up.
    Любопытно что создавать навигацию кнопок можно и до того как графика будет вложена в плейлист, это делается в окне DataTree.
    Чтобы вложить IG в плейлист у нас есть три варианта:
    • создаём клип IG, в окне DataTree ПКМ на значке меню Generate > Clip или перетянув значок из окна DataTree на папку Clip и перетаскиваем клип в плейлист;

    • перетаскиваем значёк меню из Data Tree прямо в плейлист;

    • ПКМ на плейлисте New > Sub Path > Interactive Graphics Menu и далее перетаскиваем туда или значёк из DataTree или IG-клип.

    Открываем древовидный список Main Menu > Epoch#1 > Main Menu и увидим палитры а ниже знакомые нам названия страниц.
    После добавления в сценарий, доступ появится и в окне ScenarioTree, но глубже TopMenu > MO#1 > NavigationCommand > Menu > SubPlayItem#1 > Main Menu > Epoch#1 > Main Menu (палитр, как видите, здесь не видно).
    Далее открываем страницу, затем BOG и саму кнопку до появления значка NovigationCommand.

    Если сделать двойной клик на значке кнопки, откроется окно Edit Button Info где можно просмотреть, удалить или добавить графику состояния кнопок. А так же сделать кнопку автоактивной.

    А если у вас вариант с циклической анимацией кнопки, нужно напротив этой анимации поставить чекбокс Repeat, чтобы зациклить её.


    Теперь перед тем как начнём назначать команды навигации, расскажу обо всех командах какие есть:
    Nop - отсутствие команды.
    GoTo - переход на указанный лейбл.
    Break - прерывает выполнение команд в текущей последовательности.
    JumpObject - останавливает выполнение текущего МovieОbject и переходит к выполнению указанного МovieОbject.
    Продолжение выполнения предыдущего МovieОbject с помощью команды Resume после выполнения команды JumpObject невозможно.
    JumpTitle - останавливает выполнение текущего Title и переходит к выполнению указанного Title.
    Продолжение выполнения предыдущего Title с помощью команды Resume после выполнения команды JumpTitle невозможно.
    CallObject - приостанавливает выполнение текущего МovieОbject и переходит к выполнению указанного МovieОbject.
    После выполнения команды CallObject возможно продолжение выполнения предыдущего МovieОbject с помощью команды Resume.
    CallTitle - приостанавливает выполнение текущего Title и переходит к выполнению указанного Title.
    После выполнения команды CallTitle возможно продолжение выполнения предыдущего Title с помощью команды Resume.
    (Resume Возобновляет выполнение ранее приостановленного MovieObject с точки прерывания.)
    PlayPL - выполнение указанного плейлиста. Доступна только как команда в МovieОbject.
    PlayPLatPl - выполнение указанного PlayItem. Доступна только как команда в МovieОbject.
    PlayPLatMk - выполнение указанного плейлиста, начиная с указанного маркера главы (PlayListMark). Доступна только как команда в МovieОbject.
    TerminatePL - прекращает выполнение текущего плейлиста. Доступна только как кнопочная команда.
    LinkPI - переход на указанный PlayItem. Доступна только как кнопочная команда. Возможна ссылка только на PlayItem текущего плейлиста.
    LinkMK - переход на указанный PlayListMark (маркер главы). Доступна только как кнопочная команда. Возможны ссылки только на маркеры текущего плейлиста.
    StillOn - приостанавливает воспроизведение плейлиста. Доступна только как кнопочная команда.
    StillOff - возобновляет воспроизведение плейлиста. Доступна только как кнопочная команда
    (Замечу: последние две команды к презентационной графике не имеют отношения)

    Set - группа команд, работающих с операндами типа “Source” и “Destination” с записью результата в Destination.


    Move (Source) -> Destination - Сохраняет значение (GPR, PSR, или immediate) в GPR.
    Swap (Source) <-> Destination - Обмен значениями между двумя GPR.
    Add (Source) + (Destination) -> Destination - Операция сложения.
    Sub (Destination) – (Source) -> Destination - Операция вычитания.
    Mul (Source) * (Destination) -> Destination - Операция умножения.
    Div (Destination) / (Source) -> Destination - Операция деления.
    Mod (Destination) % (Source) -> Destination - Модуль. Запись в Destination остатка от деления Destination на Source. Пример: 10 % 3 -> 1 (10 = 3 x 3 + 1)
    Rnd Random(Source) -> (Destination) - Генерирует случайное число от 1 до Source.
    And (Source) & (Destination) -> Destination - Побитовое логическое И (логическое умножение). Если в обоих битах 1, результат равен 1. Если хотя бы в одном бите 0, результат равен 0.
    Or (Source) | (Destination) -> Destination - Побитовое логическое ИЛИ (логическое сложение). Если в обоих битах 0, результат равен 0. Если хотя бы в одном бите 1, результат равен 1.
    Xor (Source) ^ (Destination) -> Destination - Побитовое логическое Исключение ИЛИ. Если оба бита совпадают, результат равен 0. Если не совпадают, результат равен 1.
    Bit Set 1 -> <№ бита = Source> в Destination - Запись единицы в указанный в Source бит Destination.
    Bit Clear 0 -> <№ бита = Source> в Destination - Сброс указанного в Source бита Destination в 0
    Shift Left (Destination) сдвиг на <кол-во = Source> -> Destination - Сдвигает влево Destination на указанное в Source количество бит.
    Shift Right (Destination) сдвиг на <кол-во = Source> -> Destination - Сдвигает вправо Destination на указанное в Source количество бит.
    SetSystem - Группа команд для управления номерами потоков, таймером и параметрами кнопок.

    SetStream - Установка номеров текущих Primary audio, PG TextST, Angle, и IG потоков.
    SetNVTimer - Устанавливает значение (0...300 секунд) и запускает таймер. Когда обратный отсчет достигает нуля, выполняется Jump на указанный MovieObject.
    SetButtonPage - Переход на указанную кнопку и/или страницу меню.
    EnableButton - Включает (делает доступной) указанную кнопку в ее нормальном состоянии (Normal State). Используется для активации одной из кнопок в Button Overlap Group (BOG).
    Команды, расположенные ниже EnableButton продолжают выполняться.
    DisableButton - Выключает (делает недоступной) указанную кнопку. Даже если указанная кнопка является текущей, последовательность команд ниже DisableButton продолжает выполняться.
    Если не последовало команды перехода к конкретной кнопке, выбирается DefaultSelected Button из параметров страницы меню.
    SetSecondaryStream - Установка текущих Secondary video, Secondary audio, и PiP PG TextST.
    PopupMenuOff - Выключение поп-ап меню.

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

    PSR (Player Status Register) - регистры состояния плеера или системные регистры, имеют строго фиксированное назначение и сохраняют разного рода постоянные и текущие настройки плеера. Их значения определяют состояние плеера в данный момент и постоянные настройки.
    Всего их 128 и вот основная часть.

    Регистры текущего состояния:
    Interactive Graphics [ID:0] - номер интерактивной графики
    Primary Audio [ID:1] - номер текущего аудиопотока
    PG TextST stream and PiP PG TextST [ID:2] - номер текущего потока субтитров
    Angle [ID:3] - номер "угла зрения"
    Title [ID:4] - номер заголовка
    Chapter [ID:5] - номер маркера главы
    PlayList [ID:6] - ID плейлиста
    PlayItem [ID:7] - ID плейайтем (пункта воспроизведения)
    Presentation Time [ID:8] - текущее время воспроизведения в сэмплах 45 килогерц
    Timer [ID:9] - таймер отсчёта
    Selected Button [ID:10] - ID выбранной кнопки
    Menu Page [ID:11] - ID страницы меню
    Selected Style [ID:12] - выбранный стиль воспроизведения текстовых субтитров
    Secondary Audio and Secondary Video [ID:14] - номер вторичного потока видео и аудио

    Регистры постоянных настроек:
    Parental [ID:13] - родительская защита
    Audio Capability [ID:15] - возможности использования аудио
    Audio Language [ID:16] - язык аудиопотока по умолчанию
    Presentation Graphics and Text subtitle Language [ID:17] - язык субтитров по умолчанию
    Menu Language [ID:18] - язык меню по умолчанию
    Country [ID:19] - код страны
    Region [ID:20] - код региона
    Output Mode Preference [ID:21] - настройки вывода
    Stereoscopic Status [ID:22] - вкл\выкл функции 3D (для 3D совместимых плееров)
    Display Capability [ID:23] - возможность отображения (для 3D совместимых плееров)
    3D Capability [ID:24] - возможность 3D (для 3D совместимых плееров)
    Video Capability [ID:29] - возможность использования аудио
    Text Capability [ID:30] - возможность использования текстовых субтитров
    Player Profile / Player version [ID:31] - совместимый профиль / версия прошивки плеера

    Регистры бэкапа
    [ID:36] - бэкап регистра Title [ID:4] (используется при ресуминге)
    [ID:37] - бэкап регистра Chapter [ID:5] (используется при ресуминге)
    [ID:38] - бэкап регистра PlayList [ID:6] (используется при ресуминге)
    [ID:39] - бэкап регистра PlayItem [ID:7] (используется при ресуминге)
    [ID:40] - бэкап регистра Presentation Time [ID:8] (используется при ресуминге)
    [ID:42] - бэкап регистра Selected Button [ID:10] (используется при ресуминге)
    [ID:43] - бэкап регистра Menu Page [ID:11] (используется при ресуминге)
    [ID:44] - бэкап регистра Selected Style [ID:12]
    [ID:45] - бэкап регистра Stereoscopic Status [ID:22]

    [ID:48] - [ID:61] - характеристики использования текстовых субтитров
    [ID:96] - [ID:111] - служебные функции (команды "воспроизведение", "стоп", "пауза" и т. д.)
    [ID:25] - [ID:28], [ID:32] - [ID:35], [ID:41], [ID:46], [ID:47], [ID:62] - [ID:95], [ID:112] - [ID:127] - резервные

    GPR (General Purpose Register) - пользовательские регистры. Они не имеют фиксированных назначений, их функция определяется пользователем в контексте проекта. Названия задаются пользователем для облегчения авторинга и не несут функционального значения. То есть если регистр назвать Audio он не будет переключать потоки в зависимости от своего значения.
    Чтобы назвать регистр нужно в NaviCommand Editor нажать кнопку Register. В открывшемся окне выбираем любой из свободных ID и вместо «NoName» в графе Name вводим своё название. Нажимаем ОК.
    Всего их 4095 (!) и последние 5 зарезервированы системой для случаев использования инструментов полуавтоматической навигации:
    SK_PlayList [ID:4091] - для плейлистов
    IsChapJump [ID:4092] - для режима случайного доступа (всего два значения TRUE - истина (1) и FALSE - ложь (0))
    ChapMO [ID:4093] - для навигации по фильм-объектам
    ChapPL [ID:4094] - для навигации по плейлистам
    ChapPLMark [ID:4095] - для навигации по маркерам глав
    Нас может заинтересовать только последний.
    Значения регистров задаются с помощью команд группы Set. В окне NaviCommand Editor в графе Cmd выбираем Set, ниже в арее SetCmd в графе SubCmd выбираем команду (Move, Add ...), далее идут графы с одинаковыми названиями:
    Cлева Destination, целевые регистры; в графе data type выбираем метод выбора - по ID (GPR Immediate) или по названию (GPR Entried).
    ниже, в графе value, выбираем или название или ID самого регистра.
    Cправа Source, источники: аналогично левой части но здесь есть возможность выбрать числовой ввод (10-ный или 16-ричный в зависимости от Destination), пользовательские и системные регистры (по названию или по ID).

    При выполнении операции логического сравнения всё выглядит немного иначе:
    В верхней части подраздела Compare находится операнд 1, что сравнивают (PSR и GPR по названию или ID),
    Ниже оператор сравнения

    & - логическое И
    == - равно
    != - не равно
    >= - больше или равно
    > - больше
    <= - меньше или равно
    < - меньше
    В нижней части операнд 2, с чем сравнивают (числовое значение или же PSR и GPR по названию или ID)

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

    В интерактивной графике немаловажное место занимают виртуальные кнопки или DUMMY (призрак, пугало). От обычных кнопок они отличаются отсутствием графической составляющей и, как следствие невидимы при просмотре диска. Они применяются для выполнения различных вспомогательных команд и по этому в 99% случаев имеют флаг Auto Action. Оставшийся 1% это кнопки доступа к скрытым бонусам.
    О создании и применении виртуальных кнопок вы узнаете по ходу повествования.


    Не буду снова перечислять необходимые действия для назначения команд, они описаны в предварительной сборке. Укажу только основные графы и команду в целом.
    Напомню что для назначения навигационных команд следует открыть кнопку и сделать двойной клик на вложенном в неё значке NaviagtionCommand для открытия окна NaviCommand Editor.
    При переходе к следующей кнопке достаточно одного клика на значке кнопки или значке её навигационных команд.

    И вот навигация глав в Main Menu. Простым назначением LinkMK здесь не отделаться - маркер не является самостоятельной единицей как программа в DVD - и переход возможен только в пределах того плейлиста в котором находится кнопка.
    Для выполнения этой задачи у нас есть два пути. Первый это простой инструмент ChapterJump. Двойным кликом по значку Scenario откроем Scenario Editor
    (из-за своей величины это не самое удобное средство, но при желании, его можно вывести отдельным окном во весь экран), перемещаем блоки маркеров глав поближе к блокам кнопок главного меню,
    нажимаем кнопку Connect и выбираем инструмент ChapterJump,

    нажимаем на значке cmd в блоке кнопки, тянем в блок маркера и там отпускаем,

    Смотрим навигационные команды Title#1 - там уже сформирован необходимый лист команд

    повторяем операцию для остальных маркеров.

    Можно пойти немного другим путём. Выполнив связь первого маркера идём в DataTree или ScenarioTree, открываем Main Menu далее страницу Chapters 1-4, далее кнопку 1 и редактируем её команды.
    Здесь появился целый набор.

    Выделяем весь лист команд и копируем - ПКМ на выделении > Copy. Теперь вставляем этот набор в лист команд остальных кнопок эпизодов, теперь обращаем внимание на команду 4 Move (GPR)ChapPLMark[ID:4095] 0,
    именно она отвечает за то на какой маркер мы попадаем, для первого маркера значение 0, для второго 1, для третьего 2 и т.д. Изменяем значения четвертой команды для всех кнопок глав.
    И т.д.
    Затем расставляем команды для кнопок Next, Previous и Menu. Разумеется для кнопки Menu везде одна команда перемещающая нас на страницу Main. Кнопка Prev для страницы Chapters 1-4 адресована на страницу Chapters 9-12,
    а Next на страницу Chapters 5-8; для страницы Chapters 5-8: Prev > Chapters 1-4, Next > Chapters 9-12; для страницы Chapters 9-12: Prev > Chapters 5-8, Next > Chapters 1-4. То есть по кругу. Я установил линки на одноимённые кнопки, вы можете назначить на кнопки глав.


    Как и всякий полуавтоматический метод это средство приводит к загромождению проекта, а поскольку наш проект есть оплот религии дзен, мы используем другой метод.
    Можно воспользоваться резервным регистром ChapPLMark[ID:4095] или использовать любой свободный, с точно такими же значениями, но теперь список команд для кнопки 1 будет значительно проще:
    1 Move (GPR)ChapPLMark[ID:4095] 0
    2 JumpTitle Title#1[ID:1]


    для кнопки 2:
    1 Move (GPR)ChapPLMark[ID:4095] 1
    2 JumpTitle Title#1[ID:1]


    и далее для других кнопок

    В MO заголовка с фильмом теперь будут такие команды:

    1 if((GPR)ChapPL[ID:4095] !=0) Goto Chapter PLay[Label]
    2 PlayPL Фильм[ID:0]
    3 JumpTitle TopMenu[ID:0]
    Chapter Play
    4 PlayPlatMK Фильм[ID:0] (GPR)ChapPLMark[ID:4095]
    5 Move (GPR)ChapPLMark[ID:4095] 0
    6 JumpTitle TopMenu[ID:0]


    Т. е. если GPR ChapPL [ID:4095] имеет значение отличное от ноля выполняется переход на лейбл Chapter Play иначе говоря пропускаются команды 2 и 3 и выполняется команда 4 - воспроизведение маркера плейлиста "Фильм", номер маркера определяется значением регистра ChapPL[ID:4095]. по окончании плейлиста ChapPL сбрасывается на ноль (здесь не обязательно) и далее выход в главное меню. Если GPR ChapPL [ID:4095] равен нолю то команды 2 и 3 выполняются: воспроизводится плейлист Фильм и по окончании выход в главное меню.

    Теперь нужно будет подправить команды в кнопке Play на главной странице дабы нам не мешало логическое сравнение при повторном вызове фильма:
    1 Move (GPR)ChapPLMark[ID:4095] 0
    2 JumpTitle Title#1[ID:1]

    (При желании можно скомбинировать оба приёма т. е. воспользоваться инструментом Chapter Jump а потом доработать, сократив количество команд.)

    Хотя если подумать то при таком раскладе первые три команды в МО фильма попросту ненужны и в конечном итоге сокращаем до необходимого минимума:

    1 PlayPlatMK Фильм[ID:0] (GPR)ChapPLMark[ID:4095]
    2 Move (GPR)ChapPLMark[ID:4095] 0
    3 JumpTitle TopMenu[ID:0][ID:1]


    Теперь просто выполняется воспроизведение маркера плейлиста "Фильм" согласно значения регистра ChapPL[ID:4095]. потом ChapPL сбрасывается на ноль и мы выходим в главное меню.
    Я думаю при том же функционале будет значительно компактнее.

    Для страницы Bonuses
    Назначаем кнопке Bonus 1 команду CallTitle#2[ID:2];
    кнопке Bonus 2 ― CallTitle#3[ID:3];
    Bonus 3 ― CallTitle#4[ID:4].
    Для кнопки меню SetButtonPage Button:Bonuses[ID:3] Page:Main[ID:1], т.е. возврат на главную страницу.
    В фильм-объекты бонусов после команд воспроизведения плейлистов добавим команду Resume, что бы по окончании воспроизведение возвращалось в меню или фильм в зависимости от того откуда были вызваны бонусы. Теперь команды в МО имеют законченный вид:


    Теперь сделаем небольшой трюк: после просмотра бонуса плеер снова вернётся в меню, причём на станицу бонусов выделяя кнопку только-что просмотренного бонуса.
    Для начала перейдём в окно NaviCommand Editor, нажмём кнопку Register и назовём какой-нибудь регистр Bonus Number. После этого добавим в фильм-объекты бонусов команды:
    для первого бонуса (Title#2) - Move (GPR)Bonus Number[ID:0] 1
    для второго (Title#3) - Move (GPR)Bonus Number[ID:0] 2
    для третьего (Title#4) - Move (GPR)Bonus Number[ID:0] 3
    Эти команды должны стоять первыми в списке команд, т. е. сначала регистру задаётся значение, а потом уже проигрывается плейлист (это нужно что бы наш трюк работал и при вызове меню из поп-ап или пульта ДУ).
    Вернёмся на страницу Intro. Создадим в ней виртуальную кнопку ― ПКМ на значке страницы > New > Virtual Assets > в открывшемся окне жмём ОК для создания ButtonOverlapGroup, далее ПКМ на BOG > New > Virtual Assets > жмём ОК для создания кнопки.


    Назовём BOG и кнопку Bonuses и сделаем её автоактивной ― двойной клик на кнопке и в открывшемся окне ставим чекбокс Auto Action


    присвоим ей команды:

    таким образом если GPR Bonus Number не равен нолю воспроизведение переходит на кнопку соответствующего бонуса, если равно нолю переходит на кнопку Intro. Далее нужно чтобы кнопка Bonuses выбиралась на странице по умолчанию, для этого мы, либо перетаскиваем её BOG выше BOG Intro, либо в Property страницы в графах Default Selected Button и Default Activated Button указываем нашу кнопку.

    Чтобы при повторном вызове меню наш трюк не мешался под ногами, поставим команду Move (GPR)Bonus Number[ID:0] 0 в кнопку Меню на странице Bonuses, эта команда должна быть первой в списке.

    Навигация на странице Settings. Здесь будет сложная навигация.
    Для начала создадим виртуальную кнопку Settings Select и назначим её дефолтной:
    в Property страницы Settings как было указано выше;
    назначим команду перехода на неё в кнопке Main To Settings одноимённой страницы

    Самая простая команда это конечно возврат на главную страницу присваиваемый кнопке Меню - SetButtonPage Button:Settiings[ID:2] Page:Main[ID:1]
    С назначением субтитров дела обстоят так: как вы помните мы создавали дополнительные кнопки для выделения задействованных дорожек нам нужно включать и их
    кнопка Subs

    кнопка Off Subs

    т. е. кнопка Subs включает кнопку Subs ON (с дополнительным выделением), включает кнопку Off Subs (без дополнительного выделения) и включает поток субтитров;
    кнопка Off Subs включает кнопку Off Subs ON (с дополнительным выделением), включает кнопку Subs (без дополнительного выделения) и выключает поток субтитров.
    С переключением звуковых потоков есть один подвох, если вы просто назначите команду SetStream Audio:No=1 (или 2) не назначая никаких субтитров, то увидите что в итоге в хвосте добавится команда PG_textST: [DispOff] и она действительно будет выключать субтитры без вашего на то согласия. Весь блок SetStream завязан на субтитрах, любая команда будет сопровождаться снятием или установлением флага демонстрации субтитров.
    Что бы разрулить ситуацию придётся заняться вычислениями, а для этого немного заняться теорией.
    BD поддерживает 32 потока аудио, 32 потока графических субтитров и 256 потоков текстовых субтитров к тому же эти же потоки могут использоваться и в режиме картинка-в-картинке (PiP). Под всё это выделен большой регистровый блок. Значения системных регистров аудио в этом блоке простые 1,2,3 и т. д., а вот с субтитрами заминка. Дело в том что этот блок в целом и отдельные его части не могут иметь суммарное нулевое значение. С аудио всё просто - всегда будет воспроизводиться хотя бы один поток. Но субтитры могут быть и выключены, их вообще может не быть.
    По этому под субтитры выделен громоздкий системный регистр PG TextST stream and PiP PG TextST stream PSR[ID:2] состоящий из нескольких ячеек.

    Почти все эти ячейки заполняются независимо, но считывается значение всего регистра в целом. Таким образом мы имеем три пограничных значения:
    Первое. Максимальное значение. Отсутствие субтитров - 01111111111111111111111111111111
    Второе. Минимальное значение когда поток демонстрируется - 1000000000000000000000000000000
    Третье. Минимальное значение. Поток не демонстрируется - 0000000000000000000000000000001
    Понятно что второе значения чисто теоретическое, по этому оно и является основной интересующей нас границей - если его сравнить с третьим значением, то станет понятно что любое значение меньше второго означает что субтитры, сколько бы их ни было, не демонстрируются.
    Далее можно понять какие реальные значения принимает регистр при наличии одного потока субтитров:
    10001111111111110000000000000001 - поток демонстрируется
    00001111111111110000000000000001 - поток выключен
    Двенадцать единиц в центре означают что поток не ассоциирован с PiP субтитрами от чего там выставлено максимально возможное значение.
    Воспользовавшись калькулятором Windows, вычисляем десятичные значения:
    2147483647 - отсутствие субтитров
    2147483648 - пограничное теоретическое значение (в проекте рекомендуется пользоваться реальным значением 2147483647);
    2415853569 - первый поток демонстрируется;
    2415853570 - второй поток демонстрируется;
    2415853571 - третий поток демонстрируется и. д.;
    268369921 - субтитры выключены;
    Не стоит обращать внимание на численные значения десятичных вариантов, они не имеют прямого отношения к номерам потоков, а используются для облегчения работы. И пусть вас не смущает что для проверки субтитров мы используем число означающее их полное отсутствие, просто это ближайшее реальное число.
    Вооружившись этими знаниями мы, при назначении команд кнопкам Audio 1 и Audio 2, будем проверять: если субтитры демонстрируются - ставим флаг демонстрации; если выключены - снимаем флаг. Проверяется значение непосредственно регистра PSR[ID:2].
    Audio 1


    Audio 2


    Можно использовать сравнение с пограничным значением, особенно если у вас будет более одного потока субтитров
    3 if((PSR)PG TextST stream and PiP PG TextST [ID:2] > 2147483647 SetStream Audio:No=1 PG TextST: [DispON]
    4 if((PSR)PG TextST stream and PiP PG TextST [ID:2] < 2147483647 SetStream Audio:No=1 PG TextST: [DispOFF]


    Эти команды можно, при желании, скопировать в кнопки Audio 1 ON и Audio 2 ON, но это ни на что не повлияет.

    Вернёмся в кнопку Settings Select в ней нам нужно назначить дополнительное выделение кнопок в соответствии с активными потоками:

    В варианте с вращением (Menu Roll) мы как помнится не делали кнопок с дополнительным выделением и сделаем их сейчас. Продублируем кнопки внутри каждой BOG > двойной клик на кнопке, в открывшемся окне скопируем изображение A1 или S1 и вставим его в окно состояния Normal.

    И далее как описывалось выше.


    Навигация в Pop-Up Menu.
    В DataTree выделяем Pop-Up > Epoch#1 > Pop-Up. В окне Property в графе User InterfaceModel устанавливаем Pop Up иначе меню будет висеть на экране всё время фильма. Можно также поставить время закрывания поп-ап меню -
    в графе User TimeoutDuration поставить время отсчитываемое от последнего действия в меню, по истечению которого меню автоматически закроется.

    Альтернативой этому является нажатие клавиши Pop-Up напульте ДУ, она как открывает так и закрывает меню.
    Как вариант - внедрение в Pop-Up Menu кнопки с командой PopupMenuOff.

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

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

    А с навигацией глав теперь всё просто, назначаем команды LinkMK, для первого маркера LinkMK 0, для второго LinkMK 1 и т.д.


    В поп-ап меню мы добавим ещё два трюка.

    Автозакрытие поп-ап меню.
    При вызове эпизода со страницы выбора глав поп-ап меню будет демонстрироваться пока не сработает User TimeoutDuration или не будет нажата клавиша на пульте ДУ. Мы сделаем что бы оно закрывалось автоматически. Продублируем кнопки эпизодов внутри каждой BOG и сделаем дубликаты автоактивными . В верхние кнопки добавим команду EnableButton включающую нижнюю кнопку,


    а во всех дубликатах удалим команды и назначим PopupMenuOff.


    При нажатии на кнопку будет выполнен вызов эпизода фильма и включение автоактивной кнопки выполняющей команды закрытия меню.

    Подсветка текущего эпизода.
    При нажатии кнопки "Эпизоды" будет выбрана страница и кнопка соответствующая текущему эпизоду. Основной смысл заключается в в том что бы узнать значение системного регистра PSR[ID:5] Chapter и задать это значение в команде SetButtonPage.
    Для начала добавим в каждую страницу виртуальную автоактивную кнопку Chapter Select.
    Делаем двойной клик на кнопке Main to Chapters в одноимённой странице, чтобы открыть её в NaviCommand Editor`e и присваиваем ей команды

    (Отмечу что проверка должна происходить именно в обратном порядке, если расположить их в прямом порядке то в при значении регистра, допустим, 10 сработает первое условие и мы попадём на вторую страницу, где нет 10-го эпизода.)
    Жмём кнопку Register и называем Chapter Number имеющийся свободный регистр, наша задача присвоить ему значения системного регистра PSR[ID:5] и далее назначить этот регистр в качестве ID кнопки эпизодов (на прямую здесь не получится). И вот тут мы сталкиваемся с двумя проблемами: во-первых ID начинаются с нуля, а значения PSR[ID:5] с единицы, во-вторых из-за кнопок автозакрытия кнопки эпизодов идут не по порядку а через одну.
    Значит снова придётся заняться вычислениями и приводить значения GPR Chapter Number к требуемым.
    Для страницы Chapters 1-4


    Для страницы Chapters 5-8


    Для страницы Chapters 9-12


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

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


    Для страницы Chapters 5-8


    Для страницы Chapters 9-12


    Обратные переходы
    Можно сделать небольшой финт с переходами по страницам, у нас есть переходы с главной страницы на остальные а можно не выходя из Сценариста создать обратные переходы.
    Продублируем страницы перехода Main to Settings, изменим её название и название кнопки в ней на Settings to Main, а затем, сделав двойной клик на кнопке, перетащим изображения активного состояния с права на лево чтобы они расположились в обратном порядке. Далее на странице Settings скопируем команду кнопки Меню и вставим в кнопку Settings to Main, а самой кнопке Меню зададим команду
    SetButtonPage Button: Settings to Main[ID:2] Page: Settings to Main[ID:1].

    Т. е. теперь при нажатии кнопки Меню будет выполнен переход на страницу Settings to Main, где воспроизведётся анимация замещения графики настроек на графику главной страницы а за тем будет переход на кнопку Settings на главной странице.
    Чтобы удостоверится что анимация работает нормально можно просмотреть её в Scenarist`e
    В окне IG Editor выберите Activated в Visible Button State и щёлкните на нужной кнопке и станут доступны кнопки просмотра анимации:

    Теперь поступим так же с остальными страницами переходов. Только переход из Эпизодов на главную страницу у нас один, а страниц с главами 3, по этому при переходе со страниц Сhapters 5-8 или Сhapters 9-12 будут меняться картинки эпизодов, избежать этого можно будет или путём создания страниц в фотошопе заранее, или путём замены картинок абстрактными рамками (тоже заранее), или же кнопки Меню этих страниц будут возвращать на страницу Chapters 1-4, а от туда уже на обратный переход (что, как бы, не комильфо).

    Озвучка кнопок.
    Для рассматриваемых проектов я вырезал звуки арфы из начала "Художественной сюиты в 13 частях" Андреаса Фолленвайдера, продолжительность звуков 800 миллисекунд, для выделения нормально, но для активного состояния это многовато, обычно делают 500 мс и меньше.
    Чтобы добавить звуки создаём виртуальный звуковой блок. ПКМ на папке Data или в окне Data Editor выбираем New > VirtualAsset, в окне Create Virtual Asset ставим SoundBDMV и жмём ОК.

    Теперь перетаскиваем файлы звуков в DataTree или в Data Editor, всплывает знакомое окно Select Coding Type, конечно выбираем Button Sound.
    Далее делаем двойной клик на значке SoundBDMV в появившемся окне SoundBDMV Setting жмём Add, в окне Button-Sound List выделяем наши файлы жмём ОК в обоих окнах.

    Теперь наши звуки находятся в звуковом блоке и в готовом диске это файл AUXDATA\sound.bdmv.
    Назначаем звуки кнопкам. Нажимаем ПКМ на значке меню и выбираем Button Properties Setting. Откроется окно Setting Button Properties, справа стаим чекбоксы Selected и Activated и выбираем наши звуковые файлы, слева ставим чекбоксы на кнопках к которым хотим добавить звуки.

    Я назначил звуки выбора всем кнопкам, кроме кнопок Intro и страниц переходов поскольку у них только активное состояние (в поп-ап есть ещё несколько слайсов которым тоже не нужны звуки). Звук активации добавил только в меню Main Menu в кнопку Play и в меню Pop-Up Menu в кнопки Menu.
    Связано это с тем что у нас не анимированы активные состояния и для воспроизведеия звуков хватает времени только при переходе на видеозаголовки.
    Следующий шаг - нужно согласовать звуковые дорожки с озвучкой кнопок. Выделяем плейлист Флильма и в окне Propertiy в графе Audio Mux App Flag ставим Applied Secondary Audio/Interactive Sound (если этого не сделать сценарист выдаст ошибку с требованием установить нужное значение). Повторяем то же для плейлиста Menu. (Если при готовом звуковом блоке не назначать звуков кнопкам и при этом смуксить диск воспроизводиться он не будет.)
    Со звуками всё.

    Отладка кнопок и страниц.

    Здесь мы рассмотрим немаловажные вопросы авторинга. Я намаренно вывел их в отдельные абзацы. Вопросы эти кажутся второстепенными, но без всего нижеизложенного диск работать нормально не будет. И часто начинающие, да и "матёрые" пользователи забывают об этих вещах.

    Состав клипа меню.
    В том виде как описано выше в главном меню нельзя будет переключить ни аудио, ни субтитры, это будет работать только в поп-ап меню. В клипе меню должен быть тот же состав дорожек что и в фильме, иначе плееру будет нечего переключать.
    Продублируем звуковую дорожку меню (если меню без звука добавим две немые дорожки), дублирование делается копипастом в окне DataTree, а потом дубль добавляется в клип. И сделаем фиктивные сабы, для этого в фотошопе создаём прозрачный Full HD документ и в самом уголке заполняем цветом пару пикселей, переводим в режим Index Color, сохраняем как файл PNG (назовём, например, Fake Sub) и перетаскиваем в Data Editor Scenarist`a
    В окне DataTree ПКМ на папке Data > New > Grafic Asset > PG > выбираем частоту кадров и разрешение > далее при запросе состава субтитров просто жмёте ОК.

    У нас появляется новый объект субтитров, открываем его, делаем двойной клик на значке DisplaySet#1 - открывается PG Editor - перетаскиваем в него из DataTree файл Fake Sub и выбираем CompositionObject#1.

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

    Ресуминг или резюме.
    Это функция позволяет возобновить воспроизведение диска из точки, где вы остановились в прошлый раз. В BD её возложили по большей части на плееры, но программно она тоже осуществляется.
    Во-первых, как в наших бонусах, кнопочная команда CallTitle и после плейлиста команда Resume;
    Во-вторых ресуминг между главным меню и фильмом который включается в Property фильм-объекта в графе Resume Intention Flag и имеет две позиции:
    Suspended - когда информация о фильм-объекте (глава, время воспроизведения, активные дорожки и т. д.) задерживается в памяти плеера до возобновления;
    Discarded - когда информация не задерживается. К сожалению многие плееры игнорируют эти установки управляя ресумингом по своему усмотрению, что бы быть уверенными в нормальной работе этой функциии поставим позицию Suspended в МО фильма и добавим команду в кнопку Play, окончательно список команд будет выглядеть так
    1 Move (GPR)ChapPLMark[ID:4095] 0
    2 Resume
    3 JumpTitle Title#1[ID:1]
    Т. е. сначала сбрасывается значение маркера главы, затем выполняется попытка ресуминга, если фильм вызывается в первые за сессию, ресуминг невозможен, выполняется переход в заголовок фильма, если вызывается повторно, ресуминг выполняется.
    Правда некоторые программные плееры не смогут обеспечить выполнение второй команды после поиска глав через поп-ап меню и повиснут. Так что если планируете использование, например, ArcSoft TotalMedia Theatre версии 5 вторую команду не следует добавлять.

    Нужно назначить соседство кнопок чтобы стало возможным переключение между кнопками на пульте ДУ. Делаем двойной клик на значке страницы что бы открыть окно IG Editor, он нам нужен для контроля. Если мешают названия кнопок ПКМ на свободном месте окна IG Editor и выбираем NaveTag > View, в том же контекстном меню выбираем Button Locked, что бы случайно не сдвинуть кнопки. Масштаб отображения регулируется в главном меню кнопками "+" "-".
    Выделяем значок кнопки и в окне Property в разделе Neighbor назначаем соседние кнопки.

    Upper ButtonRef - ссылка на верхнюю кнопку
    Lower ButtonRef - ссылка на нижнюю кнопку
    Left ButtonRef - ссылка на левую кнопку
    Right ButtonRef - ссылка на правую кнопку
    Это можно сделать и в IG Editor перетягивая цветные треугольники на кнопки.
    Upper Button Ref - соседняя кнопка сверху. Зелёная стрелка.
    Lower Button Ref - соседняя кнопка снизу. Малиновая стрелка.
    Left Button Ref - соседняя кнопка слева. Красная стрелка.
    Right Button Ref - соседняя кнопка справа. Жёлтая стрелка.
    Например нам нужно назначить переход с кнопки "Меню" на кнопку "1" при нажатии на пульте ДУ клавиши "Вниз". Захватываем малиновый треугольник внизу кнопки "Меню" и тянем на кнопку "1".

    отпускаем и появляется диалог привязки

    One way to <название кнопки> - однонаправленная привязка
    Shuttle to <название кнопки> - двунаправленная привязка, когда к целевой кнопке добавляется обратная привязка к исходной кнопке
    Хороший метод, но при тесном расположении кнопок бывает трудно разобраться какой треугольник к чему относится, в этом случае приходится ориентироваться по цвету и подсветке исходной кнопки.
    Чтобы переключиться между кнопками внутри одной BOG - ПКМ на кнопке и в контекстном меню выбираем нужную.

    Для автоматизации процесса можно воспользоваться кнопкой Route в разделе Auto Rute окна IG Editor, если поставить чекбокс Wrap вертикальный или горизонтальный рутинг зациклиться.

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



    Проверяем дефолтные и автоматические состояния кнопок.
    Делаем двойной клик на значке кнопки Intro и в окне Edit Button Info ставим чекбокс Auto Action, повторяем тоже для кнопки Main to Chapters и для других страниц переходов.
    Теперь последовательно нажимая на значки страниц проверяем в окне Property состояния параметров Animated Frame Rate Code, Default Selected Button Ref и Default Activated Button Ref. Для страниц Intro выделеная и активная кнопка по умолчанию должна быть Intro, для страницы Main to Chapters соответственно Main to Chapters и так же для остальных страниц переходов.
    На других страницах автоактивных кнопок у нас нет, а выделенные по умолчанию зависят от команды SetButtonPage адрессующей на эту страницу.
    От Animated Frame Rate Code зависит скорость воспроизведения анимации, причём это не колличество кадров в секунду а коэффициент. Т.е. если Animated Frame Rate Code равна 0 то анимации не будет, если равна 1 то все кадры воспроизведутся с частотой кадров проекта, если 2 то воспроизведение замедляется, каждый кадр анимации воспроизводится в течении двух кадров видео.
    Я расставил везде 1, а для страниц переходов 2 таким образом на этих страницах анимация снизилась в два раза.

    Пользовательские функции.
    На BD как и на DVD можно запрещать и разрешать выполнение определённых функций при воспроизведении плейлиста. Заперщать функции можно и для плей-айтем и для плейлиста в целом, доминируют запреты плейлиста. Чтобы попасть в настройку функций нужно выделить плейлист, в окне Property найти графу UO Mask и дважды кликнуть в её правом конце, появится окно настоек


    Time Control
    Resume - функция возврата из меню в точку фильма в которой была нажата кнопка Top Menu на пульте ДУ
    Stop - остановка диска
    Playback Control
    Chapter Search - воспроизведение с указанной главы (средствами плеера)
    Time Search - воспроизведение с указанного времени (средствами плеера)
    Skip To Next Point, Skip Back To Previous Point - переключение по главам с пульта ДУ
    Pause On - пауза
    Forward Play, Backward Play - перемотка вперёд и назад
    Primary Audio Stream Number Change - переключение аудиодорожек
    PG textST Enable Disable - включение выключение субтитров
    Angle Number Change - переключение углов зрения
    PG textST Stream Number Change - переключение дорожек субтитров
    Secondary Video Enable Disable, Secondary Audio Enable Disable - включение выключение вторичных аудио и видеодорожек
    Secondary Video Stream Number Change, Secondary Audio Number Change - переключение вторичных аудио и видеодорожек
    PIP PG textST Stream Number Change - переключение субтитров сопровождения картинки в картинке
    Interactive
    Move Up Selection Button, Move Down Selection Button, Move Left Selection Button, Move Right Selection Button - переключение между кнопками с пульта ДУ
    Select Button - выделение кнопки
    Activate Button - активация кнопки
    Select Button and Activate - выделение и активация кнопки
    PopUp On, PopUp Off - включение выключение поп-ап меню

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

    Если плейлист меню в домене меню достаточно снятия чекбоксов: Primary Audio Stream Number Change, PG textST Enable Disable, PG textST Stream Number Change.

    Собираем диск окончательно. Однако если вы в правом нижнем углу увидели такую тревожную картину,

    необходимо принять меры. Идём Tool > Disc Layout или нажимаем кнопку Disc Layout

    в открывшемся окне Layout Editor выбираем закладку Physical Layout и там жмём кнопку Auto Layout, откроется окно
    Select auto layout type, где ставим переключатель Dual Layer.

    Жмём везде ОК. Теперь картина более отрадная.

    Если вы хотите поставить разрыв слоя в ручную, то в закладке Disc Settings следует выбрать Number of Layer = 2, в Layer Break Point выберите файл вашего фильма (или какого либо клипа близкого к разрыву слоя),
    поставьте чекбокс PTS Break и в списке PlayListMark выберите главу которая будет распологаться в начале второго слоя или в графе TimeCode укажите время разрыва слоя.


    Для BD на слое 0 всегда должно быть больше информации чем на слое 1.
    Если вы уверены что ваши болванки и программа нарезки поддеpживают пересыщение (запись более 25GB на слой) то в графе Layer Size можете ставить 27 (GB)

    Нажимаем Tool > MUX и ставим переключатель Partial MUX, поскольку клипы мы вывели раньше, Scenarist смуксит всё что осталось и затратит на это меньше времени, чем на полный муксинг. Так же Partial MUX удобен при доработке и исправлении ошибок навигации - несколько секунд и диск готов для тестирования.
    Не забываем удалить папку AACS и проверяем работоспособность диска.


    *

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


    Последний раз редактировалось Mowny Devam; 22.03.2017 в 23:57.
  4. #4
    В продолжении темы хочу рассказать о возможных приёмах авторинга.

    Однооконный выбор эпизода

    Это один из вариантов дизайна меню. Все кнопки эпизодов находятся в одном окошке и сменяют друг друга при нажатии клавиш > или < на пульте ДУ

    Преимущества: занимает мало места на экране, простое решение сочетания автозакрытия поп-ап меню и подсветки текущего эпизода
    Недостатки: усложнённая навигация переключения кнопок; максимум 32 эпизода.
    При создании графики в Фотошопе располагаем слои со скриншотами друг над другом первая глава - самый верхний слой и далее вниз по убыванию.
    Именуем слои S1: 1 и далее до S1: 32 помещаем каждый слой в группу B: 1 и т.д., а все группы B: в одну группу BOG: Chapters.

    Что бы пользователь мог легче понять, как переключаться между кнопками добавим в фон стрелочки враво-влево.
    Навигация на странице будет такая: каждая кнопка выбора эпизодов будет содержать уже знакомые нам команды (см. пост #7 ), а соседство кнопок будет выглядеть принципиально по другому. Создадим виртуальные кнопки, одну на каждую главу, они будут "управляющими", кнопками, сделаем их автоактивными, проименуем (например CH1 будет управлять кнопкой 1 и т.д.) и назначим им команды
    для первой кнопки
    EnableButton 1 [ID0]
    SetButtonPage Button:1[ID0] Page:Chapters[ID5]


    для второй кнопки
    EnableButton 2 [ID1]
    SetButtonPage Button:2[ID1] Page:Chapters[ID5]

    и т.д.

    Таким образом кнопка CH1 будет включать и выделять кнопку 1, кнопка CH2 - кнопку 2 и далее.
    Непосредственно соседство назначается так:
    кнопке 1: вправо - кнопка CH2, влево - кнопка CH32
    кнопке 2: вправо - кнопка CH3, влево - кнопка CH1
    кнопке 3: вправо - кнопка CH4, влево - кнопка CH2
    и так далее, нижнее соседство назначается кнопке перехода на главную страницу и здесь уместнее сделать эту кнопку виртуальной автоактивной.
    Для наглядности это проделывается в окне IG Editor, предварительно расположив виртуальные кнопки так, чтобы они не перекрывали друг друга.

    Назначать соседство можно только видимым кнопкам, делать видимой нужную можно из контекстного меню вызываемого ПКМ по кнопке.


    Автозакрытие поп-ап меню бует несколько иным, если есть фон, то при сборке графики в Фотошопе создаём самую нижнюю дополнительную кнопку в BOG Chapters кадром которой будет
    наш фон, если фона нет - создаем виртуальную кнопку в Scenarist`e, называем её Off . Этой кнопке назначается команда PopUpMenuOff, а кнопкам глав команда EnableButton Off[ID75]. Но максимальное количество кнопок в BOG - 32 и в нашем слчае такой номер не пройдёт.
    Чтобы избежать проблем с автозакрытием сделаем иначе. Создаём отдельную BOG "Off" в ней две кнопки, делаем обе кнопки автоактивными. Команды навигации теперь бдут совсем иными:
    для кнопки главы

    для кнопки BOG: Off, Button: Off

    для кнопки BOG: Off, Button: Button#1

    Таким образом мы задаём значении парамтру Chapter Jamp, который мы использовали В Main Menu, и переходим на кнопку BOG Off, Button Off, там мы включаем кнопку Button#1, которая закрывает по-ап меню, но, как вы помните, команды верхней кнопки продолжают выполнятся и тут мы назначаем номер маркера согласно значению (GPR)Chapter Jump[ID:2].


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

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

    С составлением плейлистов всё просто. Создаём плейлист на основе первого клипа, а затем, в окне StreamTree, перетаскиваем клипы в нужной последовательности из папки Clip на значок плейлиста. Для плавного воспроизведения выделяем PlayItem и в свойствах ставим флаг Seamless. Во избежании появления ошибки "There is no "clean break" at the end of AV stream.", при рендеринге добивайтесь одинаковой продолжительности аудио и видео.
    При использовании AC3 подрезайте звук чтобы он был на один кадр короче видео. Или, как рекомендует разработчик, кодировать аудио на полсекунды длиннее и уже после добавления в клип выравнивать по длине видео. Для этого в окне Clip Editor сделайте двойной клик по звуковой дорожке
    (или ПКМ > Time Info) и в открывшемся окне ES Time Info Setting в поле Duration измените длительность.

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

    Если с первым вариантом всё более-менее понятно, то насчёт второго возникают сомнения - помнится на DVD к углам зрения предъявлялись драконовские требования.
    На BD ограничения совсем небольшие: во-первых поскольку, все клипы углов будут находится в одной PlayItem, продолжительность их должна быть одинаковой, во-вторых максимальное количество углов - 9, включая основной (Main)
    Если подразумевается частое переключение углов, разработчик рекомендует, для бесшовного переключения, придерживаться определённых правил:

    1.Битрейт второго угла зрения желательно устанавливать равным или меньшим битрейта первого угла.
    2.Для всех углов рекомендуется при кодировании выставлять одинаковый интервал GOP и чем он больше тем лучше.
    3.CBR предпочтительнее.

    Теперь конкретнее о создании Multy-Angle.
    Второй, третий и т.д. углы это отдельные клипы с равным количеством дорожек. Допустим у нас два варианта фильма в такой последовательности:
    первый вариант - Clip#501, Clip#502, Clip#916, Clip#918, Clip#505
    второй вариант - Clip#501, Clip#502, Clip#909, Clip#910, Clip#505
    Создаём плейлист из клипов первого варианта, затем просто перетаскиваем клип 909 на PleyItem 916, а клип 910 на PleyItem 918. Образуется второй угол, который именуется, почему-то, Angle#1.
    В итоге плейлист выглядит так

    и в развёрнутом виде

    Для включения того или иного угла используется комплексная команда Set Stream.

    Здесь команда Angle:No=1 назначает угол Main в плейлисте, а Angle:No=2 - угол Angle#1
    Для корректного воспроизведения, её нужно назначать специальным настроечным кнопкам, а вызов фильма осуществлять кнопками "Просмотр" и меню эпизодов.
    Теперь собираем наш диск: нажимаем MUX и с изумлением видим сообщение об ошибке "Error : Clip is not referred to any PlayItem or SubPlayItem." с указанием на клипы 909 и 910 т.е. второй угол.
    Решаем эту проблему просто - кидаем эти два клипа в один плейлист и назначаем в отдельный видеозаголовок не связанный ни с какими другими элементами сценария, места он не займёт, пользователь попасть в него не сможет и Scenarist будет доволен.

    Теперь вернёмся к первому варианту компоновки сценария, к нескольким плейлистам.
    Казалось бы всё понятно создаём кнопки "Просмотр первого варианта" и "Просмотр второго варианта" и т.д. которые линкованы с соответствующими заголовками, а как быть с выбором эпизодов? Городить дополнительное меню для других вариантов? Нет, конечно, поступим иначе.
    Создадим и кнопку "Просмотр" и кнопки выбора вариантов.
    Назовём какой-нибудь GPR "Вариант просмотра" и кнопкам выбора вариантов назначим команды:

    Для первого варианта Move (GPR)Вариант просмотра[ID:1] 0
    Для второго варианта Move (GPR)Вариант просмотра[ID:1] 1
    и т.д.

    Теперь в фильм-объектах будет такой список команд:

    Для первого варианта фильма

    1 if ((GPR)Вариант просмотра[ID:1] > 0) JumpTitle Фильм 2[ID:1]
    2 if ((GPR)Chapter Jump[ID:0] > 0) GoTo ChapterJump [Label]
    3 PlayPL Фильм[ID:0]
    4 JumpTitle TopMenu[ID:0]
    Chapter Jump
    5 PlayPlatMK Фильм[ID:0] (GPR)Chapter Jump[ID:0]
    6 JumpTitle TopMenu[ID:0]


    Для второго (и т.д.) варианта фильма

    1 if ((GPR)Chapter Jump[ID:0] > 0) GoTo ChapterJump [Label]
    2 PlayPL Фильм 2[ID:1]
    3 JumpTitle TopMenu[ID:0]
    Chapter Jump
    4 PlayPlatMK Фильм 2[ID:1] (GPR)Chapter Jump[ID:0]
    5 JumpTitle TopMenu[ID:0]


    Теперь после нажатия на кнопку "Просмотр второго варианта" плеер будет переходить на заголовок Фильм 2 при нажатии кнопок просмотра или эпизодов,
    пока пользователь не нажмёт кнопку "Просмотр первого варианта"

    Есть ещё вариант со сборником короткометражных роликов

    1. Создаёте новый плейлист помещаете в него клипы в нужной последовательности. Приписываете плейлист к новому MO в новом заголовке. Линкуете к нему кнопку Play All.

    -----------

    Этот и следующий способы используются если у клипов разные параметры.
    2. Создаёте новый заголовок с MO (линкуете к нему кнопку) и приписываете к нему уже существующие плейлисты. Например:
    1 PlayPL 1[ID:0]
    2 PlayPL 2[ID:1]
    ....
    19 PlayPL 19[ID:18]
    20 JumpTitle TopMenu[ID:0]

    (Сценарист ругнётся, что, мол, может быть только один плейлист - не обращайте внимание)

    --------------

    3. Логическое сравнение.
    Какому нибудь GPR присваиваете название (например "Играть Всё") и в кнопке задаёте ему значение отличное от ноля:
    1 Move (GPR)Играть Всё[ID:0] 1
    2 JumpTitle Первый Клип[ID:1]


    А команды в MO заголовка Первый клип будут выглядеть так:
    1 PlayPL 1[ID:0]
    2 if ((GPR)Играть Всё[ID:0] == 1) JumpTitle Второй Клип[ID:1]
    3 JumpTitle TopMenu[ID:0]


    и т.д.

    В этом случае не забудьте сбросить значение GPR Играть Всё на ноль в командах других кнопок
    1 Move (GPR)Играть Всё[ID:0] 0
    2 JumpTitle Первый Клип[ID:1]

    1 Move (GPR)Играть Всё[ID:0] 0
    2 JumpTitle Второй Клип[ID:2]


    и т.д.


    Иконка диска в меню Sony PlayStation

    Когда вы будете воспроизводить свои диски на Sony PlayStation, то в меню PS3 увидите подобный значок:

    А фирменные диски будут отображаться например так:


    Если вы хотите чтобы и ваши диски отображались в виде картинки, вам придётся сделать Disc Jacket или на профессиональном сленге "пиджак"
    Для создания пиджака есть два пути: взять кадр из фильма или создать свою заставку.
    Свою делаем естественно в графическом редакторе, но сохраняем две картинки 640х360 и 416х240. Дальше почти всё одинаково для обоих вариантов. Идём Tool > Metadata > нажимаем Create New > выбираем Disc Library и выставляем язык вашего диска > жмём ОК.

    У нас открывается окно DiscLib Editor - bdmt_eng.xml. В закладке title пишем наименование диска в графе Name,

    переходим в закладку Description. Если у вас уже приготовлены два графических файла нажимаем Select File и в окне Select Thumbnail указываем в Small Thumbnail файл 416х240, а в Large Thumbnail - 640x360 > жмём ОК.

    А ежели нужно взять кадр из фильма жмём Stillimage Output > в окне Output Still Image выбираем ves-файл с фильмом и указываем время на котором появляется нужный нам кадр > жмём Save > у нас автоматически появляются два нужных файла.
    Далее в низу окна DiscLib Editor - bdmt_eng.xml. в арее MetadataFile нажимаем Save и видим окошко с сообщением что всё сохранено > нажимаем Close.

    Далее открываем Layout Editor закладку Logical Layout, теперь в проводнике винды идём в директорию проекта, в папку Output/Meta и банально перетаскиваем от туда папку DL в окно Layout Editor в папку Meta.


    Содержимое папки DL выглядит так:

    А файл содержит подобную информацию:
    Код:
    <?xml version="1.0" encoding="utf-8"?>
    <disclib xmlns="urn:BDA:bdmv;disclib" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:BDA:bdmv;disclib disclib.xsd">
      <di:discinfo xmlns:di="urn:BDA:bdmv;discinfo">
        <di:title>
          <di:name>Oblivion</di:name>
        </di:title>
        <di:description>
          <di:thumbnail href="./Horizons_BDJ_Jacket_SML.jpg" size="416x240" />
          <di:thumbnail href="./Horizons_BDJ_Jacket_LRG.jpg" size="640x360" />
        </di:description>
      </di:discinfo>
    </disclib>
    Обратите внимание:
    <di:name>Oblivion</di:name> - название диска которое буде отображать PlayStation
    <di:thumbnail href="./Horizons_BDJ_Jacket_SML.jpg" size="416x240" /> -
    <di:thumbnail href="./Horizons_BDJ_Jacket_LRG.jpg" size="640x360" /> - названия графических файлов которые будут использоваться для иконки меню.


    Последний раз редактировалось Mowny Devam; 24.06.2015 в 12:19.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Авторинг в DVD lab Pro 2
    от UVKvideo в разделе Авторинг дисков DVD
    Ответов: 2
    Последнее сообщение: 25.08.2023, 21:45
  2. Ответов: 0
    Последнее сообщение: 29.01.2014, 10:18
-->