Настройка движения файл проекта XML

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

Примеры в этой главе:

Изменение текста

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

В этом примере цель состоит в том, чтобы изменить слово «Texas» на «Калифорнию» и шрифт для «Калифорнии» к Подсолнечнику.

  Текст изменения рисунка 7-1
editingediting

Текстовый объект Движения прежде всего полагается на следующие элементы для указания его характеристик:

В целом текстовые объекты Движения являются подэлементами 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 канал не содержит a value= атрибут. Параметры Keyframed не имеют постоянного значения и value= атрибут не релевантен. curve подэлемент указывает всю позицию и информацию времени для X канал. Дополнительную информацию см. в кривой.

  • curve элемент содержит a numberOfKeypoints подэлемент, указывающий число импортируемых точек данных (300, в этом случае). curve элемент тогда имеет 300 keypoint элементы.

  • Каждый keypoint элемент содержит time и value подэлементы, представляющие кадр, в котором данные были зарегистрированы и X позиций для того кадра, соответственно. interpolation= атрибут установлен в 1, указав постоянную интерполяцию через каждый keypoint.

  • keypoint элементы не содержат обычные подэлементы, указывающие времена касательной ввода и вывода и значения. Начиная с interpolation= атрибут установлен в постоянную, информацию о касательной, не необходимо.

  • time значение для первого keypoint 0. Внутренне, Движение именует первый кадр любого проекта как кадр 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 элемент содержит a Properties параметр, что, в свою очередь, содержит a Media параметр. value= атрибут этого Media параметр (1056770) ссылки id= атрибут a clip элемент. Этот элемент клипа указывает носители, которые Вы хотите изменить.

  • 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 элемент содержит a linkedObjects элемент, указывающий связанное 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 элемент.