ПРОТОКОЛ СВЯЗИ ДЛЯ СИНХРОНИЗАЦИИ АНИМАЦИОННЫХ СИСТЕМ
COMMUNICATION PROTOCOL FOR SYNCHRONISING ANIMATION SYSTEMS

Область техники, к которой относится изобретение
Системы и способы, описанные в материалах настоящей заявки, в целом относятся к анимационным системам, а более точно к протоколу связи для поддержания информационной и временной синхронизации между множеством анимационных систем.
Предшествующий уровень техники
Пользовательские ожидания относительно качества графики, имеющие отношение к видеоиграм, сетевым веб-сайтам, мультимедийным презентациям или тому подобному, значительно возросли в последние годы. В результате, этот высокий уровень ожиданий ставит постоянно увеличивающиеся задачи разработчикам видео/анимационных систем и приложений.
Интерактивные анимационные приложения представляют специальное рассмотрение, поскольку две анимационные системы (например, приложение, сохраненное в локальной или удаленной памяти, и система устройства отображения) должны взаимодействовать друг с другом, чтобы обеспечивать пользовательское впечатление высокого качества. Здесь существует проблема, так как одна анимационная система (то есть приложение, сохраненное в памяти) по большей части связана с интерактивностью с пользователем, тогда как другая анимационная система (то есть система устройства отображения) преимущественно связана с аспектами визуализации, такими как частота обновления. Эти конкурирующие интересы должны быть согласованы, чтобы обеспечить требуемое пользовательское впечатление.
Сущность изобретения
Описаны системы и способы, которые включают в себя две отдельные анимационные системы. Высокоуровневая анимационная система (например, приложение) преимущественно связана с интерактивностью и сложной структурой тактирования и, следовательно, оптимизирована для высокой интерактивности. Низкоуровневая анимационная система (например, устройство отображения) преимущественно связана с частотой обновления визуализации и, таким образом, оптимизирована для высокой частоты обновления кадра. Обеспечение множества отдельных анимационных систем предоставляет анимации возможность выполняться при предопределенной частоте обновления изображения без ущерба для интерактивности или наоборот.
Две анимационные системы работают асинхронно, так что каждая система может лучше сосредоточиться на своей первичной функции в ее собственной структуре тактирования. Чтобы оптимизировать пользовательское впечатление, две анимационные системы должны быть синхронизированы. В последовательности операций синхронизации, описанной в материалах настоящей заявки, высокоуровневая анимационная система и низкоуровневая анимационная система обмениваются данными (например, данными средства создания тактовых импульсов (тактового генератора), данными анимационной функции и т.д.) с использованием протокола связи, разработанного специально для этой цели.
Протокол связи, введенный в материалах настоящей заявки, обеспечивает эффективный способ для обмена требуемыми данными. Взамен отправки большого объема данных для каждого кадра протокол связи предусматривает отправку только небольшого объема данных, касающихся того, каким образом анимации предполагается изменяться за заданный период времени. В дополнение к экономии издержек за счет системных операций протокол обеспечивает, что низкоуровневая анимационная система имеет в распоряжении информацию, чтобы обрабатывать несколько кадров анимации, что имеет результатом отсутствие кадров визуализации, являющихся удаленными из-за нехватки данных обновления.
Краткое описание чертежей
Более полное понимание примерных способов и устройств настоящего изобретения может быть получено посредством ссылки на последующее подробное описание, рассматриваемое в сочетании с прилагаемыми чертежами, на которых:
Фиг.1 - структурная схема системы сервер-клиент, включающей в себя анимационные подсистемы.
Фиг.2 - структурная схема примерной архитектуры системы визуализации анимации.
Фиг.3 - блок-схема последовательности операций, изображающая методологическую реализацию основного режима работы факторизованной анимационной/визуализирующей системы.
Фиг.4a - изображение сообщений и параметров протокола связи, передаваемых из высокоуровневого средства тактирования в низкоуровневое средство тактирования, чтобы синхронизировать высокоуровневую анимационную систему с низкоуровневой анимационной системой.
Фиг.4b - изображение сообщений и параметров протокола связи, передаваемых из низкоуровневого средства тактирования в высокоуровневое средство тактирования, чтобы синхронизировать высокоуровневую анимационную систему с низкоуровневой анимационной системой.
Фиг.4c - изображение сообщений и параметров протокола связи, передаваемых от высокоуровневых анимационных объектов низкоуровневым анимационным объектам, чтобы синхронизировать высокоуровневую анимационную систему с низкоуровневой анимационной системой.
Фиг.5 - блок-схема последовательности операций, изображающая примерную методологическую реализацию процесса анимации в системе визуализации, содержащей полностью связанные высокоуровневую анимационную систему и низкоуровневую анимационную систему.
Фиг.6 - блок-схема последовательности операций, изображающая примерную методологическую реализацию процесса анимации в системе визуализации, содержащей частично связанные высокоуровневую анимационную систему и низкоуровневую анимационную систему.
Фиг.7 - примерная вычислительная среда в соответствии с системами и способами, описанными в материалах настоящей заявки.
Подробное описание предпочтительного варианта осуществления
Последующее обсуждение по большей части имеет дело с компьютерной системой, формирующей и визуализирующей анимацию, (то есть функцией, которая со временем модифицирует графические объекты) с использованием протокола связи, который определяет передаваемые данные, используемые при формировании и визуализации. Графические объекты могут содержать окно, диалоговое окно или тому подобное. В качестве используемого в материалах настоящей заявки термин «компьютерная система» может означать либо одиночный компьютер, либо множество компьютеров, работающих вместе. Компьютерная система включает в себя множество отдельных анимационных/визуализирующих систем - или подсистем - каждая из которых сосредотачивается на конкретной функции анимации или визуализации.
В обсуждении, приведенном ниже, протокол связи описан в контексте двух анимационных систем или подсистем. Однако отмечено, что они являются только примерами и что протокол связи может быть использован с более чем двумя отдельными анимационными системами или подсистемами.
Термин «визуализация» используется при обсуждении протокола связи, введенного в материалах настоящей заявки. «Визуализация» может быть рассмотрена в качестве этапа процесса анимации, который определяет анимацию для отображения и/или отображает анимацию. «Система визуализации» может быть системой, которая включает в себя функцию визуализации. Таковая может быть узко определена, чтобы описать систему, которая выполняет только функцию визуализации, или она может быть широко определена, чтобы описывать систему, которая выполняет другие функции в дополнение к одной или более функциям визуализации, такую как анимационную систему.
Подобным образом, термин «анимационная система» в качестве используемой в материалах настоящей заявки ссылается на систему, которая включает в себя анимационную функцию. «Анимационная система» может быть системой, которая выполняет только анимационные функции, или может быть системой, которая выполняет одну или более анимационных функций в дополнение к другим функциями, таким как функция визуализации.
Использование либо конкретного термина - «система визуализации» либо «анимационная система» - не предназначено для ограничения объема архитектуры и/или функции, ассоциативно с ней связанной. Надлежащий объем, охватываемый используемым термином, может быть получен из контекста, в котором термин используется.
Анимационная система с полным набором признаков включает в себя сложные структуры тактирования, в которых каждая система может приводиться в действие отдельным средством создания тактовых импульсов (тактовым генератором), а тактовые генераторы связаны произвольным набором правил, заданным разработчиком приложения. Например, одной анимации (А) может быть задано начинаться точно в тот же самый момент времени, в который заканчивается другая анимация (В), или группе анимаций может быть задано выполняться при половине их нормальной скорости. В более общем случае, такая система также может управлять синхронизацией анимаций с другими типами линейных аудиовизуальных данных, таких как аудио и видео, посредством связывания тактового генератора с каждой частью линейных аудиовизуальных данных.
В дополнение тактовые генераторы являются интерактивными по той причине, что они могут быть запущены, приостановлены или остановлены в любой момент времени, и такие интерактивные действия могут послужить причиной изменений, которые передаются через всю иерархию тактирования, как продиктовано правилами синхронизации. Следуя предыдущему примеру, если анимация (В) приостановлена и возобновлена пятью секундами позже, то анимация (А) будет начинаться на пять секунд позже, чем планировалось первоначально. Это, в свою очередь, может вызывать изменения тактирования в других тактовых генераторах, потенциально передающиеся через всю структуру тактирования.
Вычисление изменений для структуры тактирования является дорогостоящей неограниченной операцией, значит, эта операция не является подходящей для системы визуализации в реальном времени, которая имеет задачей соответствовать прогнозируемой частоте кадров. Эти две задачи (обеспечение анимационной системы с полным набором признаков и поддержание прогнозируемой частоты кадров) являются противоречивыми. Одно из решений заключается в том, чтобы разделить систему на две части: одну, которая осведомлена о правилах синхронизации между тактовыми генераторами, и другую, которая рассматривает каждый тактовый генератор как полностью независимый объект.
Протокол связи, заявленный в материалах настоящей заявки, поддерживает две отдельные анимационные системы в синхронизации, так что анимации могут выполняться при высокой частоте обновления изображения, без ущерба для интерактивности, и наоборот.
Анимационная система, описанная в материалах настоящей заявки, включает в себя по меньшей мере два компонента, а именно высокоуровневую анимационную подсистему, которая связана главным образом с интерактивностью и сложными структурами тактирования, и низкоуровневую анимационную подсистему, которая связана главным образом с визуализацией одной или более анимаций на дисплее при высокой постоянной частоте обновления изображения. Термин «высокоуровневая» относится к тому факту, что эта анимационная система находится ближе к пользователю, тогда как «низкоуровневая» анимационная система находится ближе к «железу» (или машине).
Одним из примеров высокоуровневой анимационной подсистемы является приложение, которое управляет анимациями согласно данным, принятым от самого приложения или от пользователя. Примером низкоуровневой анимационной подсистемы является система устройства отображения, которая управляет преобразованием анимационных данных в физически отображаемые анимации. Система устройства отображения включает в себя компоненты аппаратных средств, а также компоненты программного обеспечения, которые могут быть включены в аппаратные средства видеокарты (не показанной явным образом) или в компонент, который физически не находится на видеокарте.
В представленном обсуждении может быть сделана ссылка на устройство отображения в качестве системы отображения или анимационной системы либо подсистемы. Однако отмечено, что все компоненты и обработка системы отображения не обязательно являются физически расположенными в этом устройстве. Термин «устройство отображения», в качестве используемого в материалах настоящей заявки, также охватывает процессорные операции, которые управляют отображением, и любую разновидность видеопамяти.
Обычно, процесс анимации предполагается в качестве исполняемого в процессе на одиночной машине, которая включает в себя как высокоуровневую анимационную подсистему, так и низкоуровневую анимационную подсистему (использующей единственную анимационную систему). Однако протокол связи, описанный в материалах настоящей заявки для двух отдельных анимационных систем, допускает высокоуровневые и низкоуровневые анимационные подсистемы, исполняемые: (1) в виде двух потоков в едином процессе, (2) в виде отдельных процессов на одной машине; или (3) на двух отдельных машинах, разделенных сетью, таких как в архитектуре клиент-сервер.
Примерная система клиент-сервер
Фиг.1 - структурная схема примерной системы 100 клиент-сервер в соответствии с системами и способами, описанными в материалах настоящей заявки. Система 100 клиент-сервер включает в себя сервер 102 и клиент 104, которые осуществляют связь по сети 106, такой как сеть Интернет.
Сервер 102 включает в себя память 108, процессор 110, сетевую интерфейсную карту 112 для управления связью по сети 106 и другие разнообразные аппаратные средства 114, типично требуемые серверу, чтобы выполнять стандартные серверные функции. Память 110 включает в себя операционную систему 116 и разнообразные компоненты 118 программного обеспечения, которые обеспечивают функциональные возможности сервера.
Приложение 120 также хранится в памяти 108 и включает в себя высокоуровневую анимационную подсистему 122, которая содержит в себе компьютерный код, который управляет одной или более анимационными функциями. Анимационная функция может быть окном, диалоговым окном или тому подобным. Высокоуровневая анимационная подсистема 122 сосредоточена главным образом на интерактивности и сложных структурах тактирования. Как будет видно при дальнейшем обсуждении, приложение 120 может включать в себя написанный пользователем компьютерный код и системный компьютерный код, который изолирован от пользовательского кода, к которому пользовательский код осуществляет доступ через один или более прикладных программных интерфейсов (API).
Клиент 104 включает в себя память 130, процессор 132, сетевую интерфейсную карту 134, которая управляет передачей данных в и из сети 106, и дисплей 136. Клиент 104 также включает в себя устройство 138 отображения, а также разнообразные аппаратные средства 140, которые могут потребоваться клиенту 104, чтобы функционировать должным образом.
Память 130 хранит обозреватель 142, сконфигурированный, чтобы обеспечивать доступ к и осуществлять навигацию по сети 106, и операционную систему 144, которая управляет базовыми функциональными возможностями клиента 104. Разнообразные компоненты 146 программного обеспечения также сохранены в памяти 130 и включают в себя программное обеспечение, которое обеспечивает необходимые функциональные возможности клиента 104 и клиентские службы.
Устройство 138 отображения включает в себя низкоуровневую анимационную подсистему 148, которая может быть сохранена в памяти (не показана) устройства отображения, в компоненте (не показан) аппаратных средств устройства отображения или в памяти 130, включенной в состав клиента 104. Фиг.1 показывает, что по меньшей мере часть компонентов устройства 138 отображения может находиться в основной памяти 130 клиента 104. Низкоуровневая анимационная подсистема 148 сосредоточена главным образом на удовлетворении целей визуализации касательно высокой частоты обновления кадра (минимальной частоты обновления в тридцать (30) кадров в секунду). Поддерживание высокой частоты обновления кадров обеспечивает прекрасный результат и является привлекательным для зрителя, что является первичной задачей анимационной системы.
Двумя препятствиями, которые стоят на пути поддерживания высокой частоты обновления кадров анимации, являются (1) задержка и (2) полоса пропускания. При отправке данных по сети данные могут быть предназначены для любых мест в мире, что может создавать значительные задержки. Проблема задержек мешает прибытию надлежащих сообщений и откликов вовремя, а это может негативно сказаться на частоте обновления и ухудшает впечатление пользователя. Это является более значительной проблемой анимационных систем, сконфигурированных в качестве единого объекта, так как огромный объем данных должен регулярно отправляться, чтобы управлять анимацией.
Вопрос полосы пропускания также представляет более значительную проблему для систем в виде единого объекта. Со сложной анимацией гигантские объемы данных должны отправляться через конкретную границу (поток, процесс, сеть) для каждого кадра. Даже с системой, описанной в материалах настоящей заявки, которая включает в себя две отдельные анимационные подсистемы, использование полосы пропускания может быть проблемой при использовании модема, который по своей природе ограничивает полосу пропускания, или сервера, который обслуживает чудовищное количество клиентов. Даже если сервер должен передавать лишь относительно небольшой объем данных для простой анимации, если данными должны быть обеспечены, скажем, четыре сотни клиентов, он может подойти к вопросу о полосе пропускания.
Система и способы, описанные в материалах настоящей заявки, предоставляют эффективный путь для оптимизации использования полосы пропускания наряду с поддержанием высокой частоты обновления.
Примерная архитектура системы визуализации анимации
Фиг.2 - структурная схема примерной архитектуры 200 системы визуализации анимации в соответствии с системами и способами, описанными в материалах настоящей заявки. Некоторые элементы, показанные на фиг.2, являются элементами, которые также включены в фиг.1. В целях ссылки элемент, включенный в оба чертежа, показан на фиг.2 с идентичным номером ссылки, использованным для элемента на фиг.1.
Примерная архитектура 200 включает в себя приложение 120 и устройство 138 отображения. Приложение 120 осуществляет связь с устройством 138 отображения через канал 204 связи по протоколу 216 связи, который ниже будет обсуждаться более подробно. Как обсуждалось ранее, канал 204 связи пересекает границу, которая может быть границей между потоками, процессами или машинами. Для границы между машинами, например, канал 204 связи может быть сетью 106, показанной ранее.
Пользовательский код 202 функционирует вместе с приложением 120 через границу 206 API, которая является набором системных API-интерфейсов, которые обеспечивают доступ к приложению 120 со стороны разработчика, который желает использовать особенности приложения 120 в пользовательском коде 202.
Как обсуждено ранее, приложение 120 охватывает высокоуровневую анимационную подсистему 122. Высокоуровневая анимационная подсистема 122 включает в себя высокоуровневый графический компонент 208, высокоуровневую базу 210 данных анимационных объектов и высокоуровневое средство 212 тактирования. Средство 212 тактирования создает и управляет одним или более высокоуровневыми тактовыми генераторами 214, сохраненными в высокоуровневой базе 210 данных анимационных объектов.
Высокоуровневое средство 212 тактирования отвечает за настройку и синхронизацию высокоуровневых тактовых генераторов 214. Так, например, если есть десять (10) анимаций, которым предлагается выполняться вместе, высокоуровневое средство 212 тактирования синхронизирует десять (10) высокоуровневых тактовых генераторов 214, чтобы отображать анимации синхронно.
Высокоуровневый графический компонент 208 хранит тип графики, используемый в анимации. Высокоуровневая база 210 данных анимационных объектов сохраняет анимационные значения, связанные с одной или более анимациями (и/или аудиовизуальные объекты, связанные с одними или более аудиовизуальными данными). Анимационные значения включают в себя по меньшей мере временную последовательность (т.е. тактовый генератор), связанную с анимацией. (Отмечается, что термины «тактовый генератор» и «временная последовательность» используются в материалах настоящей заявки взаимозаменяемо). Анимационные значения воздействуют на выходные данные визуализации анимации на основании значений высокоуровневых тактовых генераторов 214. Каждая анимация модифицирует один или более аспектов высокоуровневых графических компонентов 208.
Например, для простой анимации создания линии из точки P1 в точку P2 база 210 данных анимационных объектов может сохранять значение для P1 в момент времени =0, и значение для P2 в момент времени =1. (Все точки между P1 и P2 интерполируются).
Устройство 138 отображения примерной архитектуры 200 системы визуализации анимации включает в себя низкоуровневую анимационную подсистему 148, показанную на фиг.1. Низкоуровневая анимационная подсистема 148 является эквивалентной структурой для высокоуровневой анимационной подсистемы 122 и включает в себя низкоуровневый графический компонент 218, низкоуровневую базу 220 данных анимационных объектов и низкоуровневое средство 222 тактирования. Средство 222 тактирования создает один или более низкоуровневых тактовых генераторов 224, которые сохраняются в низкоуровневой базе данных анимационных объектов.
Компоненты (218-224) низкоуровневой анимационной подсистемы 148 подобны компонентам (208-214) высокоуровневой анимационной подсистемы 122, а их функции и способность взаимодействия подобны описанным ранее.
Есть преимущества архитектуры, подобной примерной архитектуре 200 системы визуализации анимации, то есть архитектуры, которая содержит анимационную систему, факторизованную в две подсистемы. Если приложение является затратным и расходует большое количество служебных данных касательно интерактивности, анимация может продолжаться; она не должна ожидать завершения интерактивной части для продолжения анимации. В нефакторизованной системе, если приложение не снабжает дисплей постоянными обновлениями данных, то дисплей скорее может вырисовывать статические изображения, чем движущуюся анимацию.
Общий пример проблемы характеризуется полосковым индикатором состояния, который отображается, в то время как система обрабатывает информацию. Обычно индикатор продвигается, например, в направлении слева направо, что указывает, что продолжает происходить некоторая обработка. Однако есть моменты времени, когда индикатор состояния останавливается, а пользователь не может сказать, заблокировалась ли система или по-прежнему что-то обрабатывает. Это является результатом интерактивной части аниматора, не поставляющей вовремя обновленные данные для части отображения, чтобы удовлетворять частоте обновления кадров.
Такая система является в чрезвычайной степени некачественной для видеоизображений. Что касается видеоизображения, кадр может быть удален, имея результатом подергивание или искажение изображения, только потому, что система занята другой задачей (которая могла бы быть второстепенной, как, например, передвижение курсора мыши).
В факторизованной анимационной системе низкоуровневая анимационная подсистема 148 работает асинхронно с высокоуровневой анимационной подсистемой 122, значит она продолжает работать (т.е. вырисовывать), даже когда высокоуровневая анимационная подсистема 122 становится занятой задачей, которая мешает ей перерисовать кадр до того, как обновлен кадр. Следовательно, факторизованная анимационная система плавно отображает анимационные операции и, поэтому, обеспечивает превосходное пользовательское впечатление.
Примерная методологическая реализация: основной режим работы
Фиг.3 - блок-схема последовательности операций, которая изображает основной режим работы факторизованной системы анимационной/визуализирующей, такой как показанная на фиг.1 и фиг.2. При последующем обсуждении по-прежнему будут делаться ссылки на элементы с помощью ссылочных номеров, показанных на фиг.1 и 2.
В факторизованной анимационной системе (например, анимационной системе, которая факторизована в по меньшей мере две отдельные анимационные подсистемы, которые функционируют асинхронно относительно друг друга) пользователь (приложение) сообщает высокоуровневой системе через системные API-интерфейсы, каким образом графике предполагается появляться на дисплее. Высокоуровневая система использует специализированный протокол связи, чтобы предписывать низкоуровневой системе создавать структуру, подобную установленной в высокоуровневой системе.
Так как высокоуровневая система сконфигурирована, чтобы создавать некоторые элементы в низкоуровневой системе, она обязательно придерживается того, что протокол связи, обсужденный более подробно ниже относительно фиг.4, включает в себя несколько сообщений или команд «создать». Блок-схема последовательности операций, показанная на фиг.3, охватывает некоторые основные этапы, которые возникают, когда высокоуровневая анимационная подсистема 122 осуществляет связь с низкоуровневой анимационной подсистемой 148, чтобы настроить структуры в ней.
На этапе 300 высокоуровневая анимационная подсистема 122 отправляет сообщение, чтобы создать анимационный объект 220 в низкоуровневой подсистеме 148. Высокоуровневая анимационная подсистема 122 в таком случае осуществляет связь с низкоуровневой подсистемой 148, чтобы создать тактовый генератор 224 (т.е. временную последовательность), чтобы включить в состав вместе с анимационным объектом 220, который был только что создан (этап 302).
Отмечено, что нет необходимости в соотношении 1:1 между анимационными объектами и временными последовательностями. Другими словами, одна временная последовательность может управлять более чем одним анимационным объектом. Следовательно, на описанном выше этапе 302 может не потребоваться создать временную последовательность, если она уже существует и если вновь создаваемый анимационный объект может быть связан с существующей временной последовательностью.
В этой точке приложение 120 может создавать другие анимационные объекты или модифицировать существующую анимацию. Если приложение 120 сконфигурировано, чтобы создать другой анимационный объект (ветвь «анимационный объект», этап 304), то высокоуровневая анимационная подсистема 122 отправляет сообщение протокола связи в низкоуровневую анимационную подсистему 138, чтобы создать другой анимационный объект 220 на этапе 300. Высокоуровневая анимационная подсистема 122 затем отправляет сообщение на этапе 302, чтобы связать временную последовательность с вновь созданным анимационным объектом 220. Временная последовательность может быть создана, или она может являться существующей временной последовательностью.
Приложение 120 также сконфигурировано, чтобы поддерживать модификации. Высокоуровневая анимационная подсистема 122 может отправлять сообщение, чтобы модифицировать анимационный объект 220 и/или временную последовательность, связанную с ним (ветвь «модифицирование», этап 304). В дополнение к прямой модификации, которая модифицирует аспект анимации, также являются модификациями операции «приостановить» и «остановить». Операция «приостановить» может быть закодирована на основе типичной модификации, например, «в момент времени 0 тактовый генератор - 10; и в момент времени 10 тактовый генератор - 10». Операция «остановить» инициируется сообщением «удалить анимацию».
Если модификация является сообщением «удалить анимацию» (ветвь «да», этап 306), то анимация прекращается на этапе 308. В ином случае (ветвь «нет», этап 306), высокоуровневая анимационная система 122 отправляет одно или более сообщений, сконфигурированных для модификации существующей анимации (этап 310). Модификация существующей анимации также может означать модификации временной последовательности, связанной с существующей анимацией.
Как упомянуто ранее, вышеприведенная блок-схема последовательности операций изображает основную методологию для конфигурирования низкоуровневой анимационной подсистемы 148 посредством отправки сообщений протокола связи из высокоуровневой анимационной подсистемы 122. По меньшей мере одна специфичная методологическая реализация, использующая протокол связи, будет обсуждена ниже более подробно, после того как будут обсуждены специфические элементы протокола связи.
Протокол связи
Фиг. 4а, 4b и 4c - таблицы, описывающие сообщения/команды протокола связи для использования при управлении передачей между высокоуровневой анимационной подсистемой и низкоуровневой анимационной подсистемой. При последующем обсуждении по-прежнему будут делаться ссылки на элементы и ссылочные номера, показанные и описанные согласно фиг. 1 и 2.
Фиг.4а изображает таблицу 400, которая описывает сообщения, отправляемые из высокоуровневого средства 212 тактирования в низкоуровневое средство 222 тактирования. Сообщение 402 «Создать тактовый генератор» побуждает низкоуровневое средство 222 тактирования создать тактовый генератор для анимации. Сообщение 402 «Создать тактовый генератор» включает в себя «Создать параметры тактового генератора» 404, которые являются начальными свойствами тактового генератора. Свойства тактового генератора могут включать в себя, но не ограничиваются ими, продолжительность (от начального момента времени), родительский тактовый генератор (с которым связаны все моменты времени в этом тактовом генераторе), скорость (относительно своего родителя), ускорение и замедление. Параметры ускорения и замедления задают процент времени «продолжительности», который тратится на «ускорение» или «замедление» анимации.
Сообщение 406 «Обновить свойства» обеспечивает обновление существующих свойств тактового генератора. «Обновить параметры свойств» 408 включает в себя целевой тактовый генератор (например, тактовый генератор, содержащий свойства, которые должны быть обновлены) и обновляемые свойства и значения. Сообщение 410 «добавить интервал» дает инструкции низкоуровневому средству тактирования добавить интервал в существующую анимацию (объект) и включает в себя «Добавить параметры интервала» 412, которые идентифицируют целевой тактовый генератор и свойства интервала, который подлежит добавлению к целевому тактовому генератору.
Протокол включает в себя сообщение 414 «Сбросить сдвиг синхронизации» и связанный «Параметр сброса сдвига синхронизации» 416, которые используются, чтобы поддерживать синхронизацию между высокоуровневой анимационной подсистемой 122 и низкоуровневой анимационной подсистемой 148. Каким образом это реализовано - это предмет конкретного проектирования системы.
В по меньшей мере одной реализации процесс синхронизации описан следующим примером. Если низкоуровневая анимационная подсистема 148 контролирует видеофайл и обнаруживает, что видеоизображение становится хуже (например, из-за сетевого трафика), то низкоуровневая анимационная подсистема 148 отправляет сообщение «Синхронизировать со сдвигом аудиовизуальных данных» и параметры (смотрите фиг.4b) в высокоуровневую анимационную подсистему 122 и сохраняет тот факт, что произошел сдвиг, и величину сдвига.
Когда высокоуровневая анимационная подсистема 122 (более точно, высокоуровневое средство 212 тактирования) завершает обновление интервалов, чтобы учесть сдвиг, она отправляет сообщение 414 «Сбросить сдвиг синхронизации» и связанный «Параметр сброса сдвига синхронизации» 416, чтобы указать низкоуровневой анимационной подсистеме 148 сбросить смещение сдвига в нуль.
Для дополнительной информации об этом конкретном сообщении протокола пожалуйста обратитесь к фиг.4b, приведенной ниже.
Сообщение 418 «Удалить все интервалы» может быть отправлено в низкоуровневое средство 222 тактирования, чтобы удалить любые существующие интервалы, связанные с конкретным тактовым генератором. Целевой тактовый генератор идентифицируется в «Параметре удаления всех интервалов» 420. Сообщение 422 «Удалить тактовый генератор» также включено в протокол связи и отправляется в низкоуровневое средство 222 тактирования, чтобы удалить целевой тактовый генератор - идентифицированный в «Параметре удаления тактового генератора» 424.
Фиг.4b изображает таблицу 430, которая описывает сообщение протокола связи, которое отправляется из низкоуровневого средства 222 тактирования в высокоуровневое средство 212 тактирования. Сообщение 432 «Синхронизировать со сдвигом аудиовизуальных данных» снабжает высокоуровневое средство 212 тактирования величиной, на которую высокоуровневое средство 212 тактирования должно осуществить сдвиг конкретного тактового генератора, чтобы синхронизироваться с аудиовизуальным компонентом. *** ПРИМЕЧАНИЕ: Это также закрыто для корректировки? *** «Параметры синхронизации со сдвигом аудиовизуальных данных» 434 включают в себя целевой тактовый генератор, который является тактовым генератором для сдвига, и величину сдвига, которая идентифицирует значение сдвига.
Сообщение отправляет данные обратно в высокоуровневую анимационную подсистему 122 из низкоуровневой анимационной подсистемы. Это необходимо из-за наличия задержки в канале 204 связи. Один из случаев, когда она может возникать - когда пользователь активирует команду «приостановить». Так как системы осуществляют связь друг с другом асинхронно, низкоуровневая анимацонная подсистема может обработать некоторое количество кадров, до того как высокоуровневая анимационная подсистема сможет прервать низкоуровневую анимационную подсистему. Как результат, низкоуровневая система работает дольше.
Но об этом заботится сообщение 432 «Синхронизироваться со сдвигом аудиовизуальных данных», которое доставляет информацию в высокоуровневую анимационную подсистему 122 о том, что тактовому генератору, связанному с анимацией, необходим «сдвиг» или «синхронизироваться» с низкоуровневым тактовым генератором 224, чтобы снова сделать подсистемы синхронизированными.
Фиг.4с изображает таблицу 440, которая описывает сообщения, отправляемые из высокоуровневых анимационных объектов 210 в низкоуровневые анимационные объекты 220. Таблица 440 включает в себя сообщение 442 «Создать анимацию», которое дает команду низкоуровневой анимационной подсистеме 148 создать новый анимационный объект. «Параметры создания анимации» 444 включают в себя тип выходного значения, который идентифицирует тип свойства, являющегося анимируемым, анимационную функцию и задающий тактовый генератор.
Например, если анимируется преобразованием угла поворота, то выходным типом является «число с плавающей точкой двойной точности». Если анимируется одна из конечных точек линии, то выходным типом является «точка». Если анимируется цвет прямоугольника, то выходным типом является «цвет».
Анимационные функции известны в данной области техники, и здесь может быть обозначена любая такая анимационная функция. Примером простой анимационной функции является «от 5 до 10». Это означает, что в начале интервала анимационная функция выводит значение 5, в конце она выводит 10, а на полпути от начала до конца анимационная функция выводит значение 7,5 и так далее. Более сложной анимационной функцией является «от 5 до 6 до 10». Здесь выходным значением на полпути от начала до конца является 6. Функция может быть сделана более сложной посредством задания не только списка значений, но и списка моментов времени, в которые функция должна выводить такие значения (со всеми промежуточными, являющимися интерполированными).
Отмечается, что анимационные функции, описанные выше, являются только примерными и не имеют намерением ограничивать объем прилагаемой формулы изобретения этими анимационными функциями. Любая компьютерная операция, которая может рассматриваться как «анимационная функция», может быть использована в этом контексте.
В конечном счете, как обсуждено ранее, задающий тактовый генератор для нового анимационного объекта может быть новым тактовым генератором, или он может быть существующим тактовым генератором, который может быть или может не быть задающим для одного или более других анимационных объектов.
Таблица 440 также включает в себя сообщение 446 «Обновить анимацию», которое предоставляет информацию для обновления существующей анимации в низкоуровневой анимационной подсистеме 148. «Параметры обновления анимации» 448 включают в себя целевую анимацию (то есть анимацию, которая должна быть обновлена) и обновляемые свойства (свойства, которые должны быть обновлены, и обновленные значения свойств).
Сообщение 450 «Создать коллекцию анимаций» идентифицирует множества анимаций в низкоуровневых анимационных объектах [базе данных] 220, которые должны быть сгруппированы в виде коллекции. «Параметр создания коллекции анимаций» 452 идентифицирует начальный список анимаций, которые должны быть сгруппированы в виде коллекции.
Коллекции анимаций также хорошо известны в данной области техники. Коллекции анимаций существуют, чтобы предоставить разработчику возможность создавать сложные анимационные поведения, которые не могут быть выражены единственной линейной интерполяцией. Например, одна анимация может повторно перемещать точку вверх и вниз, в то время как вторая анимация может перемещать точку направо. Когда обе анимации запущены вместе, точка производит впечатление движущейся вправо волны. Коллекции анимаций могут быть отредактированы, отсюда наличие в протоколе сообщений, описанных ниже.
Сообщение 454 «Добавить анимацию в коллекцию» указывает низкоуровневой системе добавить анимацию, идентифицированную в «Параметре добавления анимации в коллекцию» 456, в коллекцию анимаций, которая также идентифицирована в «Параметре добавления анимации в коллекцию» 456. Подобным образом, сообщение 458 «Удалить анимацию из коллекции» включено в состав вместе с «Параметром удаления анимации из коллекции» 460, который идентифицирует целевую коллекцию анимаций и анимацию в коллекции, которая должна быть удалена из коллекции.
Таблица 440 также включает в себя сообщение 462 «Создать статическое значение». Статическое значение используется в случае, когда низкоуровневая анимационная подсистема 148 не может поддерживать анимацию, предоставляемую приложением 120. Эта ситуация описана более подробно ниже, относительно фиг.6. Связанным с сообщением 462 «Создать статическое значение» является «Параметр создания статического значения» 464, который идентифицирует тип значения и начальное значение для статического значения, которое создается.
Сообщение 466 «обновить статическое значение» обеспечивает обновление статического значения. «Параметр обновления статического значения» 468 идентифицирует целевой объект статического значения и новое значение для объекта статического значения, индетифицированного таким образом.
Сообщения и параметры, показанные на фиг.4(а-с), обеспечивают изящный эффективный способ, по которому анимации, сформированные низкоуровневой анимационной подсистемой 148, могут асинхронно управляться высокоуровневой анимационной подсистемой. Так как одно или более сообщений не должны отправляться в каждом кадре обновления визуализации, дисплей может формировать кадры при высокой постоянной частоте. Одновременно, высокоуровневая система может использовать время обработки данных, так как становится доступным предоставлять данные в низкоуровневую систему, то есть при более низкой и переменной частоте обновления.
Примерная методологическая реализация:
полностью связанная система
Фиг.5 - блок-схема последовательности операций, изображающая примерную методологическую реализацию процесса анимации в системе визуализации, содержащей полностью связанные высокоуровневую анимационную систему и низкоуровневую анимационную систему.
Сценарий, изображенный на фиг.5. Разработчик приложений желает начертить анимированную прямую линию от фиксированной точки привязки до второй точки, которая перемещается со временем. Разработчику необходимо обеспечить три вещи: (1) операцию визуализации (например, начертить линию между статической точкой А и анимированной точкой В); (2) анимационную функцию (например, точка В проходит от (0,0) до (100, 100)); и (3) тактирование анимации (например, начать в пять секунд и выполнять в течение десяти секунд, затем однократно повторить прохождение обратно).
Фиг.5 показывает реакцию высокоуровневой анимационной подсистемы 122 на приложение 120, содержащее информацию, обсужденную выше. На этапе 500 высокоуровневая анимационная подсистема 122 принимает информацию от приложения 120. Высокоуровневая анимационная подсистема 122 создает объект визуализации на этапе 502, объект визуализации представляет линию. На этапе 504 высокоуровневая анимационная подсистема 122 создает анимационную функцию, которая выводит значение от (0,0) до (100, 100). На этапе 506 высокоуровневая анимационная подсистема 122 создает тактовый генератор, который начинает с пяти секунд, работает десять секунд, а затем отрабатывает обратно.
Низкоуровневая анимационная подсистема 148 может поддерживать эти объекты, поэтому высокоуровневая анимационная подсистема 120 отправляет сообщения в низкоуровневую анимационную подсистему 148 (этап 508), которая формирует трафик канала 204 связи, что изображено на этапах 510-518.
Этап 510: Создать тактовый генератор 1; установить параметры для тактового генератора 1, продолжительность =10.
Этап 512: Добавить интервал для тактового генератора 1; от «настоящего момента +5» до «настоящего момента +15», проходить от t=0 до t=10.
Этап 514: Добавить интервал для тактового генератора 1; от «настоящего момента +15» до «настоящего момента +25», проходить от t=10 назад до t=1.
Этап 516: Создать анимацию 1; установить параметры для анимации 1, от (0,0) до (100,100), тактовый генератор =тактовый генератор 1.
Этап 518: Создать инструкцию [DrawLine] ([Рисовать линию]), обращающуюся к анимации 1.
В этом примере функция DrawLine является типичным представлением любой инструкции рисовывания, поддерживаемой протоколом для визуализации анимаций. Инструкция DrawLine является только примерной.
После того как сообщения были переданы из высокоуровневой анимационной подсистемы 122 в низкоуровневую анимационную подсистему 148, низкоуровневая анимационная подсистема 148 работает независимо от высокоуровневой подсистемы 122 и обновляет положение линии при наивысшей возможной частоте кадров. Никакие дополнительные сообщения не требуется отправлять между двумя подсистемами 122, 148.
Как было показано, протокол связи, введенный в материалах настоящей заявки, оптимизирует канал 204 связи посредством уменьшения объема данных, которые помещаются в канал 204 связи. Если бы короткие сообщения и параметры, обсужденные выше, не были использованы, большое количество операций должно было бы быть отправленным через канал, чтобы синхронизировать системы.
Но, по существу, то, что помещается в канал 204 связи, является списком интервалов для некоторого количества тактовых генераторов. Для тактового генератора определен интервал, скажем, «между моментом времени 0 и моментом времени 10, тактовый генератор отсчитывает от 0 до 10» (это описывает реальный тактовый генератор). Или может требоваться, чтобы тактовый генератор отсчитывал во второй раз замедленно. В этом случае «между моментом времени 0 и моментом временем 10, тактовый генератор отсчитывает от 0 до 5».
Посредством определения списка интервалов тактирования может быть определена любая операция над тактовым генератором. Например, операция приостановки может быть определена интервалом тактового генератора: «в момент времени 0 тактовый генератор - 10, и в момент времени 10 тактовый генератор - 10». Следовательно, каждая операция может быть выражена как линейный интервал.
Примерная методологическая реализация:
частично связанная система
Фиг.6 - блок-схема последовательности операций, изображающая примерную методологическую реализацию процесса анимации в системе визуализации, содержащей частично связанные высокоуровневую анимационную систему и низкоуровневую анимационную систему.
Сценарий для этого примера. Разработчик приложения желает нарисовать анимированную прямую линию от фиксированной точки привязки до второй точки, которая перемещается со временем по специальному пути. Разработчику необходимо обеспечить следующее: (1) операцию визуализации (например, нарисовать линию между статической точкой А и анимированной точкой В); (2) специальную анимационную функцию (например, вызвать специальную анимацию 1, чтобы вычислить положение точки В); и (3) тактирование анимации (например, начать в пять секунд и отсчитывать в течение десяти секунд, затем однократно повторить отсчет обратно).
Высокоуровневая анимационная подсистема 122 принимает информацию приложения на этапе 600. В ответ на запрос приложения высокоуровневая анимационная подсистема 122 создает объект визуализации (этап 602), представляющий линию, анимационную функцию (этап 604), которая сконфигурирована, чтобы осуществлять обратный вызов пользовательского кода 202, и тактовый генератор (этап 606), который начинает отсчет в пять секунд, работает в течение десяти секунд, а затем отсчитывает обратно. Соответствующие сообщения отправляются в низкоуровневую анимационную подсистему 148 на этапе 608.
Так как специальная анимация требует пользовательского кода, она не может обрабатываться низкоуровневой подсистемой, таким образом, формируется следующий начальный трафик по каналу связи.
Этап 610: Создать статическое значение 1 точки.
Этап 612: Создать инструкции [DrawLine], устанавливающие значение 1 точки. (Инструкция DrawLine является только примерной; смотрите выше).
На этапе 614 низкоуровневая анимационная подсистема 148 принимает переданные данные от высокоуровневой анимационной подсистемы 122. Низкоуровневая анимационная подсистема 148 интерпретирует анимацию как статическую линию.
При каждом кадре после начальной передачи данных высокоуровневая анимационная подсистема 122 вызывает пользовательский код 202, чтобы вычислять положение точки В (этап 620), и принимает новое значение положения на этапе 622. Высокоуровневая анимационная подсистема 122 затем отправляет следующее сообщение по каналу 204 связи в низкоуровневую анимационную подсистему, чтобы обновить значение статического значения 1 точки.
Этап 626: Обновить статическое значение точки новым значением для точки В.
Примерная компьютерная среда
Различные компоненты и функциональные возможности, описанные в материалах настоящей заявки, реализованы в вычислительной системе. Фиг.7 показывает компоненты типичного примера такой вычислительной системы, то есть компьютера, указанного номером 700 ссылки. Компоненты, показанные на фиг.7, являются только примерами и не имеют намерением внушать какое бы то ни было ограничение в отношении объема функциональных возможностей изобретения; изобретение не обязательно является зависимым от признаков, показанных на фиг.7.
Вообще, могут быть использованы различные другие конфигурации вычислительной системы общего назначения или специального назначения. Примеры хорошо известных вычислительных систем, сред и/или конфигураций, которые могут быть пригодными для использования с изобретением, включают в себя, но не в качестве ограничения, персональные компьютеры, серверные компьютеры, «карманные» или «портативные» устройства, многопроцессорные системы, основанные на микропроцессорах системы, компьютерные приставки, программируемую бытовую электронную аппаратуру, сетевые ПК (персональные компьютеры, PC), миникомпьютеры, универсальные вычислительные машины, распределенные вычислительные среды, которые включают в себя любые из вышеприведенных систем или устройств, и тому подобное.
Функциональные возможности компьютеров во многих случаях воплощены машинно-исполняемыми инструкциями, такими как программные модули, которые исполняются компьютерами. Как правило, программные модули включают в себя процедуры, программы, объекты, компоненты, структуры данных и так далее, которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. Задачи также могут выполняться удаленными устройствами обработки данных, которые связаны через сеть связи. В распределенной вычислительной среде программные модули могут быть размещены как на локальных, так и на удаленных компьютерных носителях хранения.
Инструкции и/или программные модули сохранены в разное время на различных машиночитаемых носителях, которые либо являются частью компьютера, либо которые могут быть считаны компьютером. Программы типично распределены, например, по гибким дискам, CD-ROM, DVD (цифровому многофункциональному диску) или некоторым разновидностям среды связи, такой как модулированный сигнал. Оттуда они устанавливаются или загружаются во вторичную память компьютера. При исполнении они загружены, по меньшей мере частично, в основную электронную память компьютера. Изобретение, описанное в материалах настоящей заявки, включает в себя эти и другие различные типы машиночитаемых носителей, когда такие носители содержат инструкции программ и/или модули для реализации этапов, описанных ниже, в соединении с микропроцессором или другими процессорами для обработки данных. Изобретение также включает в себя сам компьютер, когда он запрограммирован согласно способам и технологиям, описанным ниже.
В целях иллюстрации программы и другие исполняемые программные компоненты, такие как операционная система, проиллюстрированы в виде дискретных блоков, хотя очевидно, что такие программы и компоненты находятся в различное время в разных запоминающих компонентах компьютера, и исполняются процессором(ами) для обработки данных компьютера.
Со ссылкой на фиг.7 компоненты компьютера 700 могут включать в себя, но не в качестве ограничения, блок 702 обработки данных, системную память 704 и системную шину 706, которая соединяет различные системные компоненты, в том числе системную память, с блоком 702 обработки данных. Системная шина 706 может быть любой из некоторых типов шинных структур, в том числе шиной памяти или контроллером памяти, периферийной шиной и локальной шиной, использующей любую из многообразия шинных архитектур. В качестве примера, а не ограничения, такие архитектуры включают в себя шину архитектуры промышленного стандарта (ISA), шину микроканальной архитектуры (MCA), шину расширенной ISA (EISA), локальную шину ассоциации по стандартизации в области видеотехники (VESA) и шину соединения периферийных компонентов (PCI), также известную как мезонинная (Mezzanine) шина.
Компьютер 700 типично включает в себя многообразие машиночитаемых носителей. Машиночитаемые носители могут быть любыми доступными носителями, к которым может быть осуществлен доступ компьютером 700, и включают в себя как энергозависимые и энергонезависимые, так и съемные и несъемные носители. В качестве примера, а не ограничения, машиночитаемые носители могут содержать компьютерные запоминающие носители и среду связи. «Компьютерные запоминающие носители» включают в себя энергозависимые и энергонезависимые, съемные и несъемные носители, реализованные по любому способу или технологии для хранения информации, такой как машиночитаемые инструкции, структуры данных, программные модули или другие данные. Компьютерные запоминающие носители включают в себя, но не в качестве ограничения, ОЗУ (оперативное запоминающее устройство, RAM), ПЗУ (постоянное запоминающее устройство, ROM), ЭСППЗУ (электрически стираемое и программируемое ПЗУ, EEPROM), флэш-память или другую технологию памяти, CD-ROM, цифровой многофункциональный диск (DVD) или другие оптические дисковые запоминающие устройства, магнитные кассеты, магнитную ленту, магнитные запоминающие диски или другие магнитные запоминающие устройства, либо любой другой носитель, который может быть использован для хранения требуемой информации и к которому может быть осуществлен доступ компьютером 700. Среда связи типично воплощает машиночитаемые инструкции, структуры данных, программные модули или другие данные в модулированном сигнале данных, таком как сигнал несущей или другой транспортный механизм, и включает в себя любую среду доставки информации. Термин «модулированный сигнал данных» означает сигнал, который имеет одну или более его характеристик, установленных или изменяемых таким образом, чтобы кодировать информацию в сигнале. В качестве примера, а не ограничения, среда передачи данных включают в себя проводную среду, такую как проводная сеть или непосредственное проводное соединение, и беспроводную среду, такую как акустическая, РЧ (радиочастотная, RF), инфракрасная и другая беспроводная среда. Сочетания любых из вышеприведенных также должны быть включены в пределы объема машиночитаемых носителей.
Системная память 704 включает в себя компьютерные запоминающие носители в виде энергозависимой и/или энергонезависимой памяти, такой как постоянное запоминающее устройство (ПЗУ) 708 и оперативное запоминающее устройство (ОЗУ) 710. Базовая система 712 ввода/вывода (BIOS), содержащая базовые процедуры, которые помогают передавать информацию между элементами в пределах компьютера 700, к примеру, во время запуска, типично сохранена в ПЗУ 708. ОЗУ 710 типично содержит модули данных и/или программ, которые доступны непосредственно и/или, собственно, являются приводимыми в действие блоком 702 обработки данных. В качестве примера, а не ограничения, фиг.7 иллюстрирует операционную систему 714, прикладные программы 716, другие программные модули 718 и данные 720 программ.
Компьютер 700 также может включать в себя другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные запоминающие носители. Только в качестве примера фиг.7 иллюстрирует накопитель 722 на жестком диске, который осуществляет считывание с и запись на несъемный энергонезависимый магнитный носитель, накопитель 724 на магнитных дисках, который осуществляет чтение с и запись на съемный энергонезависимый магнитный диск 726, и накопитель 728 на оптических дисках, который осуществляет чтение с и запись на съемный энергонезависимый оптический диск 730, такой как CD-ROM или другие оптические носители. Другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные запоминающие носители, которые могут быть использованы в примерной рабочей среде, включают в себя, но не в качестве ограничения, кассеты магнитной ленты, карты флэш-памяти, цифровые многофункциональные диски, цифровую видеоленту, твердотельное ОЗУ, твердотельное ПЗУ и тому подобное. Накопитель 722 на жестком диске типично соединен с системной шиной 706 через интерфейс несъемной памяти, такой как интерфейс 732 носителя данных, а накопитель 724 на магнитных дисках и накопитель 728 на оптических дисках типично соединены с системной шиной 706 посредством интерфейса съемной памяти, такого как интерфейс 734.
Накопители и их ассоциируемые компьютерные запоминающие носители, обсуждавшиеся выше и проиллюстрированные на фиг.7, обеспечивают хранение машиночитаемых инструкций, структур данных, программных модулей и других данных для компьютера 700. На фиг.7, например, накопитель 722 на жестком диске проиллюстрирован в качестве хранящего операционную систему 715, прикладные программы 717, другие программные модули 719 и данные 721 программ. Заметим, что эти компоненты могут быть либо такими же как, либо отличными от операционной системы 714, прикладных программ 716, других программных модулей 718 и данных 720 программ. Операционная система 715, прикладные программы 717, другие программные модули 719 и данные 721 программ здесь снабжены другими номерами, чтобы проиллюстрировать, что они, как минимум, являются другими копиями. Пользователь может вводить команды и информацию в компьютер 700 через устройства ввода, такие как клавиатура 736 и указательное устройство 738, обычно называемое мышью, шаровым манипулятором или сенсорной панелью. Другие устройства ввода (не показаны) могут включать в себя микрофон, джойстик, игровую панель, спутниковую антенну, сканер или тому подобное. Эти и другие устройства ввода часто соединены с блоком 702 обработки данных через интерфейс 740 ввода/вывода (I/O), который соединен с системной шиной, но может быть соединен посредством других интерфейсных и шинных структур, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB). Монитор 742 или другой тип устройства отображения также соединен с системной шиной 706 через интерфейс, такой как видеоадаптер 744. В дополнение к монитору 742 компьютеры также могут включать в себя другие периферийные устройства 746 вывода (например, динамики) и один или более принтеров 748, которые могут быть подключены через I/O-интерфейс 740.
Компьютер может работать в сетевой среде с использованием логических соединений с одним или более удаленными компьютерами, такими как удаленное вычислительное устройство 750. Удаленное вычислительное устройство 750 может быть персональным компьютером, сервером, маршрутизатором, сетевым ПК, одноранговым устройством или другим общим узлом сети и типично включает в себя многие или все из элементов, описанных выше относительно компьютера 700. Логические соединения, изображенные на фиг.7, включают в себя локальную сеть (LAN) 752 и глобальную сеть (WAN) 754. Хотя WAN 754, показанная на фиг.7, является сетью Интернет, WAN 754 также может включать в себя другие сети. Такие сетевые среды являются обычными в офисах, корпоративных компьютерных сетях, сетях интранет и подобных.
Когда используется в сетевой среде LAN, компьютер 700 соединен с LAN 752 через сетевой интерфейс или адаптер 756. Когда используется в сетевой среде WAN, компьютер 700 типично включает в себя модем 758 или другое средство для установления связи через сеть Интернет 754. Модем 758, который может быть внутренним или внешним, может быть соединен с системной шиной 706 через I/O-интерфейс 740 или другой подходящий механизм. В сетевой среде программные модули, изображенные относительно компьютера 700, или их части могут быть сохранены на удаленном вычислительном устройстве 750. В качестве примера, а не ограничения, фиг.7 иллюстрирует удаленные прикладные программы 760 в качестве находящихся на удаленном вычислительном устройстве 750. Будет принято во внимание, что показанные сетевые соединения являются примерными, и может быть использовано другое средство установления линии связи между компьютерами.
Вывод
Протокол связи для систем и способов, в качестве таким образом описанного, предоставляет способ для синхронизации высокоуровневой анимационной системы с низкоуровневой анимационной системой, так что низкоуровневая система может работать при высокой постоянной частоте обновления кадров, тогда как высокоуровневая система может работать при переменной частоте кадров, которая оптимизирована для интерактивности. Превосходная графика может быть достигнута без потери какой бы то ни было возможности интерактивности. Протокол, к тому же, минимизирует объем данных, передаваемых между двумя анимационными системами, таким образом, избавляя от непроизводительных издержек и оптимизируя производительность.
Хотя выше описаны детали конкретных реализаций и вариантов осуществления, такие детали имеют намерением скорее удовлетворять предписанным законом требованиям раскрытия, чем ограничивать объем последующей формулы изобретения. Таким образом, изобретение, как определено формулой изобретения, не ограничивается отдельными признаками, описанными выше. Кроме того, изобретение заявлено в любой из его форм или модификаций, которые попадают в пределы должного объема прилагаемой формулы изобретения, трактуемой надлежащим образом, в соответствии с доктриной эквивалентов.