Координация анимаций и мультимедиа при выводе на компьютерный дисплей

Изобретение относится к области обработки графической или другой аудиовизуальной информации для отображения на компьютерных системах. Техническим результатом является улучшенное воспроизведение мультимедиа. Описаны способ и система, в которых объекты видеоряда координируют анимацию множественных элементов и/или мультимедиа, отображаемых на графическом дисплее компьютера. Видеоряды связывают свойства элементов в дереве элементов с временной линией, что позволяет анимировать/воспроизводить свойства, связанные с видеорядом, совместно как группу, запуская, останавливая, производя поиск или приостанавливая видеоряд. Триггеры, например, управляемые взаимодействием пользователя с отображаемой информацией, включающие в себя триггеры свойства, которые изменяют значения в соответствии с изменением состояния, и триггеры события, которые запускают события, могут обуславливать запуск, остановку, приостановку и поиск видеоряда. Видеоряды можно использовать в программах на основе XAML и можно непосредственно связывать с элементами или опосредованно связывать с элементами через стили. Поддерживаются сложные свойства и изменяемые. Воспроизведением мультимедиа можно управлять через видеоряды и, таким образом, координировать с воспроизведением других мультимедиа и/или анимациями. 2 н.и. и 22 з.п. ф-лы, 7 ил.

 

Информация, относящаяся к авторским правам

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

Область техники, к которой относится изобретение

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

Предпосылки изобретения

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

Патентные заявки США №№10/693, 630 и 10/693, 822 являются теми из нескольких патентных заявок (присвоенных правообладателю настоящего изобретения), где, помимо прочего, описан один такой язык разметки, который, в общем случае, предназначен для упрощения разработки программ, а именно XAML (расширяемый язык разметки для создания приложений). В общем случае, автор программы использует команды XAML совместно с вызовами программных интерфейсов приложений (API) для размещения объектов в структуре данных графа сцены. Например, для построения пользовательского интерфейса программа на основе XAML обычно добавляет дочерние визуальные объекты к другим визуальным объектам для построения иерархического графа сцены, записывает списки команд, например геометрические данные, данные изображения и другие данные для вывода, и может задавать свойства преобразования, отсечения и непрозрачности на визуальных объектах.

Одна из возможностей XAML, описанных в вышеупомянутых патентных заявках, состоит в том, что программы могут задавать параметры анимации и/или мультимедийные данные и, таким образом, эффективно выводить соответствующие данные отображения, которые включают в себя соответствующие анимации и/или мультимедиа. Например, автор программы может описать нужный анимационный эффект с помощью параметров, например, насколько то или иное свойство отображаемого объекта должно измениться с течением времени; например, свойство непрозрачности прямоугольника можно задать так, чтобы он постепенно изменялся от непрозрачного к прозрачному, а затем наоборот, в течение некоторого промежутка времени. В типичных случаях, система управляет анимацией так, что программный код нужен только для первоначального задания параметров анимации, вместо того чтобы был нужен сам по себе программный код для регулярной перерисовки измененного изображения с течением времени для осуществления эффекта.

Для этого, в одной реализации, операционная система предусматривает использование объекта временной линии, который задает эволюцию анимации с течением времени и, при необходимости, устанавливается объект такового сигнала для представления временной линии для этой анимации. Вместо того чтобы регулярно вызывать (например, один раз за кадр) прикладную программу для перерисовки анимированного изображения с обновленными характеристиками, часы используются компонентами графики более низкого уровня для задания обновленного, изменяющегося со временем параметра или параметров свойства для отображаемого объекта, который анимируется, после чего перерисовывается на основании обновленных данных свойства. В общем случае, с мультимедиа поступают подобным образом.

Хотя прямое программирование предоставляет автору программы усовершенствованный и упрощенный способ реализации анимаций и мультимедиа как части пользовательского интерфейса, информацию хронирования до сих пор приходилось в индивидуальном порядке применять к каждому элементу анимации или мультимедиа. В результате, автору программы до сих пор приходилось вручную синхронизировать различные действия, которые могут происходить на разных временных линиях (например, моменты начала и окончания анимаций и мультимедиа и/или обработку принимаемых событий). Это может приводить к несогласованным состояниям, например, одно анимированное свойство будет опережать другое анимированное свойство (по меньшей мере, временно), даже если автор программы хочет, чтобы они были синхронизированы. Это также добавляет сложность; например, после события перезапуска индивидуальные анимации, связанные с этим событием, каждый раз приходится находить и перезапускать.

Раскрытие изобретения

В общих чертах, настоящее изобретение обеспечивает способ и систему, которые позволяют авторам планировать по времени наборы анимаций путем группирования их в именованном объекте временной линии, который называется видеорядом. В одной реализации, набор API видеорядов обеспечивает способ объединения временных линий, которые влияют на различные объекты и свойства, в единое дерево временных линий, что позволяет автору программы напрямую организовывать сложные наборы событий хронирования и управлять ими. Видеоряды можно использовать на конкретных экземплярах анимаций/видео/аудио или для анимаций конкретного стиля.

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

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

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

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

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

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

Видеоряды позволяют использовать триггеры свойства и триггеры события для управления их работой (например, действия запуска, приостановки, поиска и остановки). В общем случае, триггер свойства соответствует некоторому состоянию/значению, например истина или ложь, при котором возбуждается событие. Например, триггер свойства может иметь значение истина, когда мышь наведена на элемент, и значение ложь, когда не наведена на него, и событие может возбуждаться при щелканьи мышью по элементу. Каждое состояние истина или ложь и/или событие можно использовать, чтобы по отдельности осуществлять запуск, остановку, паузу и/или поиск в видеоряде (или видеорядах). Таким образом, анимациями можно управлять через взаимодействие пользователя с отображаемым представлением дерева элементов. Помимо триггеров события триггеры входа в свойство/выхода из свойства также доступны для использования во временных линиях с запуском.

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

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

Краткое описание чертежей

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

Фиг.2 - блок-схема архитектуры уровня интеграции мультимедиа согласно аспекту настоящего изобретения.

Фиг.3 - представление компонентов для интерпретации кода языка разметки для взаимодействия с уровнем API визуалов согласно аспекту настоящего изобретения.

Фиг.4 и 5 - блок-схемы, представляющие в общих чертах двухуровневую архитектуру, имеющую компоненты хронирования для преобразования данных свойства часов в интервалы для использования при определении данных прогресса, согласно аспекту настоящего изобретения.

Фиг.6 - представление, как можно разместить видеоряды в коде, чтобы связать временные линии с элементами дерева элементов, согласно аспекту настоящего изобретения.

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

Осуществление изобретения

Иллюстративная рабочая среда

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

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

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

Согласно фиг.1, иллюстративная система для реализации изобретения включает в себя вычислительное устройство общего назначения в виде компьютера 110. Компоненты компьютера 110 могут включать в себя, но без ограничения, процессор 120, системную память 130 и системную шину 121, которая подключает различные компоненты системы, в том числе системную память, к процессору 120. Системная шина 121 может относиться к любому из нескольких типов шинных структур, включая шину памяти или контроллер памяти, периферийную шину и локальную шину с использованием различных шинных архитектур. В порядке примера, но не ограничения, такие архитектуры включают в себя шину «архитектуры промышленного стандарта» (ISA), шину «микроканальной архитектуры» (МСА), шину расширенной ISA (EISA), локальную шину «ассоциации по стандартизации видеоэлектроники» (VESA) и шину «взаимосоединения периферийных компонентов» (PCI), также именуемую шиной расширения.

Компьютер 110 обычно включает в себя различные компьютерно-считываемые среды. Компьютерно-считываемые среды могут представлять собой любые имеющиеся среды, к которым компьютер 110 может осуществлять доступ, и включают в себя энергозависимые и энергонезависимые среды, сменные и стационарные среды. В порядке примера, но не ограничения, компьютерно-считываемые среды могут содержать компьютерные носители данных и среды передачи данных. Компьютерные носители данных включают в себя энергозависимые и энергонезависимые, сменные и стационарные носители, реализованные с помощью любого метода или технологии для хранения информации, например компьютерно-считываемых команд, структур данных, программных модулей или других данных. Компьютерные носители данных включают в себя, но без ограничения, ОЗУ, ПЗУ, ЭСППЗУ, флэш-память или другую технологию памяти, CD-ROM, цифровые универсальные диски (DVD) или другие оптические диски, магнитные кассеты, магнитную ленту или другие магнитные запоминающие устройства или любой другой носитель, который можно использовать для хранения полезной информации и к которому компьютер 110 может осуществлять доступ. Среды передачи данных обычно реализуют компьютерно-считываемые команды, структуры данных, программные модули или другие данные в сигнале, модулированном данными, например несущей волне или другом транспортном механизме, и включают в себя любые среды доставки информации. Термин «сигнал, модулированный данными» означает сигнал, одна или несколько характеристик которого изменяется таким образом, чтобы кодировать информацию в сигнале. В порядке примера, но не ограничения, среды передачи данных включают в себя проводные среды, например проводную сеть или прямое проводное соединение, и беспроводные среды, например акустические, РЧ, инфракрасные и другие беспроводные среды. Комбинации любых вышеперечисленных сред также подлежат включению в понятие компьютерно-считываемых сред.

Системная память 130 включает в себя компьютерные носители данных в виде энергозависимой и/или энергонезависимой памяти, например постоянной памяти (ПЗУ) 131 и оперативной памяти (ОЗУ) 132. Базовая система ввода/вывода (BIOS) 133, содержащая основные процедуры, которые помогают переносить информацию между элементами компьютера 110, например, при запуске, обычно хранятся в ПЗУ 131. ОЗУ 132 обычно содержит данные и/или программные модули, к которым процессор 120 может непосредственно обращаться или которыми он в данный момент оперирует. В порядке примера, но не ограничения, на фиг.1 показаны операционная система 134, прикладные программы 135, другие программные модули 136 и программные данные 137.

Компьютер 110 также может включать в себя другие сменные/стационарные, энергозависимые/энергонезависимые компьютерные носители данных. Исключительно для примера, на фиг.1 показаны привод 141 жесткого диска, который считывает с или записывает на стационарный энергонезависимый магнитный носитель, привод 151 магнитного диска, который считывает с или записывает на сменный энергонезависимый магнитный диск 152, и привод 155 оптического диска, который считывает с или записывает на сменный энергонезависимый оптический диск 156, например CD-ROM или другой оптический носитель. Другие сменные/стационарные, энергозависимые/энергонезависимые компьютерные носители данных, которые можно использовать в иллюстративной рабочей среде, включают в себя, но без ограничения, кассеты с магнитной лентой, карты флэш-памяти, цифровые универсальные диски, цифровую видеоленту, полупроводниковое ОЗУ, полупроводниковое ПЗУ и т.д. Привод 141 жесткого диска обычно подключен к системной шине 121 через интерфейс стационарной памяти, например интерфейс 140, и привод 151 магнитного диска и привод 155 оптического диска обычно подключены к системной шине 121 посредством интерфейса сменной памяти, например интерфейса 150.

Приводы и соответствующие компьютерные носители данных, рассмотренные выше и показанные на фиг.1, обеспечивают хранение компьютерно-считываемых команд, структур данных, программных модулей и других данных для компьютера 110. Например, на фиг.1 показано, что в приводе 141 жесткого диска хранятся операционная система 144, прикладные программы 145, другие программные модули 146 и программные данные 147. Заметим, что эти компоненты могут совпадать с или отличаться от операционной системы 134, прикладных программ 135, других программных модулей 136 и программных данных 137. Операционная система 144, прикладные программы 145, другие программные модули 146 и программные данные 147 обозначены здесь другими позициями, чтобы подчеркнуть, что они являются, как минимум, разными копиями. Пользователь может вводить команды и информацию в компьютер 110 через устройства ввода, например планшет (электронный оцифровщик) 164, микрофон 163, клавиатуру 162 и указательное устройство 161, например мышь, шаровой манипулятор или сенсорную панель. Другие устройства ввода (не показаны) могут включать в себя джойстик, игровую панель, спутниковую антенну, сканер и т.п. Эти и другие устройства ввода часто подключены к процессору 120 через интерфейс 160 пользовательского ввода, который подключен к системной шине, но могут подключаться посредством других интерфейсов и шинных структур, например параллельного порта, игрового порта или универсальной последовательной шины (USB). Монитор 191 также может быть объединен с панелью 193 сенсорного экрана и т.п., которая может вводить оцифрованный ввод, например рукописный ввод в компьютерную систему 110 через интерфейс, например интерфейс 192 сенсорного экрана. Заметим, что монитор и/или панель сенсорного экрана могут быть физически присоединены к корпусу, в котором заключено вычислительное устройство 110, например, как в планшетном персональном компьютере, в котором панель 193 сенсорного экрана, по существу, служит планшетом 164. Кроме того, компьютеры, например вычислительное устройство 110, может также включать в себя другие периферийные устройства вывода, например громкоговорители 195 и принтер 196, которые могут подключаться через интерфейс 194 выходной периферии и т.п.

Компьютер 110 может работать в сетевой среде с использованием логических соединений с одним или несколькими удаленными компьютерами, например удаленным компьютером 180. Удаленный компьютер 180 может представлять собой персональный компьютер, карманное устройство, сервер, маршрутизатор, сетевой ПК, равноправное устройство или другой общий сетевой узел, и обычно включает в себя многие или все элементы, описанные выше применительно к компьютеру 110, хотя на фиг.1 показано только удаленное запоминающее устройство 181. Логические соединения, описанные на фиг.1, включают в себя локальную сеть (ЛС) 171 и глобальную сеть (ГС) 173, но также могут включать в себя другие сети. Такие сетевые среды обычно применяются в учреждениях, компьютерных сетях в масштабе предприятия, интранетах и Интернете.

При использовании в сетевой среде ЛС компьютер 110 подключен к ЛС 171 через сетевой интерфейс или адаптер 170. При использовании в сетевой среде ГС компьютер 110 обычно включает в себя модем 172 или другое средство установления связи в ГС, например Интернете. Модем 172, который может быть внутренним или внешним, может быть подключен к системной шине 121 через интерфейс 160 пользовательского ввода или другой пригодный механизм. В сетевой среде, программные модули, описанные применительно к компьютеру 110, или часть из них могут храниться в удаленном запоминающем устройстве. В порядке примера, но не ограничения, на фиг.1 показано, что удаленные прикладные программы 185 размещены на удаленном компьютере 181. Очевидно, что показанные сетевые соединения являются иллюстративными и можно использовать другие средства установления линии связи между компьютерами.

Иллюстративная многоуровневая архитектура

Один аспект настоящего изобретения, в общем случае, относится к обеспечению гладких сложных анимаций и/или мультимедиа в компьютерных системах. Для этого, как в общем виде показано на фиг.2, обеспечена архитектура 200 уровня интеграции мультимедиа. Прикладная программа, управление или другой аналогичный программный код более высокого уровня (например, пользовательский интерфейс компонента операционной системы) 202 осуществляет доступ к архитектуре 200 уровня интеграции мультимедиа через набор программных интерфейсов приложений (API) 204 и т.п. для доступа (записи или чтения) графической информации. Заметим, что, хотя многие приведенные здесь примеры относятся к прикладной программе, взаимодействующей с API, понятно, что другие программный код и компоненты более высокого уровня (например, пользовательский интерфейс операционной системы) также будут способны взаимодействовать с компонентами более низкого уровня, описанными ниже. Поэтому всякую ссылку на такой программный код более высокого уровня, будь то прикладная программа, пользовательский интерфейс и т.д., следует считать эквивалентной.

В одной реализации, архитектура 200 уровня интеграции мультимедиа включает в себя машину 206 композиции и анимации высокого уровня, компоненты 208 хронирования и анимации и машину 210 композиции и анимации низкого уровня. Используемые здесь термины «высокий уровень» и «низкий уровень» аналогичны используемым в других сценариях вычисления, где, в общем случае, чем ниже программный компонент относительно более высоких компонентов, тем ближе компонент к оборудованию. Таким образом, например, графическая информация, направленная с машины 206 композиции и анимации высокого уровня, может быть получена на машине 210 композиции и анимации низкого уровня, где информация используется для отправки графических данных на подсистему графики, включающую в себя оборудование.

В общем случае, машина 206 композиции и анимации высокого уровня (также именуемую здесь композитором и аниматором высокого уровня или машиной или компонентом высокого уровня) строит дерево элементов отображения для представления графической сцены, обеспечиваемой прикладной программой 202, а компоненты хронирования и анимации обеспечивают декларативное (или иное) управление анимацией и хронированием. Машина 210 композиции и анимации низкого уровня (также именуемая здесь композитором и аниматором низкого уровня или машиной или компонентом низкого уровня) составляет визуализации для сцен из множественных приложений и с помощью компонентов визуализации реализует фактическую визуализацию графики на экран. Заметим, что все же возможно делать занимающую много времени или ориентированную на приложение визуализацию на более высоких уровнях и передавать ссылки на битовую карту и т.п. на более низкие уровни.

Машина 206 композиции и анимации высокого уровня строит структуру дерева элементов и обходит структуру, создавая команды визуализации и интервалы простой анимации, подлежащие передаче машине 210 композиции и анимации низкого уровня. Команды визуализации, генерируемые композитором высокого уровня, могут содержать информацию хронирования и анимации. Машина 210 композиции и анимации низкого уровня берет команды визуализации и интервалы анимации и управляет анимированием, визуализацией и составлением сцены, которую затем можно передавать на подсистему графики (например, программное и аппаратное обеспечение графики) 212. Альтернативно или дополнительно к локально отображаемому выводу машина 206 композиции и анимации высокого уровня (или аналогичная ей) может обеспечивать команды визуализации и анимации в соответствующем формате коду 220 печати низкого уровня для отправки данных неподвижного изображения на принтер 222 и т.п. и/или может выдавать команды визуализации и интервалы простой анимации в соответствующем формате на терминальный транспортный сервер 226 низкого уровня для передачи на удаленные машины 228. Заметим, что более богатая информация также может передаваться по сети, например, может быть желательно, чтобы удаленная машина обрабатывала эффекты перемещения мыши локально, без какого-либо сетевого графика.

В этой реализации, архитектура 200 уровня интеграции мультимедиа разделяет, таким образом, обработку графики на множественные уровни, и каждый из этих уровней осуществляет некоторую интеллектуальную обработку графики, которые совместно позволяют пользовательским интерфейсам приложений 202 и т.п. выводить графику через гладкую анимацию, составлять графику с графикой других приложений и работать с видеокадрами. Анимацию и/или составление также можно синхронизировать с выводом аудио. Например, путем синхронизации аудио с частотой кадров на компоненте низкого уровня хронирование аудио может, по существу, совпадать с хронированием видео или графики и не зависеть от способности сложной предварительной обработки с запланированными заданиями поддерживаться с частотой обновления.

На фиг.3 представлена одна реализация, в которой код 302 разметки, например код на основе XAML, может интерпретироваться анализатором/транслятором 304. В общем случае, анализатор/транслятор 304 добавляет элементы в дерево элементов/систему 314 свойств; элементы представляют собой визуальные объекты, которые делают свой собственный макет. Кроме того, заметим, что код разметки можно частично или полностью компилировать, вместо того чтобы интерпретировать по требованию, таким образом повышая эффективность.

В общем случае, элемент представляет собой объект в уровне элементов, который участвует в системе свойств, запуске и системе макета/представления. В особом случае VisualBrush, например, некоторые теги можно интерпретировать как элементы или также интерпретировать как объекты ресурса, например, в зависимости от того, появляются ли они в синтаксисе сложного свойства, что описано в патентной заявке США №10/401, 717.

Помимо присутствия в строке в разметке экземпляр ресурса может также размещаться в другом месте (например, в разметке или в файле, который может быть локальным или в удаленной сети, и соответствующим образом загружаться). Таким образом, разработчик сцены может повторно использовать элемент в дереве элементов в пределах сцены, включая элементы, описанные синтаксисом сложного свойства.

Анализатор 304 обрабатывает разметку в синтаксисе сложного свойства, обращаясь при необходимости к преобразователю 308 типов, а также согласуя указанные параметры со свойствами объекта, тем самым, обрабатывая сложность для разработчика сцены. Таким образом, анализатор 304 не просто задает объекты, но также задает свойства на объектах. Поскольку одна и та же модель визуализации совместно используется между уровнем элементов и уровнем API, многие объекты по существу одинаковы. Это делает анализ/трансляцию весьма эффективным(ой) и также дает возможность языкам программирования других типов (например, языкам наподобие С#) легко преобразовывать разметку в свой собственный синтаксис и наоборот. Заметим, что согласно фиг.3, другой такой язык 310 программирования (который может содержать компилированную разметку) может добавлять элементы в дерево 208 элементов или может непосредственно взаимодействовать с уровнем 316 API визуалов.

Также согласно фиг.3, одну и ту же разметку 302 можно использовать для программирования на уровне элементов и на уровне ресурсов. В общем случае, уровень элементов дает разработчику сцены широчайшие возможности программирования, позволяет использовать систему свойств, которая обеспечивает наследование (например, признаки наподобие листа стилей), и запуск (например, благодаря которому элемент может иметь присоединенный код для изменения своего внешнего вида, положение и т.д. в соответствии с событием или действием пользовательского ввода). Однако настоящее изобретение также обеспечивает механизм уровня ресурсов, посредством которого разработчики сцен могут, по существу, пропускать дерево элементов и программировать непосредственно на уровне API визуалов. Для многих типов статических форм, изображения и т.п., где признаки уровня элементов не требуются, это обеспечивает более эффективный и легкий способ вывода соответствующего объекта.

В целях управления выводом анимации и мультимедиа также поддерживается дерево хронирования, содержащее часы, как описано ниже со ссылкой на фиг.4 и 5. В общем случае, машина 206 композитора и аниматора высокого уровня осуществляет сложную обработку (иногда называемую компиляцией), что значительно упрощает объем обработки и значительно сокращает объем данных, с которыми нужно иметь дело этим более низким уровням для визуализации правильного вывода. Заметим однако, что объем и тип обработки, которая осуществляется более высоким уровнем, может в значительной степени зависеть от нагрузки, конфигурации и возможностей более низких уровней. Например, при наличии графического оборудования с высокими возможностями более высокий уровень может производить меньший объем обработки и наоборот. Слои высокого уровня и низкого уровня адаптируются к этим факторам.

В общем случае, анимация осуществляется машиной 206 композиции и анимации высокого уровня и машиной 210 композиции и анимации низкого уровня. В одной реализации, машина 206 высокого уровня обходит сцену и обновляет параметры анимации с интервалами для дальнейшей интерполяции и компонует эти упрощенные структуры данных в команды, которые передаются машине 210 более низкого уровня. Это можно делать синхронно и/или асинхронно. Данные интервала можно рассматривать как включающие в себя конечные точки хронирования (данные хронирования начала и конца), а также параметризованные значения для команды визуализации. Заметим, что машина 204 высокого уровня может частично или полностью осуществлять запрашиваемую интерполяцию, например, если интерполяция или другая функция движения слишком сложна для обработки машиной 210 более низкого уровня, или более низкий уровень не может поддерживаться с размещенными на нем потребностями в обработке, машина более высокого уровня может осуществлять некоторые или все вычисления и обеспечивать более низкий уровень упрощенными данными, командами, мозаиками и т.д. для осуществления нужного результата.

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

Таким образом, машина 206 высокого уровня обходит структуры данных сцены, вычисляет интервал, описывающий каждый анимированный параметр в течение периода времени и передает эти интервалы и упрощенные параметризованные команды рисования машине 210 низкого уровня. Данные параметров включают в себя начальное время, конечное время, интерполятор и данные интерполяции. Например, вместо стирания и перерисовки для создания впечатления движения машина 206 композиции и анимации высокого уровня может предписывать машине 210 композиции и анимации низкого уровня, как изображение должно изменяться со временем, например начальные координаты, конечные координаты, продолжительность по времени (интервал), в течение которого изображение должно переместиться между координатами, и функцию движения, например линейную (заметим, что движение не требуется для анимации, поскольку неподвижный объект можно анимировать, изменяя, например, его свойство цвета). Машина 210 композиции и анимации низкого уровня будет интерполировать для определения новых положений между кадрами, преобразования их в команды рисования, которые должно понимать устройство графики, и передачи команд на устройство графики. Каждый проход машины 206 высокого уровня предпочтительно обеспечивает достаточно данных, чтобы машина 210 низкого уровня могла осуществлять гладкую анимацию по нескольким кадрам.

Машина 210 низкого уровня (например, с высокой тактовой частотой) является заданием, отдельным от машины 206 высокого уровня. Машина 210 низкого уровня принимает упрощенные параметризованные команды рисования и интервалы параметров, описывающие сцену, от машины 206 высокого уровня. Машина низкого уровня поддерживает и обходит эти структуры данных, пока машина 206 высокого уровня не обеспечит новые. Машина низкого уровня может обслуживать несколько машин 206 высокого уровня, поддерживая для каждой отдельные структуры данных. Отношение «один ко многим» между машиной 210 низкого уровня и машиной 206 высокого уровня позволяет системе одновременно гладко анимировать несколько сцен.

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

В связи с анимацией и мультимедиа, согласно фиг.4 и 5, программа, например прикладная программа 202, указывает значения свойств анимации совместно с информацией хронирования, именуемых свойствами часов, компоненту 206 высокого уровня. Согласно описанному ниже, по существу, любая независимая анимация или мультимедиа (например, линейное мультимедиа, например, видео и аудио), а также видеоряд, который координирует указанные анимации, будет иметь часы, поддерживаемые для нее на компоненте высокого уровня. В общем случае, автор задает данные временной линии, которые устанавливаются в часах по мере необходимости, чтобы обеспечивать их синхронизацию.

Свойства часов содержат свойства хронирования, которые определяют первоначальное отношение синхронизации между данными часами и остальной структурой хронирования. Согласно фиг.5, компонент высокого уровня 206 может вызывать функции 520Н анимации высокого уровня (например, написанные в управляемом коде, т.е. коде, который обеспечивает информацию в виде метаданных, которая позволяет общей среде выполнения языка, в которой он выполняется, управлять его работой) для определения текущего значения свойства анимации. В ходе вычислений с высокой частотой кадров компонент 210 низкого уровня вызывает аналогичные (или те же самые) функции 520L анимации, причем прогресс вычисляется машиной 414 для определения текущего значения свойства анимации. Заметим, что в альтернативных реализациях, функции анимации могут быть встроены, например, в компонент более низкого уровня.

В общем случае, анимации и линейное мультимедиа связаны с набором часов, которые связаны друг с другом примитивами и правилами синхронизации. Часы могут быть иерархически упорядочены, например, прикладная программа имеет родительские часы, а анимированные объекты прикладной программы имеют дочерние часы, которые, в свою очередь, могут иметь свои дочерние часы. Задание или изменение свойства часов оказывает влияние на эти часы. Например, приостановка родительских часов приводит к приостановке всех их дочерних часов, а удвоение скорости родительских часов приводит к удвоению скорости всех их дочерних часов.

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

Как описано в вышеупомянутой патентной заявке США 10/693, 822, компонент хронирования высокого уровня может генерировать список интервалов для каждых часов на основании сохраненного списка событий (начало, пауза и т.д.) и соответствующих примитивов синхронизации. Интервалы активации являются прямолинейными, неперекрывающимися отрезками, которые описывают время, выражаемое данными часами в разные моменты реального времени.

Согласно фиг.4, по меньшей мере, некоторые свойства часов могут иерархически соотноситься в дереве 402 хронирования часов. Трое таких часов со своими свойствами показаны на фиг.4, а именно свойства 4041-4043 часов, однако понятно, что в данной ситуации может существовать гораздо больше часов и альтернативных деревьев хронирования. Для каждых часов, которые, например, могут соответствовать анимированному объекту (или набору объектов, координируемых видеорядом), подлежащему отображению, компонент 206 высокого уровня включает в себя конечный автомат, именуемый генератором 408 списка событий, который генерирует список событий (например, 4061) на основании свойств часов. В общем случае, генератор 408 списка событий группирует события, которые первоначально были запланированы заданными свойствами часов совместно с любыми явными интерактивными событиями, например запросами приостановки и возобновления, которые принимаются в отношении анимации, в список событий. Часы поддерживаются для каждой анимации (или группы анимаций через видеоряд, как описано ниже), и, таким образом, имеется список событий, соответствующий каждой независимой анимации/набору анимаций, а также для каждого независимого линейного мультимедиа.

Компонент высокого уровня включает в себя генератор 410 интервалов, который использует список событий (например, 4063) для каждой анимации или мультимедиа для вычисления соответствующего списка интервалов (например, 4123), который передается компоненту 210 низкого уровня. В свою очередь, компонент 210 низкого уровня включает в себя вычислительную машину 414 низкого уровня, которая управляет выводом на основании текущего времени в отношении данных интервала, например, обеспечивая значение прогресса на основании данных интервала для этого объекта и текущего времени для подсистемы 520L функций анимации низкого уровня, которая определяет текущее значение изменяющегося свойства анимированного объекта. Например, для любого данного кадра, вычислительная машина 414 низкого уровня интерполирует местоположение анимированного объекта на основании данных интервала и текущего времени (которое может представлять собой системное время или относительное время). Заметим, что согласно фиг.4 и 5, компонент хронирования высокого уровня включает в себя дерево 402 хронирования и списки 4061-4063 событий, тогда как компонент 210 хронирования низкого уровня включает в себя списки 4121-4123 интервалов, однако эти структуры данных могут поддерживаться, по существу, в любом хранилище, обычно в высокоскоростной оперативной памяти.

В итоге, компонент 206 хронирования высокого уровня видит дерево 402 часов, связанных (например, иерархически) правилами и примитивами синхронизации. Настоящее изобретение использует часы в компоненте 206 хронирования высокого уровня для составления списков 412 интервалов активации, которые используются машиной хронирования низкого уровня. Машина хронирования низкого уровня видит списки 412 интервалов, которые представляют независимые часы (например, для каждого анимированного объекта или каждого линейного мультимедиа). Согласно фиг.5, имеются часы, которые обеспечивают согласованное время для обоих, например системные часы 524, что позволяет поддерживать синхронизацию множественных уровней.

В соответствии с интерактивными изменениями, принятыми от приложения 202 (или какого-либо другого источника), компоненту хронирования высокого уровня требуется обновить состояние часов, которые непосредственно участвовали в этом изменении, а также которые участвовали опосредованно, как указано в примитивах синхронизации. Заметим, что возможно, что изменение в одних часах может оказывать влияние на другие часы в структуре хронирования. Например, презентатор слайд-шоу может приостановить все отображение, вследствие чего все анимации и линейные мультимедиа, отображаемые в данный момент, должны быть приостановлены. Согласно описанному ниже, согласно аспекту настоящего изобретения, видеоряд позволяет группировать вместе анимации и/или мультимедиа и, таким образом, координировать их нужным образом.

В общем случае, всякий раз, когда происходит взаимодействие в связи с объектом, список событий, по необходимости, повторно генерируется, и список интервалов повторно вычисляется и передается компоненту хронирования более низкого уровня. Компонент более высокого уровня осуществляет эти операции (например, с частотой порядка шесть - десять раз в секунду), благодаря чему компоненту более низкого уровня (например, работающему на частоте шесть раз в секунду) нужно иметь дело только с текущим списком интервалов для каждого анимированного объекта.

Помимо этой информации интервалов и начального и конечного значений для объекта, дополнительные параметры могут передаваться на компонент более высокого уровня и приводить к изменениям списка интервалов. Например, приложение может искать период времени, соответствующий событию. Приложение указывает, когда должен произойти поиск и насколько. Наподобие перемотки мультимедиа назад и вперед, при поиске в анимации, приложение может, таким образом, выполнять переход вперед и назад до определенного момента времени. Обратное событие представляет собой другой тип запланированного или интерактивного события, которое может задавать приложение. Когда обратное событие присутствует в списке, прогресс будет автоматически обращаться, например, от ста процентов до нуля процентов. Поддерживаются также изменения скорости, например, можно задать, чтобы все подчиненное определенным часам выполнялось быстрее или медленнее, чем фактическое время. Можно задавать другие атрибуты, например указывать, разрешен ли перезапуск конкретных часов и/или начать ли снова, если в данный момент не выполняется, например начать в одну секунду, снова начать в десять секунд, снова начать в сто секунд и т.д., но, в необязательном порядке, перезапускать или нет, если в данный момент выполняется.

Видеоряды для координации анимаций и мультимедиа

Настоящее изобретение, помимо прочего, относится к видеорядам, которые содержат объекты, позволяющие задавать дерево временных линий для элемента (например, FrameworkElement, например, окно, панель, орган управления, например, кнопку и пр.). Временная линия задает значения свойств элементов и управляет анимациями для элемента и его поддерева. Видеоряд, по существу, соответствует конкретному типу объекта временной линии, который можно запускать, останавливать или приостанавливать или использовать для поиска, управляя таким образом внешним видом анимированных элементов и/или поведением мультимедиа, связанных с этим видеорядом.

Из нижеприведенного будет понятно, что аспект изобретения состоит в том, что видеоряд содержит временные линии верхнего уровня, которые можно связывать с элементом и запускать независимо. Например, как описано ниже, модель позволяет автору иметь анимацию mouseOver и анимацию mouseClick на элементе, который находится в той же коллекции видеоряда. Временные линии анимации mouseOver и mouseClick могут запускаться независимо, но содержаться в одной и той же единице. Видеоряды также обеспечивают точки соединения между деревом хронирования и деревом элементов, что позволяет анимациям в видеоряде разрешать свои пункты назначения по отношению к элементу, к которому присоединен видеоряд. Видеоряды также могут содержать коллекцию триггеров, которые могут активироваться изменениями состояния, событиями или другими действиями, и содержать набор расширяемых действий, подлежащих выполнению при активации триггера (например, запуск или остановку временной линии). Видеоряды являются частью нижележащей объектной модели, которая позволяет пользователю интерактивно запускать или останавливать временные линии в видеоряде из кода.

В общем случае, временные линии в видеоряде представляют шаблоны анимации, которые можно применять к различным поддеревьям, элементам и другим объектам (например, буквам, словам, строкам, абзацам текста и т.д.). Видеоряд можно задавать непосредственно на FrameworkElement или применять к FrameworkElement через Style (ресурс, содержащий одно или несколько значений данных, которые можно применять к элементу, например цвет, размер и другие свойства кнопки, как описано ниже). Видеоряды также можно использовать для применения анимаций к объектам, которые поддерживают клонирование, например, изменяемым (например, кисти, преобразованию, геометрии и т.п., причем изменяемые можно использовать для задания свойств структурных элементов, как описано в патентной заявке США №10/693, 438). Например, кисть представляет собой изменяемое, которое задает фон кнопки или панели путем клонирования исходной информации фона и затем действует на клонированной информации, так что исходную информацию можно восстановить. Таким образом, видеоряд можно использовать для анимирования изменяемого, которое задает свойство для FrameworkElement. Другими словами, имеется два вида объектов, связанных с видеорядом, а именно элементы, которые участвуют в видеоряде (например, FrameworkElement), и те, которые не участвуют (например, описанные выше изменяемые). Алгоритм/структуры данных видеоряда таковы, что содержат не только те объекты, которые участвуют в указанной работе, но даже те, которые не участвуют в указанной работе, пока они поддерживают клонирование.

Согласно аспекту настоящего изобретения, видеоряды (например, объекты, доступные через API) позволяют авторам программ планировать наборы скоординированных анимаций, группируя анимации (по свойствам элементов) с временными линиями. Другими словами, видеоряд объединяет дерево хронирования с деревом элементов, обеспечивая возможность манипулировать хронированием для различных свойств различных анимаций скоординированным образом через одну и ту же временную линию. Таким образом, видеоряды обеспечивают способ объединения иначе независимых временных линий, которые влияют на различные объекты и свойства, в единое дерево временных линий, позволяя автору программы напрямую организовать сложные наборы событий хронирования и управлять ими. Например, вместо отыскания и перезапуска отдельных анимаций группирование анимаций в соответствии с временной линией как части видеоряда позволяет перезапускать все анимации сразу, просто перезапуская видеоряд. Кроме того, разделение дерева хронирования и дерева элементов позволяет пользователю использовать дерево хронирования для совершения манипуляций вовремя, например последовательно выполняя набор анимаций или зацикливая усложненную структуру хронирования.

Видеоряды можно использовать на конкретных экземплярах анимаций/видео/аудио или для анимации конкретного стиля.

Пусть, например, следующий иллюстративный код, написан без видеоряда и, таким образом, требует дополнительный код для добавления интерактивного ответа (в этом примере желательна одновременная анимация двух отдельных кнопок после щелчка мышью). Автор кода должен быть уверен, что он задает одно и то же время начала для анимации каждой кнопки, поскольку эти времена должны быть объявлены отдельно на временной линии каждой кнопки. Заметим, что, хотя этот код предназначен для анимации двух кнопок в одно и то же время, в действительности будет некоторое отставание между анимацией первой кнопки и анимацией второй кнопки, поскольку они запускаются разными вызовами (Begin):

Согласно различным аспектам настоящего изобретения, в одной реализации, чтобы использовать видеоряд для анимации, автор программы добавляет Timeline, механизм ассоциации (например, SetterTimeline или присоединенное свойство Storyboard) и объекты Animation к свойству Storyboards для FrameworkElement. Видеоряды можно применять непосредственно к конкретным элементам или задавать в стилях (как описано ниже). В этой реализации, видеоряд имеет, по меньшей мере, одну SetterTimeline, которая используется для привязки одной или нескольких временных линий к указанному свойству указанного объекта. Помимо основных свойств хронирования вышеописанной временной линии, SetterTimeline имеет три уникальных свойства, которые позволяют авторам указывать объект и свойство для анимации, и базовое значение, от которого нужно анимировать, а именно TargetID, которое указывает объект, подлежащий анимации; PropertyPath (синоним слов «свойство» и «путь»), которое указывает свойство, подлежащее анимации; и Value, необязательное свойство, которое, если присутствует, указывает базовое значение для указанного свойства. Заметим, что после того как автор указал объект и свойство с помощью SetterTimeline, автор добавляет временные линии и анимации как его дочерние элементы для применения их к указанному свойству.

Следующий иллюстративный код показывает, как видеоряды упрощают кодирование и повышают функциональность по сравнению с предыдущим иллюстративным кодом (заметим, что в этом примере используется иллюстративная реализация SetterTimeline вместо альтернативной реализации, которая действует через присоединенные свойства на классе Storyboard, который описан ниже):

Этот второй иллюстративный код XAML альтернативно использует видеоряд для инициирования одновременных анимаций на двух кнопках по событию щелчка. Для этого в единой временной линии видеоряда холста имеется одна SetterTimeline, которая привязывает свойство одного элемента (свойство непрозрачности элемента myButton) к этой временной линии видеоряда, и другая SetterTimeline, которая привязывает свойство другого элемента (свойство местоположения элемента myButton2) к той же временной линии видеоряда. Единичное событие (щелчок по myButton) запускает видеоряд, чтобы он начал скоординированную анимацию, которая с течением времени изменяет непрозрачность myButton и положение myButton2.

Как можно видеть из примеров кода, использование видеорядов уменьшает сложность кода и создает подлинную координацию между начальными временами анимаций. В этом примере, обе анимации начинаются действительно в одно и то же время, ввиду отсутствия раздельных вызовов Begin. Кроме того, для обеспечения интерактивности не требуется никакого кода позади XAML, поэтому автору нужно только задать скоординированное время начала в одном месте, т.е. на временной линии видеоряда.

Таким образом, видеоряды позволяют автору организовать и управлять наборами анимаций как группой вместо того, чтобы задавать изменение каждой анимации с течением времени по отдельности, что позволяет напрямую создавать анимации, синхронизированные друг с другом, и последовательности анимаций (описано ниже). Рассмотрим следующий пример, который соответствует часам с тремя прямоугольными стрелками, отличающимися шириной и цветом: черной часовой стрелкой, зеленой минутной стрелкой и красной секундной стрелкой, которые автоматически отображают текущее системное время путем использования преобразования поворота, которое задает угол. В этом примере используется единая временная линия видеоряда для координации анимации трех стрелок:

После выполнения вышеописанного кода через свойство преобразования визуализации и подсвойство угла преобразования поворота менеджер времени автоматически вычисляет величину поворота каждой стрелки на основании текущего времени (начиная с 00:00:00 0 г.н.э., когда известно, что стрелки стояли под углом нуль градусов) и обновленные углы, используемые при визуализации. Каждое новое вычисление анимации обновляет угловое положение стрелок, например, один раз за кадр или с какой-либо другой частотой. Все три стрелки запускаются вместе, и все три будут остановлены вместе, если, например, некоторое событие (не показанное в вышеприведенном иллюстративном коде) остановит часы.

Очевидно, что сложность анимации свойств элементов может быть значительной, например множественные SetterTimeline могут быть сгруппированы под одной временной линией видеоряда, при этом каждая SetterTimeline, в свою очередь, относится к соответствующим указанным элементам и свойствам из этих элементов. Видеоряды можно объединять; например, один видеоряд может связывать преобразование с элементом, а другой видеоряд может задавать значение для этого преобразования (хотя упорядочение в коде должно быть правильным, чтобы преобразование существовало до того, как будет задано значение). Тем не менее, использование видеорядов позволяет авторам напрямую планировать нужные элементы, свойства и поведение анимации.

На фиг.6 показано общее представление, как можно составить такой код, где холст имеет набор видеорядов (например, видеоряд 1 - видеоряд n), причем каждый видеоряд из набора (например, видеоряд 1) содержит временную линию с возможно множественными SetterTimeline, например, SetterTimelinei-SetterTimelinem (или с эквивалентными механизмами ассоциации дерева элементов, например, ParallelTimeline со свойствами, описанными ниже). Холст также может включать в себя информацию триггера события, также описанную ниже, и информацию об элементах и ресурсах (например, идентификаторы стилей и файлов), связанных с видеорядом как пункты назначения, имеющие анимированные свойства.

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

Заметим, что в вышеприведенном примере имеется MediaTimeline для ассоциирования некоего мультимедийного файла (my.wmv) с видеорядом и ParallelTimeline, в которой заданы свойства видеоряда (для простоты показанные с некоторыми пропусками). Заметим, что "ParallelTimeline" является, по существу, временной линией видеоряда, рассмотренной выше, с измененным именем, чтобы ее можно было отличить от других типов временных линий, включая MediaTimeline (выше) и SequentialTimeline (описана ниже). Однако ParallelTimeline также исключает необходимость в SetterTimeline благодаря использованию свойств для видеоряда, например Storyboard.Property, Storyboard.Value и Storyboard.Target (вместо TargetID, PropertyPath и Value для SetterTimeline), хотя она имеет тенденцию делать присоединенные свойства длинными и не очень заметными. В общем случае, свойства видеоряда можно присоединять к любой временной линии, пока для каждого видеоряда имеется некоторое свойство пункта назначения (например, TargetID), другие свойства видеоряда находятся на той же временной линии, что и TargetID, и нет вложенных Target. Заметим, что, если ни одного TargetID не задано, предполагается, что пунктом назначения является элемент, владеющий видеорядами, например Canvas в предыдущем примере. Для мультимедиа MediaTimeline не задают Storyboard.Property или Storyboard.Value.

В нижеприведенной таблице описан иллюстративный класс Storyboard и его свойства объектов и методы:

Другие альтернативы ассоциирования дерева элементов с деревом временных линий видеорядов показаны в иллюстративных кодах XAML, приведенных ниже:

Заметим, что в этой вышеприведенной альтернативе, MediaTimeline не является дочерней по отношению к SetterTimeline, но должна быть, чтобы быть частью дерева временных линий, не значением на временной линии. Таким образом, это, в общем, менее желательный синтаксис.

Заметим, что вышеприведенная альтернатива добавляет еще один класс, MediaSetterTimeline.

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

Несмотря на многочисленные возможные альтернативны, в целях объяснения, в общем случае, другие примеры будет описаны здесь с использованием SetterTimeline.

В одной реализации, видеоряды могут быть свойством коллекции временных линий на FrameworkElement; коллекция временных линий устанавливается в часы на элементе, когда впервые применяется к элементу. Значения в свойствах Storyboard являются экземплярами временной линии, например IList<Timeline>, причем концевые вершины каждой иерархии временных линий являются SetterTimeline (используемой в одной реализации для задания базового значения свойства), с анимациями под SetterTimeline в этой реализации. SetterTimeline является Timeline и, таким образом, может иметь дочерние элементы, однако, в одной реализации, единственным законным дочерним элементом SetterTimeline является Animation.

Заметим, что свойство Storyboards не является свойством зависимости. Каждый из экземпляров временной линии в свойстве видеорядов потенциально представляет иерархию. Эти иерархии временных линий устанавливаются в иерархии TimelineClock и внутренне хранятся на главном FrameworkElement. Эти отдельные экземпляры часов затем можно получать с использованием API FindStoryboardClock, который берет Timeline в качестве входа (должна быть одной из временных линий из видеорядов) и использует ее для нахождения соответствующих часов.

В данной реализации, видеоряды обрабатываются при вызове ISupportlnitialize.Endlnit на главном структурном элементе. После обработки видеорядов FrameworkElement.Storyboards можно сделать предназначенным только для чтения, чтобы помочь отразить тот факт, что изменения не будут обрабатываться.

Согласно описанному выше, SetterTimeline - это временная линия для задания свойства, которое можно неявным образом нацелить на главный FrameworkElement или на целевой FrameworkElement, если указан, и, в необязательном порядке, значение. Если задан, TargetID представляет собой ссылку на ID для FrameworkElement в иерархии наследников главного FrameworkElement. Свойство Path (синоним здесь PropertyPath) для SetterTimeline описывает, какое свойство анимируется через видеоряд, и оно необходимо.

Свойство Value для SetterTimeline также является необязательным. Если задано, оно указывает базовое значение, которое должно принимать свойство, когда Timeline активна. Это базовое значение используется в отсутствие анимации или, когда анимации требуется связанное значение. Базовое значение может эквивалентно вытекать из локального значения (установленного непосредственно на элементе), из наследственности, из формирования стилей и т.д. Например, следующий код анимирует свойство от значения 10 до 20.

Заметим, что если вышеупомянутая LengthAnimation задала оба значения From и То, то базовое значение (SetterTimeline.Value) будет игнорироваться.

В одной реализации, пункт назначения должен быть ссылкой на FrameworkElement в том же дереве, где находится главный FrameworkElement свойства Storyboards. Первый компонент PropertyPath должен быть свойством на основе свойства зависимости. Например, Window.WindowAutoLocation не имеет возможности видеоряда, поскольку не является свойством зависимости.

Свойство может быть элементом индексированной коллекции. Атрибут PropertyPath (или Path) для SetterTimeline может «ставить точку» в объект, причем в особом случае присоединенные свойства заключены в круглые скобки. Например, если «кисть» это Brush, то следующий путь свойства осуществляет доступ к альфе на цвете остановки кисти линейного градиента:

brush.Stops[1].Color.A,

а следующий путь осуществляет доступ к присоединенному свойству стыковки на элементе:

button.(DockPanel.Dock).

Заметим, что вышеописанный путь свойства является синтаксисом присоединенного свойства, но не самим присоединенным свойством. То есть BackgroundProperty задано на самой Button с помощью средств доступа к свойству в виде общей среды выполнения языка на кнопке, в отличие от традиционного присоединенного свойства, которое будет иметь средства доступа в виде статических методов Set/Get. Это необходимо, поскольку во время компиляции TargetID нельзя отнести к конкретному типу, поскольку неизвестно, к какому классу относится свойство "Background".

PropertyPath определяется следующим образом:

Пути сложных свойств, а именно тех, которые заданы более

чем одним компонентом, описаны ниже.

Согласно аспекту настоящего изобретения, помимо объединения дерева хронирования с деревом элементов видеоряды позволяют использовать триггеры свойства и триггеры события для управления их работой (например, действия запуска, приостановки, поиска и остановки). В общем случае, триггер свойства соответствует некоторому состоянию/значению, например истина или ложь, когда возбуждается событие (и, таким образом, не имеет значения ложь). Например, триггер свойства может иметь значение истина, когда мышь наведена на элемент, и значение ложь, когда не наведена на него. Каждое истинное или ложное состояние можно использовать, чтобы по отдельности запускать, останавливать, приостанавливать и/или выполнять поиск в видеоряде (или видеорядах). Событие, например щелчок мышью на элементе, возбуждается и, таким образом, не имеет переменного состояния, но аналогично может управлять работой видеоряда. Таким образом, анимациями можно управлять через взаимодействие пользователя с отображаемым представлением дерева элементов.

Триггеры - это свойство коллекции на FrameworkElement. Триггер может задавать действия, включающие в себя SetAction and TimelineAction. SetAction задает значение свойства. TimelineAction манипулирует временной линией в свойстве Storyboards.

В порядке примера, нижеследующий код дает кнопке специальный фон при наведении мыши:

TriggerAction и SetAction заданы как

Заметим, что SetAction следует шаблону SetterTimeline, но SetAction не является Timeline.

TimelineAction это абстрактный класс, имеющий подклассы для каждого из командных методов на TimelineClock:

TargetID для TimelineAction - это строка, причем строка разрешается в текущем объеме и разрешается до временной линии.

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

Используя триггер события совместно с соответствующей временной линией, следующий иллюстративный код показывает содержимое под управлением временной линии, манипулируемое с помощью кнопок «вкл» и «выкл»:

Заметим, что в вышеприведенном коде используется последовательная временная линия, а не независимые временные линии. Дочерние временные линии последовательной временной линии запускаются последовательно, например некоторый видеоряд, соответствующий "bar" (не показан), запускается по выполнении "foo", а не в соответствии с какими-либо данными времени, заданными программой.

Помимо триггеров события триггеры входа в свойство/выхода из свойства также доступны для использования во временных линиях с запуском, как, в общих чертах, показано в следующем примере:

Согласно другому аспекту настоящего изобретения, видеоряды и триггеры могут быть снабжены стилем (хотя не полностью, как свойства зависимости, поскольку Storyboards само не является свойством зависимости). Другими словами, согласно описанному выше, Style позволяет автору группировать вместе данные, представляющие одно или несколько свойств, которые затем можно применять в качестве набора к соответствующим свойствам элемента; эти свойства в Style могут быть анимированными и/или соответствовать триггерам. Например, применение следующего Style будет снабжать стилем кнопки на странице, чтобы они последовательно переключались между красным и синим:

Очевидно, что при возможности управлять значениями свойств элемента из разных механизмов, включая триггеры, видеоряды, локально заданные значения в разметке и пр., нужно обрабатывать разрешение конфликтов между значениями свойства, чтобы определять, какое должно быть значение свойства. Например, значения, заданные как часть свойства Storyboards, подменяют значения, локально заданные на элементах. Таким образом, имеется приоритет значений свойства на конкретном FrameworkElement, начиная со свойства Triggers как наивысшего приоритета. Заметим, что если множественные триггеры пытаются задать одно и то же свойство, то применяются правила «последний написавший побеждает», например, в случае разметки, применяется значение триггера, появившегося в разметке последним.

Свойство Storyboards имеет следующий по старшинству приоритет и, опять же, применяется решение «последний написавший побеждает», если множественные средства задания видеоряда пытаются задать одно и то же свойство. «Последний написавший» интерпретируется с использованием обхода «сначала вглубь» дерева временных линий.

Следующими являются значения, локально заданные на элементе (например, FrameworkElement.SetValue). Следом обычно идут стили с тем же порядком приоритетов внутри стиля, т.е. триггеры для Style (опять же с «последний написавший побеждает» в случае конфликта на одном уровне), затем Storyboards для Style, затем значения целевого типа для Style.

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

В одной реализации, первый компонент свойства должен быть свойством зависимости (например, Background, которое заполняется в вышеприведенном примере). Тип этого свойства зависимости также должен быть Changeable, ввиду необходимости клонировать копию, чтобы можно было изменять клонированную копию; (альтернативы включают в себя решение глубокого клонирования или сохранение ее как шаблона). Заметим, что это работает потому, что стили и видеоряды/триггеры по-прежнему, в принципе, основаны на свойстве зависимости. При изменении чего-нибудь, связанного с Button.Background, значение всего фона повторно вычисляется.

Таким образом, в вышеприведенном примере, сначала делается копия кисти чистого цвета, которая сохраняется в экземпляре прямоугольника. Внутренне, локальное значение в действительности не заменяется, поскольку значение не требуется сохранять при деактивации триггера. Затем триггер выполняется на этой копии, как при повторном воспроизведении сценария.

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

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

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

В этом примере, в течение первой минуты фон кнопки является линейным градиентом, от красного к зеленому. Когда мышь встает на кнопку, кисть меняется на линейный градиент от розового к зеленому. Когда кнопка мыши нажата, цвет меняется линейно от розового к светло-зеленому до тех пор, пока кнопка мыши не будет отпущена, и в этот момент фон меняется обратно на кисть линейного градиента от розового к зеленому. Когда мышь уходит с кнопки, фон возвращается к линейному градиенту от красного к зеленому. Заметим, что возможно иметь пути сложного свойства в объекте SetAction.

Первый шаг к применению этого сценария состоит в сохранении часов на родительском элементе, снабженном стилем, в случае применения стиля (т.е. во время OnStyleInvalidated). Это позволяет повторно использовать одни и те же часы при повторном построении свойства. Второй шаг состоит в игнорировании ошибок пути свойства; т.е. после первой минуты, когда временная линия становится неактивной, кнопка уже не имеет кисти линейного градиента. В этот момент триггеры, которые изменяют остановки, уже не имеют смысла и (в соответствии с привязкой данных) молчаливо игнорируются.

Из свойства Storyboards, каждое дерево Timeline устанавливается в дерево TimelineClock, хранящееся в том же FrameworkElement, который владеет Storyboards. Для каждого средства задания и часов анимации указанный элемент также получает ссылку на часы. Для каждых часов средства задания, указанный элемент отслеживает активные/неактивные события на часах, каждое из которых запускает аннулирование свойства. Для каждых часов анимации часы включаются в список часов анимации элемента для свойства.

На фиг.7 приведен пример этапов и обновлений структуры данных при задании и обработке видеоряда на элементе. На фиг.7, в общем виде, показаны объекты и ссылки для следующего простого примера SetterTimeline:

Первоначально один или несколько экземпляров Timeline добавляется к свойству Storyboards для DockPanel, например, путем вызова DockPanel. Storyboards.Add (new SetterTimeline (…)).

При вызове ISupportlnitialize.Endlnit для DockPanel видеоряды (например, соответствующие SetterTimeline 700 для DockPanel 702 на фиг.7) обрабатываются так, что каждая из временных линий в Storyboards устанавливается в часы (например, обозначенные 704 на фиг.7) через TimelineClock.CreateFromTimeline и сохраняется частным образом на FrameworkElement (например, прямоугольник 706 на фиг.7).

Пункту назначения каждого средства задания дается ссылка на часы, связанные со свойством зависимости, подвергающимся воздействию. Пункт назначения также задает средства отслеживания граничных событий часов (например. Begun и Ended). Любые анимации под средством задания добавляются в список анимаций пункта назначения (через FrameworkElement.GetAnimationClocks).

При задании стиля на FrameworkElement (каждом FrameworkElement) часы устанавливаются из иерархий Timeline в коллекции Style.Storyboards. Для средств задания, имеющих пунктом назначения родительский элемент, снабженный стилем, FrameworkElement поддерживает ссылки на часы (связанные с соответствующим свойством зависимости), и родительский элемент, снабженный стилем, задает средства отслеживания событий Begun/Ended для часов. Для средств задания, имеющих пунктом назначения элементы в Style.VisualTree, аналогичные ссылки/средства отслеживания задаются, когда FrameworkElement устанавливает элемент.

Заметим, что при обработке временных линий временные линии средства задания с простыми путями свойства (просто один компонент) поддерживаются отдельно от временной линии средства задания со сложными путями. Это позволяет осуществлять двухпроходный поиск значений свойства, описанный выше.

Заключение

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

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

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

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

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

3. Способ по п.1, в котором по меньшей мере некоторые из узлов дерева таймеров представляют данные хронирования из стиля, связанного с элементом.

4. Способ по п.1, в котором при генерации списка событий из упомянутого дерева таймеров после его объединения с упомянутым деревом элементов устанавливают объект часов, который поддерживает информацию временной линии для всего видеоряда.

5. Способ по п.1, в котором установление объекта часов, который поддерживает информацию временной линии для всего видеоряда, выполняют путем запуска временной линии видеоряда в ответ на триггер.

6. Способ по п.5, в котором триггер соответствует триггеру свойства, и в котором при запуске временной линии видеоряда оценивают состояние триггера свойства.

7. Способ по п.5, в котором триггер соответствует триггеру события, и в котором при запуске временной линии видеоряда обнаруживают событие, возбуждаемое триггером события.

8. Способ по п.5, в котором триггер соответствует триггеру входа/выхода, и в котором при запуске временной линии видеоряда оценивают состояние триггера свойства для события входа.

9. Способ по п.1, дополнительно содержащий изменение подсвойства элемента назначения в пути сложного свойства упомянутого дерева иерархических элементов.

10. Способ по п.9, в котором при изменении подсвойства устанавливают значение свойства для элемента назначения, после чего изменяют значение подсвойства.

11. Способ по п.10, в котором при установлении упомянутого значения свойства для элемента назначения ищут значение свойства на основании порядка разрешения конфликта.

12. Способ по п.9, в котором при изменении значения подсвойства определяют базовое значение, с которого нужно изменять упомянутое значение подсвойства.

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

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

15. Машиночитаемый носитель по п.13, в котором по меньшей мере некоторые из узлов дерева таймеров представляют данные хронирования из стиля, связанного с элементом.

16. Машиночитаемый носитель по п.13, в котором при генерации списка событий из упомянутого дерева таймеров после его объединения с упомянутым деревом элементов устанавливают объект часов, который поддерживает информацию временной линии для всего видеоряда.

17. Машиночитаемый носитель по п.13, в котором установление объекта часов, который поддерживает информацию временной линии для всего видеоряда, выполняют путем запуска временной линии видеоряда в ответ на триггер.

18. Машиночитаемый носитель по п.17, в котором триггер соответствует триггеру свойства, и в котором при запуске временной линии видеоряда оценивают состояние триггера свойства.

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

20. Машиночитаемый носитель по п.17, в котором триггер соответствует триггеру входа/выхода, и в котором при запуске временной линии видеоряда оценивают состояние триггера свойства для события входа.

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

22. Машиночитаемый носитель по п.21, в котором при изменении подсвойства устанавливают значение свойства для элемента назначения, после чего изменяют значение подсвойства.

23. Машиночитаемый носитель по п.22, в котором при установлении упомянутого значения свойства для элемента назначения ищут значение свойства на основании порядка разрешения конфликта.

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



 

Похожие патенты:

Изобретение относится к области видеосвязи. .

Изобретение относится к области компьютерной графики. .

Изобретение относится к области имитации перемещений виртуального манекена. .

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

Изобретение относится к вычислительной технике. .

Изобретение относится к способам обмена информации в компьютерных сетях. .

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

Изобретение относится к способам перехода между анимациями визуальных элементов пользовательского интерфейса

Изобретение относится к области техники, касающейся компоновок дисплея, и, в частности, к увеличению срока службы компоновки дисплея в портативном устройстве

Изобретение относится к средствам обработки изображений

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

Изобретение относится к устройству и способу создания видеоанимации

Изобретение относится к технологиям для анимации объектов посредством использования схем анимации

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

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