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

Иллюстрации

Показать все

Изобретение относится к области обработки графической или другой аудиовизуальной информации для отображения на компьютерных системах. Техническим результатом является улучшенное воспроизведение мультимедиа. Описаны способ и система, в которых объекты видеоряда координируют анимацию множественных элементов и/или мультимедиа, отображаемых на графическом дисплее компьютера. Видеоряды связывают свойства элементов в дереве элементов с временной линией, что позволяет анимировать/воспроизводить свойства, связанные с видеорядом, совместно как группу, запуская, останавливая, производя поиск или приостанавливая видеоряд. Триггеры, например, управляемые взаимодействием пользователя с отображаемой информацией, включающие в себя триггеры свойства, которые изменяют значения в соответствии с изменением состояния, и триггеры события, которые запускают события, могут обуславливать запуск, остановку, приостановку и поиск видеоряда. Видеоряды можно использовать в программах на основе 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 высокого уровня. Согласно описанному ниже, по существу, любая независимая анимация или мультимедиа (например, линейное мультимедиа, например, видео и аудио), а также видеоряд, который координирует указанные анимации, будет иметь часы, поддерживаемые для нее на