Настройка движения файл проекта XML
Эта глава обеспечивает три примера редактирования Движения файл проекта XML. Можно использовать эти примеры в качестве начальной точки для разработки собственных подпрограмм или инструментов для автоматизации Движения, оффлайн редактируя или задач управления.
Примеры в этой главе:
Изменение текста
Изменение текста
Предположим, что проект Движения содержит текстовый объект Движения, текст которого установлен “Добро пожаловать в Техас”. Этот текст записан с двумя различными шрифтами: Stone Sans Sem OS ITCTT (системный шрифт) для “Добро пожаловать В”, и Сценарий (LiveFont) для «Техаса». Кроме того, существует возврат каретки после слова «к».
В этом примере цель состоит в том, чтобы изменить слово «Texas» на «Калифорнию» и шрифт для «Калифорнии» к Подсолнечнику.


Текстовый объект Движения прежде всего полагается на следующие элементы для указания его характеристик:
textobjectstyleRunstyle
В целом текстовые объекты Движения являются подэлементами a scenenode. Если проект Движения содержит многократные текстовые объекты Движения, каждого scenenode элемент с текстовым объектом Движения содержит свое собственное style, styleRun, text и object элементы. Для изменения текстового объекта необходимо сначала точно идентифицировать scenenode и затем измените подэлементы.
Изменение текстового Элемента
Во-первых, изменитесь text элемент. В зависимости от Вашего XML-редактора это появляется как:
<text>Welcome to |
Texas</text> |
Измените это на:
<text>Welcome to |
California</text> |
Изменение объектных Элементов
Движение содержит один объектный элемент для каждого глифа в связанном текстовом объекте:
Глифы начальной буквы перечисления 7-1 в текстовом объекте
<object value=”87”><! letter "W" --> |
<parameter name=”Kerning” id=”1” flags=”16” value=”0” /> |
</object> |
<object value=”101”><! letter "e" --> |
<parameter name=”Kerning” id=”2” flags=”16” value=”0” /> |
</object> |
<object value=”108”><! letter "l" --> |
<parameter name=”Kerning” id=”3” flags=”16” value=”0” /> |
</object> |
. . . |
<object value=”84”><! letter "T" --> |
<parameter name=”Kerning” id=”12” flags=”16” value=”0” /> |
</object> |
<object value=”101”><! letter "e" --> |
<parameter name=”Kerning” id=”13” flags=”16” value=”0” /> |
</object> |
<object value=”120”><! letter "x" --> |
<parameter name=”Kerning” id=”14” flags=”16” value=”0” /> |
</object> |
. . . |
Отметьте следующее:
value=атрибут каждогоobjectэлемент представляет десятичное значение ASCII символа для каждого глифа. Значение ASCII должно соответствовать связанную букву в текстовом элементе.id=изKerningпараметр равен индексу каждого глифа, начиная с 1.Для “Добро пожаловать в Техас”, существует 16 объектных элементов, один для каждого символа в текстовом элементе. Также, новая строка, вкладка, пространство и другие пробельные символы требуют объектного элемента.
Изменение глифов для “Добро пожаловать в Калифорнию”, приводит к ним object элементы (частично показанный):
Перечисление 7-2 измененные глифы в текстовом объекте
<object value=”87”><! letter "W" --> |
<parameter name=”Kerning” id=”1” flags=”16” value=”0” /> |
</object> |
<object value=”101”><! letter "e" --> |
<parameter name=”Kerning” id=”2” flags=”16” value=”0” /> |
</object> |
<object value=”108”><! letter "l" --> |
<parameter name=”Kerning” id=”3” flags=”16” value=”0” /> |
</object> |
. . . |
<object value=”67”><! letter "C" --> |
<parameter name=”Kerning” id=”12” flags=”16” value=”0” /> |
</object> |
<object value=”97”><! letter "a" --> |
<parameter name=”Kerning” id=”13” flags=”16” value=”0” /> |
</object> |
<object value=”108”><! letter "l" --> |
<parameter name=”Kerning” id=”14” flags=”16” value=”0” /> |
</object> |
. . . |
Изменение styleRun Элемента
Использование движения styleRun элементы для указания диапазона, к которому относятся элементы стиля текста. Без должным образом указанного styleRun элементы, style элементы, кодирующие информацию о шрифтах, не имеют никакого эффекта.
В исходном файле проекта, styleRun элементы появляются следующим образом:
<styleRun style=”10032” offset=”0” length=”11” /> |
<styleRun style=”10107” offset=”11” length=”5” /> |
style= атрибут относится к id= атрибут a style элемент. length= атрибут указывает промежуток styleRun.
Первое styleRun элемент в этом перечислении относится style элемент это, шрифтом которого является Stone Sans OS ITCTT. Первые 11 символов хватают текст, “Добро пожаловать в “(включая символ новой строки).
Второе styleRun элемент начинается на 12-м символе и охватывает 5 символов: «Техас».
В измененном файле проекта, длине строковых изменений (так как «Техас» изменяется на «Калифорнию»). styleRun элементы тогда изменяются следующим образом:
<styleRun style=”10032” offset=”0” length=”11” /> |
<styleRun style=”10107” offset=”11” length=”10” /> |
Отметьте следующее:
offset=атрибут первогоstyleRunэлемент, отсылающий к первому символу обозначенное влияние стиля, 0.Когда длины изменения текстовых строк, важно изменить надлежащее
styleRunэлемент, чтобы гарантировать, что надлежащий стиль текста применяется к новым символам.Каждый символ в текстовом объекте должен быть связан с a
styleRun. Важно проверить на непротиворечивость через всеstyleRunэлементы и гарантировать нет никаких перекрытий и никаких разрывов в диапазоне затронутых символов.
Изменение элементов стиля
Можно измениться, шрифт применился к «Техасу» от Сценария до Подсолнечника путем изменения надлежащего style элемент. В исходном файле проекта, существуют два style элементы для текстового объекта.
<style name=”Style” id=”10032” factoryID=”1”> |
<font type=”0”>StoneSansOSITCTT-SemiIta</font> |
... |
</style> |
<style name=”Style1” id=”10107” factoryID=”1”> |
<font type=”1”>Pro Series/Script</font> |
... |
</style> |
Так как каждый шрифт имеет уникальное имя и другой тип, можно использовать font элемент type= атрибут для идентификации font элемент Вы хотите измениться. В этом случае это находится во втором style элемент с ID = 10107. (Если эти два элемента стиля имеют подобные характеристики, можно использовать id= атрибут и связанное styleRun элемент для идентификации корректного font элемент для изменения.)
Второй элемент шрифта, атрибут типа которого относится к LiveFont и чье содержание является именем системы шрифта Сценария, принадлежит элементу стиля, связанному с styleRun элементом, охватывающим символы в «Техасе». Это тогда изменяется на следующее:
<style name=”Style” id=”10032” factoryID=”1”> |
<font type=”0”>StoneSansOSITCTT-SemiIta</font> |
... |
</style> |
<style name=”Style1” id=”10107” factoryID=”1”> |
<font type=”1”>Pro Series/Sunflower</font> |
... |
</style> |
id= из второго style элемент 10107 и соответствует style= атрибут styleRun элемент. Этот элемент применяется к слову «California», теперь появляющемуся в шрифте Подсолнечника.
Импорт данных камеры
Можно импортировать данные камеры из стороннего приложения в Движение путем редактирования Position, Rotation, и другие соответствующие параметры для камеры Движения. Цель состоит в том, чтобы генерировать позицию и информацию о вращении, соответствующую структуре XML канала Движения.
Предположим данные камеры, которые Вы хотите импортировать, содержит позицию и информацию о вращении для каждого кадра.
Кривая движения и Элементы ключевого кадра
Так как Движение поддерживает руководство keyframing параметров, Position параметр Камеры представлен как a curve с m keypoint элементы. M является числом кадров, для которых данные камеры доступны. Интерполяция для каждого keypoint в кривой был бы быть постоянным.
Если данные камеры имеют 300 кадров, XML для Position параметр X канал был бы похож на это:
<parameter name=”X” id=”1” flags=”16”> |
<curve type=”1” round=”0”> |
<numberOfKeypoints>300</numberOfKeypoints> |
<keypoint interpolation=”1” flags=”32” |
<time>0</time> |
<value>20</time> |
</keypoint> |
<keypoint interpolation=”1” flags=”32”> |
<time>1</time> |
<value>20.5</time> |
</keypoint> |
<keypoint interpolation=”1” flags=”32”> |
<time>2</time> |
<value>21.5</time> |
</keypoint> |
... |
<keypoint interpolation=”1” flags=”32”> |
<time>299</time> |
<value>90</time> |
</keypoint> |
</curve> |
</parameter> |
Отметьте следующие моменты:
Xканал не содержит avalue=атрибут. Параметры Keyframed не имеют постоянного значения иvalue=атрибут не релевантен.curveподэлемент указывает всю позицию и информацию времени дляXканал. Дополнительную информацию см. в кривой.curveэлемент содержит anumberOfKeypointsподэлемент, указывающий число импортируемых точек данных (300, в этом случае).curveэлемент тогда имеет 300keypointэлементы.Каждый
keypointэлемент содержитtimeиvalueподэлементы, представляющие кадр, в котором данные были зарегистрированы и X позиций для того кадра, соответственно.interpolation=атрибут установлен в 1, указав постоянную интерполяцию через каждый keypoint.keypointэлементы не содержат обычные подэлементы, указывающие времена касательной ввода и вывода и значения. Начиная сinterpolation=атрибут установлен в постоянную, информацию о касательной, не необходимо.timeзначение для первогоkeypoint0. Внутренне, Движение именует первый кадр любого проекта как кадр 0.
Чтобы закончить импортировать данные камеры, необходимо было бы закодировать информацию для Y и каналов Z камеры Position параметр, а также эти X, Y и Z образовывают канал для Rotation параметр.
Замена медиа-файлов
Файл проекта XML Движения кодирует множество ссылок между объектами сцены и медиа-файлами, которые они включают. Если Вы понимаете эти ссылки, можно разработать инструменты для автоматической замены медиа-файлов в проекте. Можно тогда легко создать многократные копии проекта с различной видеозаписью для каждой копии.
Медиа-элементы верхнего уровня
Вот пример XML, выводящий на экран элементы верхнего уровня, относящиеся к носителям и не описанные в другом месте в этом документе:
Высокоуровневые медиа-элементы перечисления 7-3
<ozml version=”3.0”> |
... |
<scene> |
<sceneSettings> |
... |
<frameRate>30</frameRate> |
<NTSC>1</NTSC> |
... |
</sceneSettings> |
... |
<timeRange offset=”0” duration=”4172” /> |
<playRange offset=”0” duration=”4172” /> |
... |
</scene> |
</ozml> |
scene: кодирует настройки сцены, настройки экспорта и график сцены Движения. Этот элемент является подэлементомozmlэлемент объявления.sceneSettings: кодирует настройки сцены Движения. Этот элемент является подэлементомscene.frameRate(целое без знака): кодирует частоту кадров проекта Движения. Этот элемент является подэлементомsceneSettings. Обратите внимание на то, что частота кадров сохраняется как целочисленный уровень. Истина framerate для проекта определяетсяNTSCэлемент.NTSC(Булевская переменная): указывает, является ли проект проектом NTSC. Этот элемент является подэлементомsceneSettings. КогдаNTSCэлемент установлен в ПРАВДА, значение вframeRateкорректируется внутренне для приспосабливания стандартам NTSC. Например, 30 кадр/с корректируется к 29,97 кадр/с.timeRange: видимое время располагается на Холсте Движения. Этот элемент является подэлементомsceneи содержит следующие атрибуты:offset=(кадр): кадр, в котором начинается видимый диапазон времени;duration=(целое без знака): число кадров, видимых на диапазоне времени.playRange: играемое время располагается на временной шкале Движения. Этот элемент является подэлементомsceneи содержит следующие атрибуты:offset=(кадр): кадр, в котором начинается воспроизведение;duration=(целое без знака): число кадров для игры.
Шаги для задачи
Предположим, что существует проект Движения с медиа-файлом, названным «oldMovie.mov» и что Вы хотите заменить его различным файлом, названным «newMovie.mov». (Вы будете использовать новую видеозапись в ее частоте кадров по умолчанию без повторной синхронизации.)
Шаги для следования:
Идентифицируйте
scenenodeобращение к соответствующей видеозаписи.Замените старую видеозапись новой видеозаписью.
Измените сопроводительные аудиоданные при необходимости.
Измените scenenode, обращающийся к соответствующей видеозаписи при необходимости.
Идентифицируйте scenenode
Следующий пример XML выводит на экран scenenode с релевантной информацией:
Перечисление 7-4 , Находящее scenenode
<scenenode name=”My movie object” id=”1056774” factoryID=”1” version=”3”> |
... |
<linkedobjects>1056776</linkedobjects> |
<timing in=”0” out=”4171” offset=”0” /> |
... |
<parameter name=“Properties” id=”1” flags=”4112”> |
... |
<parameter name=”Media” id=”300” flags=”65552” value=”1056770” /> |
... |
</parameter> |
... |
</scenenode> |
... |
<footage name=”Media Layer” id=”1056771”> |
<clip name=”oldMovie” id=”1056770”> |
<pathURL>file://localhost/Users/steve/Movies/oldMovie.mov</pathURL> |
... |
</footage> |
Отметьте эти точки:
Это
scenenodeэлемент содержит aPropertiesпараметр, что, в свою очередь, содержит aMediaпараметр.value=атрибут этогоMediaпараметр (1056770) ссылкиid=атрибут aclipэлемент. Этот элемент клипа указывает носители, которые Вы хотите изменить.linkedObjectsссылки на элементaudioTrackэлемент, содержащий информацию о звуке, связанную сclipэлемент.
Загрузите новые носители
В целом медиа-файл в Движении указан a clip элемент, который является подэлементом a footage элемент. (См. клип.)
Вот является XML указанием текущего медиа-файла («oldMovie»):
Перечисление 7-5 текущий медиа-файл
<footage name=”Media Layer” id=”1056771”> |
<clip name=”oldMovie” id=”1056770”> |
<pathURL>file://localhost/Users/steve/Movies/oldMovie.mov</pathURL> |
<missingWidth>1920</missingWidth> |
<missingHeight>816</missingHeight> |
<missingDuration>139.1808475</missingDuration> |
<creationDuration>4172</creationDuration> |
... |
<timing in=”0” out=”4171” offset=”0” /> |
... |
<parameter name=”Object” id=”2” flags=”4176”> |
... |
<parameter name=”Frame Rate” id=”107” flags=”64” value=”23.976” /> |
... |
<parameter name=”Fixed Width” id=”114” flags=”66” value=”1920” /> |
<parameter name=”Fixed Height” id=”115” flags=”66” value=”816” /> |
... |
</parameter> |
</footage> |
Загружать новый медиа-файл:
name=: Как надлежащий, изменениеname=атрибутclipэлемент для отражения имени нового клипа.pathURL: Установите значение этого элемента к URL, указывающему на новый медиа-файл.relativeURL: Если применимо установите значение этого элемента к относительному URL, указывающему на новый медиа-файл.missingWidth: Установите значение этого элемента к ширине изображения нового медиа-файла.missingHeight: Установите значение этого элемента к высоте изображения нового медиа-файла.missingDuration: Установите значение этого элемента к продолжительности нового медиа-файла в секундах. Если текущий медиа-файл является неподвижным изображением, значение должно быть обратной величиной частоты кадров проекта.creationDuration: Установите значение этого элемента к числу кадров, которые этот медиа-файл представляет в проекте Движения. Это значение равноmissingDurationумноженный на частоту кадров проекта, окруженную к самому близкому целому числу.Частота кадров проекта установлена в
frameRateподэлементsceneSettingsэлемент, который сам является подэлементомsceneэлемент. (См. Перечисление 7-3.)Для проектов NTSC частота кадров должна быть скорректирована для соответствия стандартного NTSC framerates (например, проект на 30 кадр/с составит 29,976 кадр/с).
NTSCподэлементsceneSettingsесли проект является проектом NTSC, элемент установлен в 1.timing: Установитеin=иout=атрибуты к желаемому началу и конечным точкам для клипа. Если длина нового медиа-файла отличается от медиа-файла, это заменяет, необходимо изменить этот элемент, чтобы гарантировать, что весь медиа-файл воспроизводит.Frame Rate: Установите этот параметр для соответствия частоты кадров медиа-файла. Значение, отличающееся от естественной частоты кадров медиа-файла, может представить расхождения синхронизации во время воспроизведения или экспорта.Fixed Width,Fixed Height: Установите значение этих параметров к ширине и высоте медиа-файла, соответственно.
Текущий клип («oldMovie.mov») является фильмом 139.18 HD на 23,976 кадр/с секунды в длине. Новый клип («newMovie.mov») является фильмом HD на 29,976 кадр/с, который 111,14 секунд длиной.. Внесение всех надлежащих изменений в clip элемент для загрузки нового клипа приводит к следующему XML:
Перечисление 7-6 новый медиа-файл
<footage name=”Media Layer” id=”1056771”> |
<clip name=”newMovie” id=”1056770”> |
<pathURL>file://localhost/Users/steve/Movies/newMovie.mov</pathURL> |
<missingWidth>1920</missingWidth> |
<missingHeight>816</missingHeight> |
<missingDuration>111.14</missingDuration> |
<creationDuration>3332</creationDuration> |
... |
<timing in=”0” out=”3331” offset=”0” /> |
... |
<parameter name=”Object” id=”2” flags=”4176”> |
... |
<parameter name=”Frame Rate” id=”107” flags=”64” value=”29.976” /> |
... |
<parameter name=”Fixed Width” id=”114” flags=”66” value=”1920” /> |
<parameter name=”Fixed Height” id=”115” flags=”66” value=”816” /> |
... |
</parameter> |
</footage> |
Измените аудиотрек
Медиа-файлы, содержащие аудио, могут потребовать изменения audiotrack элемент связался с clip элемент.
Перечисление 7-7 текущее аудио
<audio name=”Audio Layer” id=”1056777”> |
<audioTrack name=”oldMovie” id=”1056776”> |
... |
<linkedObjects>1056774</linkedObjects> |
<timing in=”0” out=”4171” offset=”0” /> |
... |
<parameter name=”Properties” id=”1” flags=”4112”> |
<parameter name=”Media” id=”104” flags=”65552” value=”1056770” /> |
... |
<parameter name=”Retime Value” id=”109” flags=”131090”> |
<curve type=”1” round=”0” retimingExtrapolation=”1”> |
<numberOfKeypoints>2</numberOfKeypoints> |
<keypoint interpolation=”1” flags=”32”> |
<time>0</time> |
<value>1</value> |
... |
</keypoint> |
<keypoint interpolation=”1” flags=”32”> |
<time>4172</time> |
<value>4173</value> |
... |
</keypoint> |
</curve> |
</parameter> |
<parameter name=”Retime Value Cache” id=”109” flags=”131090”> |
<curve type=”1” round=”0” retimingExtrapolation=”1”> |
<numberOfKeypoints>2</numberOfKeypoints> |
<keypoint interpolation=”1” flags=”32”> |
<time>0</time> |
<value>1</value> |
... |
</keypoint> |
<keypoint interpolation=”1” flags=”32”> |
<time>4172</time> |
<value>4173</value> |
... |
</keypoint> |
</curve> |
</parameter> |
... |
</parameter> |
... |
</audioTrack> |
</audio> |
Отметьте эти точки:
Как соответствующие, можно изменить
name=атрибутaudioTrackэлемент.Поскольку Вы заменяете содержание a
clipэлемент,value=атрибутMediaпараметр должен равнятьсяid=атрибутclipэлемент, и не требует модификации.Кроме того,
audiotrackэлемент содержит alinkedObjectsэлемент, указывающий связанноеscenenode, и не требует модификации.Если продолжительность нового файла ролика будет отличаться от старого файла ролика, то необходимо будет изменить информацию синхронизации в
audioTrackэлемент.timingв постоянное время элемент содержит аудио игры информации синхронизации. В этом примере аудиотрек является той же длиной как новый медиа-файл.Retime ValueиRetime Value Cacheкогда аудиотрек играется в постоянное время, параметры не используются. Когда переменная синхронизация выбрана в Инспекторе, но они могут быть изменены для поддержания непротиворечивости.Оба
Retime ValueиRetime Value Cacheпараметры представлены как кривые с двумя keypoint подэлементами, соответствующими первым и последним кадрам в файле в том порядке.timeиvalueподэлементы второгоkeypointпотребность элемента соответствовать последний кадр в новом медиа-файле. В то время как значение на основе 1, Обратите внимание на то, что время на основе 0. Т.е. если новый медиа-файл является 3 000 кадров долго, значение, указанноеtimeбудет 2999 иvalueбудет 3000.Поскольку аудиотрек не повторно синхронизируется, не нормален, inputTangentTime, inputTangentValue, outputTangentTime, и outputTangentValue не используются в этом примере и могут быть оставлены, как.
Пересмотренный audioTrack элемент появляется следующим образом:
Перечисление 7-8 новое аудио
<audio name=”Audio Layer” id=”1056777”> |
<audioTrack name=”newMovie” id=”1056776”> |
... |
<linkedObjects>1056774</linkedObjects> |
<timing in=”0” out=”3331” offset=”0” /> |
... |
<parameter name=”Properties” id=”1” flags=”4112”> |
<parameter name=”Media” id=”104” flags=”65552” value=”1056770” /> |
... |
<parameter name=”Retime Value” id=”109” flags=”131090”> |
<curve type=”1” round=”0” retimingExtrapolation=”1” |
<numberOfKeypoints>2</numberOfKeypoints |
<keypoint interpolation=”1” flags=”32”> |
<time>0</time> |
<value>1</value> |
... |
</keypoint> |
<keypoint interpolation=”1” flags=”32”> |
<time>3331</time> |
<value>3332</value |
... |
</keypoint> |
</curve> |
</parameter> |
<parameter name=”Retime Value Cache” id=”109” flags=”131090”> |
<curve type=”1” round=”0” retimingExtrapolation=”1”> |
<numberOfKeypoints>2</numberOfKeypoints> |
<keypoint interpolation=”1” flags=”32”> |
<time>0</time> |
<value>1</value> |
... |
</keypoint> |
<keypoint interpolation=”1” flags=”32”> |
<time>3331</time> |
<value>3332</value> |
... |
</keypoint> |
</curve> |
</parameter> |
... |
</parameter> |
... |
</audioTrack> |
</audio> |
Измените Объект scenenode
Поскольку id= атрибут клипа, ссылающегося на новый медиа-файл, неизменен, нет никакой потребности изменить Media параметр или linkedObjects подэлемент scenenode элемент. Однако, если длина носителей отличается, Вы, возможно, должны измениться timing подэлемент таким же образом Вы, возможно, должны измениться timing элемент clip гарантировать, что воспроизводится весь файл ролика.
Retime Value и Retime Value Cache когда фрагмент ролика играется в постоянное время, параметры не используются. Если переменная синхронизация выбрана в Инспекторе, но Вы, возможно, должны изменить их для поддержания непротиворечивости.
Также, Вы, возможно, должны изменить layer элементы выше этого scenenode в иерархии XML, включая timeRange и playRange подэлементы scene элемент. (См. Перечисление 7-3.)
Добавьте медиа-файлы
Вместо того, чтобы заменять медиа-файлы в проекте Движения, можно хотеть добавить медиа-файл к проекту. Вот некоторые важные моменты:
Добавить новое
clipэлемент, необходимо установить значениеid=припишите уникальному целому без знака, не используемому любым другим объектом сцены, медиа-файлом или аудиотреком в проекте.Добавить новое
audiotrackэлемент, необходимо установитьid=припишите уникальному целому без знака, не используемому любым другим объектом сцены, медиа-файлом или аудиотреком в проекте. Кроме того, необходимо установитьMediaпараметр кid=из новогоclipэлемент и значениеlinkedObjectsэлемент должен быть целым без знака, соответствующимid=из соответствующегоscenenodeэлемент.Изменить соответствующее
scenenodeэлемент, необходимо установитьMediaпараметр для равенстваid=атрибут новогоclipэлемент. Также, необходимо установить значениеlinkedObjectsподэлемент кid=атрибут новогоaudioTrackэлемент.