Предшествующий уровень техники
Во многих компьютерных приложениях, таких как компьютерные игры, мультимедийные приложения, офисные приложения или тому подобное, используются элементы управления, которые позволяют пользователям управлять персонажами игры или другими аспектами приложения. Типично, ввод в отношении таких элементов управления осуществляется, используя, например, контроллеры, пульты дистанционного управления, клавиатуру, мышь или тому подобное. К сожалению, такие элементы управления могут быть трудными для обучения, что, таким образом, формирует барьер между пользователем и такими играми и приложениями. Кроме того, такие элементы управления могут отличаться от фактических действий в ходе игры или других действий приложения, для которых эти элементы управления используются. Например, элемент управления игрой, который обеспечивает взмах персонажем игры бейсбольной битой, может не соответствовать фактическому движению замаха бейсбольной битой.
Сущность изобретения
В некоторых системах монитор может отображать обратную связь от пользователя, которая вводится в соответствие движениям пользователя, снятым системой. Например, обратная связь от пользователя может отображаться как аватар на экране, причем движением аватара можно управлять посредством постановки движения аватара в соответствие движениям пользователя. Часто пользователь может делать движения, которые не являются необходимыми для исполнения приложения. В некоторых случаях движения пользователя, которые не применимы к конкретному приложению, являются избыточными или очень похожи у разных пользователей.
В некоторых сценариях может быть полезным вставлять предварительно подготовленную анимацию для персонажа вместо представления фактического движения пользователя. Например, замах при игре в теннис, броске мяча и движение при подаче мяча могут представлять собой предварительно подготовленную анимацию, тогда как анимация маха вперед может быть поставлена в соответствие движению пользователя. Здесь раскрыты технологии для определения границ и точек перехода для связывания предварительно подготовленной анимации и анимации, которая представляет движение в физическом пространстве, а также технологии для смешивания двух типов анимации. Такие технологии связывания и смешивания анимаций могут быть желательными с целью обеспечения эффективности анимаций.
Связывание анимаций может содержать выбор предварительно подготовленной анимации и перехода между анимациями, такого как от предварительно подготовленной анимации к анимации отснятого движения или от анимации отснятого движения к предварительно подготовленной анимации. Например, анимация жеста пользователя может быть связана вместе последовательно с предварительно подготовленной анимацией. Технологии смешения анимаций могут обеспечить более плавный переход между анимацией жестов. Предысторию жестов, включая положение соединения, скорость и ускорение, можно использовать для определения намерения пользователя, исходных параметров для последующих анимаций и управления игрой, и определения последующих жестов для инициирования.
Данный раздел "Сущность изобретения" предусмотрен для представления подборки концепций в упрощенной форме, которые дополнительно описаны ниже в разделе "Подробное описание изобретения". Данный раздел "Сущность изобретения" не предназначен для идентификации ключевых особенностей или существенных свойств заявленного изобретения и также не предназначен для ограничения объема заявленного изобретения. Кроме того, заявленное изобретение не ограничено вариантами осуществления, которые решают любые или все недостатки, отмеченные в любой части данного раскрытия.
Краткое описание чертежей
Системы, способы и считываемый компьютером носитель для архитектуры системы распознавания жестов в соответствии с описанием дополнительно описаны со ссылкой на приложенные чертежи, на которых:
На фиг.1A и 1B представлен примерный вариант осуществления системы распознавания, анализа и отслеживания цели с пользователем, играющим в игру.
На фиг.2 показан вариант осуществления примерного устройства съемки, которое может использоваться в системе распознавания, анализа и отслеживания цели, и включающего в себя технологии связывания и смешивания анимаций.
На фиг.3 показан вариант осуществления примера вычислительного окружения, в котором могут быть воплощены описанные здесь технологии анимации.
На фиг.4 показан другой вариант осуществления примера вычислительного окружения, в котором могут быть воплощены описанные здесь технологии анимации.
На фиг.5 показана скелетная карта пользователя, сгенерированная по изображению с глубиной.
На фиг.6A-6F представлены примеры кадров, которые представляют снятые движения пользователя в различных точках во времени, используемые для получения изображения пользователя с глубиной в сцене и выявления жеста, выполняемого пользователем.
На фиг.7A и 7B представлена последовательность движений пользователя и примерный вариант осуществления реализации технологии связывания и смешивания анимаций.
На фиг.8 показан пример блок-схемы последовательности операций для использования предварительно подготовленной анимации и смешивания предварительно подготовленной анимации с анимацией снятого движения.
Подробное описание изобретения
Компьютерная система может моделировать и отображать представление пользователя, например, в виде аватара. Например, управляемая камерой компьютерная система может снимать данные изображения пользователя и отображать обратную связь от пользователя, которая поставлена в соответствие жестам пользователя. Обратная связь от пользователя может отображаться как аватар на экране, где движениями аватара можно непосредственно управлять путем постановки движений аватара в соответствие жестам пользователя. Жест может представлять собой любое движение пользователя, такое как бег, движение пальцем или статическую позу. Анимацией снятого движения пользователя или жеста пользователя можно управлять посредством входных команд, поступающих из устройства съемки изображения.
Может быть желательным некоторых ситуациях использовать предварительно подготовленную анимацию для визуального представления снятого движения вместо постановки в соответствие фактически снятому движению. Снятое движение может представлять собой любое движение в физическом пространстве, снятое устройством съемки изображения, таким как камера. Снятое движение может включать в себя движение цели в физическом пространстве, такое как пользователь или объект. Снятое движение может включать в себя жест, который преобразуется в элемент управления в операционной системе или приложении. Движение может быть динамическим, таким как движение во время бега, или движение может быть статическим, например, когда пользователь находится в позе с небольшим количеством движений.
Предварительно подготовленная анимация может представлять собой заранее заданную анимацию персонажа или предварительно записанный жест. Может быть желательным в некоторых сценариях ввести предварительно подготовленную анимацию вместо представления фактической цели или движения пользователя. Например, при выполнении взмаха во время игры в теннис может быть желательным использовать заранее заданное движение для представления жестов подбрасывания мяча и отклонения назад при подаче путем вставки предварительно подготовленной анимации. После подачи может быть желательным вернуться к использованию снятого движения пользователя, например вернуться к отображению движения пользователя при выполнении фактического маха вперед.
Здесь раскрыты технологии для связывания типов анимаций, включая определение границ и точек перехода между анимациями, управляемыми разными устройствами (например, предварительно подготовленная анимация и анимация, полученная на основе входных команд камеры). Типы анимации могут быть связаны через любой соответствующий способ. Способ связывания может зависеть от уровня сглаживания, который требуется между связанными анимациями. Например, компьютерная система может вставлять такое количество предварительно подготовленных анимаций в связанную последовательность анимаций, которая необходима для того, чтобы сделать переход между анимацией снятого движения пользователя и предварительной подготовленной анимацией в виде достаточно плавного перехода. В другом примере компьютерная система может анализировать параметры снятого движения пользователя в точке перехода и модифицировать предварительно подготовленную анимацию, с тем, чтобы более близко представлять снятое движение пользователя в этой точке. Анимации могут быть достаточно похожими в точке перехода, таким образом, что анимации могут быть связаны вместе просто путем последовательного отображения анимаций. В другом примере технологии смешивания анимаций можно использовать для обеспечения очень плавного перехода между различными типами анимации.
Используемые здесь и в формуле изобретения ссылки на смешивание или связывание между анимацией живого движения и предварительно подготовленной анимацией включают в себя как связывание или смешение при переходе от анимации снятого жеста к предварительно подготовленной анимации, так и, наоборот, связывание или смешивание при переходе от предварительно подготовленной анимации к анимации снятого жеста. Кроме того, любая комбинация технологии связывания может использоваться по отдельности или в комбинации. Например, вычислительная система может модифицировать предварительно подготовленную анимацию перед связыванием, и технологии смешивания анимаций можно также использовать для сглаживания перехода между анимацией снятого движения и модифицированной предварительно подготовленной анимацией.
Система, способы и компоненты для связывания, описанные здесь, могут быть воплощены в виде мультимедийной консоли, такой как игровая консоль, или в любом другом вычислительном устройстве, в котором требуется смешивать входные команды пользователя с предварительно подготовленными данными, включающими в себя, в качестве примера и без какого-либо преднамеренного ограничения, спутниковые приемники, телевизионные приставки, приставки для аркадных игр, персональные компьютеры (PC, ПК), портативные телефоны, карманные персональные компьютеры (PDA, КПК) и другие портативные устройства.
На фиг.1A и 1B иллюстрируется примерный вариант осуществления конфигурации управляемой камерой системы 10 распознавания, анализа и отслеживания цели, которая может использовать технологии связывания и смешивания анимаций. В системе показан пользователь 18, играющий в боулинг. В примерном варианте осуществления система 10 может распознавать, анализировать и/или отслеживать цель - человека, такого как пользователь 18. Система 10 распознавания, анализа и отслеживания цели может собирать информацию, относящуюся к движениям пользователя в физическом пространстве. Система 10 может сохранять информацию, относящуюся к предварительно подготовленным анимациям. В определенных точках движений пользователя 18 во время игры в боулинг, вместо отслеживания, анализа и отображения для представления анимации, которая представляет фактические движения или жесты пользователя 18, может быть желательным вставлять предварительно подготовленные анимации в определенных участках движения во время игры в боулинг.
Как показано на фиг.1A, система 10 распознавания, анализа и отслеживания цели может включать в себя вычислительное окружение 12. Вычислительное окружение 12 может представлять собой компьютер, игровую систему или консоль или тому подобное. В соответствии с примерным вариантом осуществления, вычислительное окружение 12 может включать в себя аппаратные компоненты и/или программные компоненты, такие что вычислительное окружение 12 может использоваться для исполнения таких приложений, как игровые приложения, неигровые приложения или тому подобное.
Как показано на фиг.1A, система 10 распознавания, анализа и отслеживания цели дополнительно включает в себя устройство 20 съемки. Устройство 20 съемки может представлять собой, например, камеру, которая может использоваться для визуального отслеживания одного или больше пользователей, таких как пользователь 18, таким образом, что жесты, выполняемые одним или больше пользователями, могут быть захвачены, проанализированы и могут отслеживаться для выполнения одного или больше управлений или действий в пределах приложения, как будет более подробно описано ниже.
В соответствии с одним вариантом осуществления, система 10 распознавания, анализа и отслеживания цели может быть соединена с аудиовизуальным устройством 16, таким как телевизор, монитор, телевизор высокой четкости (HDTV) или тому подобное, которые могут обеспечивать визуальное представление игры или приложения и/или звука для пользователя, такого как пользователь 18. Например, вычислительное окружение 12 может включать в себя видеоадаптер, такой как видеокарта, и/или аудиоадаптер, такой как звуковая карта, которые могут обеспечивать аудиовизуальный сигнал, ассоциированный с игровым приложением, неигровым приложением, или тому подобное. Аудиовизуальное устройство 16 может принимать аудиовизуальные сигналы из вычислительного окружения 12 и может затем выводить визуальное представление игры или приложение и/или звук, ассоциированный с аудиовизуальными сигналами для пользователя 18. В соответствии с одним вариантом осуществления, аудиовизуальное устройство 16 может быть соединено с вычислительным окружением 12, например, через кабель S-Video, коаксиальный кабель, кабель HDMI, кабель DVI, VGA или тому подобное.
Как показано на фиг.1A и 1B, система 10 распознавания, анализа и отслеживания цели может использоваться для распознавания, анализа и/или отслеживания цели - человека, такого как пользователь 18. Например, пользователя 18 можно отслеживать, используя устройство 20 съемки, таким образом, что движения пользователя 18 могут быть интерпретированы как элементы управления, которые можно использовать для обеспечения исполнения приложения в вычислительном окружении 12. Таким образом, в соответствии с одним вариантом осуществления, пользователь 18 может двигать своим телом для управления приложением.
Система 10 может преобразовывать входные сигналы, поступающие в устройство 20 съемки, в анимацию, при этом входные сигналы представляют движения пользователя, так что управление анимацией будет осуществляться этими входными сигналами. Таким образом, движения пользователя могут ставиться в соответствие аватару так, что движения пользователя в физическом пространстве будут выполняться аватаром. Движения пользователя могут представлять собой жесты, применимые для управления в приложении. Например, на каждой из фиг.1A и 1B представлен примерный вариант осуществления приложения, исполняемого в вычислительном окружении 12, которое может представлять собой игру в боулинг, в которую может играть пользователь 18. Вычислительное окружение 12 может использовать аудиовизуальное устройство 16 для обеспечения визуального представления площадки для боулинга и дорожки для боулинга для пользователя 18. Вычислительное окружение 12 также может использовать аудиовизуальное устройство 16 для обеспечения визуального представления аватара 22 игрока, которым пользователь 18 может управлять своими движениями. В соответствии с примерным вариантом осуществления, вычислительное окружение 12 и устройство 20 съемки из состава системы 10 распознавания, анализа и отслеживания цели могут использоваться для распознавания и анализа жестов, выполняемых пользователем 18 в трехмерном физическом пространстве пользователя таким образом, что жесты пользователя могут быть интерпретированы для управления аватаром 24 игрока в пространстве игры. Например, как показано на фиг.1B, пользователь 18 может выполнять движение для игры в боулинг в физическом пространстве для обеспечения выполнения аватаром 24 игрока движений при игре в боулинг в игровом пространстве. Другие движения, выполняемые пользователем 18, также могут быть интерпретированы как элементы управления или действия, такие как элементы управления для ходьбы, выбора мяча, положения аватара на дорожке для боулинга, замаха мячом и т.д.
Система 10 может вставлять предварительно подготовленные анимации вместо использования анимации фактического движения или снятого жеста пользователя 18. Например, некоторые сегменты управления игрой могут быть представлены предварительно подготовленной анимацией. В описанном выше примере игры в боулинг, например, съемка мяча для боулинга или движение в направлении дорожки могут представлять собой участки смешанного движения, которые представлены предварительно подготовленными анимациями.
Жесты или движение пользователя могут быть интерпретированы как элементы управления, которые могут соответствовать действиям, отличающимся от управления аватаром 24 игрока. Например, игрок может использовать движения для окончания, паузы или сохранения игры, выбора уровня, просмотра результатов игры, для общения с друзьями и т.д. Жесты пользователя могут представлять собой элементы управления, применимые в операционной системе, в неигровых аспектах игры или в неигровых приложениях. Например, жесты пользователя могут быть интерпретированы как манипуляции с объектом, такие как управление интерфейсом пользователя. Например, рассмотрим интерфейс пользователя, имеющий интерфейс с закладками или ярлычками, выровненный вертикально слева направо, где выбор каждой закладки или ярлычка раскрывает варианты выбора (опции) для различных элементов управления в пределах приложения или системы. Система может идентифицировать жест руки пользователя как движение в направлении закладки, где рука пользователя в физическом пространстве виртуально выровнена с закладкой в пространстве приложения. Жест, включающий в себя паузу, движение захвата и затем взмах руки влево, может быть интерпретирован как выбор закладки, с последующим перемещением его в сторону, с тем чтобы открыть следующую закладку.
Может быть желательным вставлять предварительно подготовленную анимацию для представления других элементов управления, таких как движение пользователя для выбора закладки/ярлычка. В приведенном выше примере интерфейса пользователя, например, система может интерпретировать жест пользователя как выбор или перемещение закладки или ярлычка и вставки предварительно подготовленной анимации с целью отображения вместо постановки снятого жеста пользователя в соответствие анимации. Например, для перехода между закладками может быть желательным вставлять предварительно подготовленную анимацию с установленной по сценарию скоростью перехода для движения закладки вместо перемещения этой закладки со скоростью, которая ставится в соответствие фактическому движению руки пользователя. Таким образом, система может выполнять захват и интерпретацию жеста пользователя как выбор и движение закладки, но выполняет переход к предварительно подготовленному движению, как только скорость перемещения руки пользователя, обозначающая желание переключиться между закладками, будет детектирована.
Смешивание анимаций между предварительно подготовленной анимацией и анимацией, которая представляет живое движение, может обеспечить более эффективную анимацию. Таким образом, система может переключаться между постановкой фактического движения или снятого жеста пользователя в соответствие анимации вместо отображения и реализации предварительно подготовленной анимации.
Некоторые движения игрока могут быть интерпретированы и идентифицированы как имеющие параметры, которые обозначают точку перехода. Точка перехода может представлять собой точку, в которой система 10 переходит между анимацией снятого движения или жеста пользователя или предварительно подготовленной анимацией. В примерном варианте осуществления точка перехода может представлять собой точку идентификации в снятом жесте пользователя, которая подсказывает системе, что необходимо выполнить переход к предварительно подготовленной анимации. В другом примерном варианте осуществления точка перехода представляет собой точку идентификации в предварительно подготовленной анимации, которая инициирует возврат системы к использованию снятых жестов пользователя.
Таким образом, идентификация точки перехода может инициировать переход системы между представлением движения пользователя и представлением предварительно подготовленной анимации. Например, игрок 18 может выполнить движение захвата, которое система 10 может интерпретировать как элемент управления для выбора шара для боулинга. Интерпретация движения захвата может инициировать переход системы от отображения жестов захвата пользователя в точке выбора шара до отображения предварительно подготовленной анимации для движения, которое следует после выбора шара, например переход к дорожке для боулинга.
Может использоваться любой соответствующий способ установки точек перехода. Само приложение может устанавливать точки перехода на основе типа приложения или уровня подготовки или опыта пользователя. Например, большее количество предварительно подготовленных анимаций может быть воплощено для начинающего игрока в игре таким образом, что более трудные жесты для достижения успеха являются предварительно подготовленными. Пользователь может установить точки перехода таким образом, чтобы предварительно подготовленные анимации использовались для определенных движений, или пользователь может запрашивать большее или меньшее использование предварительно подготовленных анимаций во время выполнения приложения.
В примерном варианте осуществления, показанном на фиг.1B, объект представляет собой шар для игры в боулинг, и пользователь перемещается в трехмерном физическом пространстве, как если бы он фактически обращался с шаром для боулинга. Жесты пользователя в физическом пространстве могут управлять шаром для боулинга, отображаемым на экране 14. В примерных вариантах осуществления цель - человек, такой как пользователь 18, может фактически удерживать объект. В таких вариантах осуществления пользователь электронной игры может удерживать объект таким образом, чтобы движения игрока и объекта можно было использовать для регулирования и/или управления параметрами игры. Например, движение игрока, удерживающего ракетку, могут отслеживаться и использоваться для управления ракеткой, представленной на экране в электронной спортивной игре. В другом примерном варианте осуществления движения игрока, удерживающего объект, можно отслеживать и использовать для управления оружием, представленным на экране в электронной боевой игре.
В соответствии с другими примерными вариантами осуществления, система 10 распознавания, анализа и отслеживания цели может интерпретировать движения цели для управления аспектами операционной системы и/или приложения, которые находятся за пределами области игр. Например, любым виртуально управляемым аспектом операционной системы и/или приложения можно управлять с помощью движений цели, такой как пользователь 18.
На фиг.2 иллюстрируется примерный вариант осуществления устройства 20 съемки, которое может использоваться для распознавания, анализа и отслеживания цели, в случае когда цель может представлять собой пользователя или объект. В соответствии с примерным вариантом осуществления, устройство 20 съемки может быть выполнено с возможностью захвата видеоизображения с информацией с глубиной, включающей в себя изображение с глубиной, которое может включать в себя значения с глубиной, используя любую соответствующую технологию, включая, например, время пролета, структурированный свет, стереоизображение или тому подобное. В соответствии с одним вариантом осуществления, устройство 20 съемки может организовать расчетную информацию с глубиной на "уровнях Z" или в уровнях, которые могут быть перпендикулярны оси Z, продолжающейся от камеры с глубиной вдоль ее линии обзора.
Как показано на фиг.2, устройство 20 съемки может включать в себя компонент 22 камеры изображения. В соответствии с примерным вариантом осуществления, компонент 22 камеры изображения может представлять собой камеру с глубиной, которая может снимать изображение с глубиной сцены. Изображение с глубиной может включать в себя двумерную (2D) область пикселей снимаемой камерой сцены, где каждый пиксель в 2D области пикселя может представлять значение с глубиной, такое как длина или расстояние, например, в сантиметрах, миллиметрах или тому подобное объекта в снимаемой сцене.
Как показано на фиг.2, в соответствии с примерным вариантом осуществления, компонент 22 камеры изображения может включать в себя компонент 24 инфракрасного света, трехмерную (3D) камеру 26 и камеру 28 RGB, которые могут использоваться для съемки изображения с глубиной сцены. Например, при анализе времени пролета, компонент 24 инфракрасного света из состава устройства 20 съемки может излучать инфракрасный свет на сцену и может затем использовать датчики (не показаны) для детектирования обратно рассеянного света от поверхности одной или больше целей и объектов в сцене, используя, например, 3D камеру 26 и/или RGB камеру 28. В некоторых вариантах осуществления пульсирующий инфракрасный свет можно использовать таким образом, что время между исходящим импульсом света и соответствующим входящим импульсом света может быть измерено и может использоваться для определения физического расстояния от устройства 20 съемки до определенного местоположения на целях или объектах в сцене. Кроме того, в других примерных вариантах осуществления фазу исходящего света можно сравнивать с фазой входящей волны света для определения сдвига фазы. Сдвиг фазы можно затем использовать для определения физического расстояния от устройства съемки до определенного местоположения на целях или объектах.
В соответствии с другим примерным вариантом осуществления, анализ по времени пролета можно использовать для опосредованного определения физического расстояния от устройства 20 съемки до определенного местоположения на целях или объектах путем анализа интенсивности отраженного луча света с течением времени, используя различные технологии, включая, например, формирование изображений с использованием стробированных импульсов света.
В другом примерном варианте осуществления устройство 20 съемки может использовать структурированный свет для захвата информации с глубиной. При таком анализе структурированный свет (то есть свет, отображаемый как известная структура, такая как структура сетки или структура полоски), может быть спроецирован на сцену через, например, компонент 24 инфракрасного света. После падения на поверхность одной или больше целей или объектов на сцене структура может стать деформированной в отклике. Такая деформация структуры может быть захвачена, например, 3D камерой 26 и/или RGB камерой 28 и может быть затем проанализирована для определения физического расстояния от устройства съемки до конкретного местоположения на целях или объектах.
В соответствии с другим вариантом осуществления, устройство 20 съемки может включать в себя две или больше физически разделенных камер, которые могут просматривать сцену под разными углами, получать визуальные стереоскопические данные, по которым может быть сгенерирована информация с глубиной.
Устройство 20 съемки может дополнительно включать в себя микрофон 30 или массив микрофонов. Микрофон 30 может включать в себя преобразователь или датчик, который может принимать и преобразовывать звук в электрический сигнал. В соответствии с одним вариантом осуществления, микрофон 30 может использоваться для уменьшения обратной связи между устройством 20 съемки и вычислительным окружением 12 в системе 10 распознавания, анализа и отслеживания цели. Кроме того, микрофон 30 может использоваться для приема аудиосигналов, которые также могут быть предоставлены пользователем для управления приложениями, такими как игровые приложения, неигровые приложения или тому подобное, которое может выполняться вычислительным окружением 12.
В примерном варианте осуществления устройство 20 съемки может дополнительно включать в себя процессор 32, который может быть функционально связан с компонентом 22 камеры изображения. Процессор 32 может включать в себя стандартизированный процессор, специализированный процессор, микропроцессор или тому подобное, который может выполнять инструкции, которые могут включать в себя инструкции для приема изображения с глубиной, определения того, может ли быть подходящая цель включена в изображение с глубиной, преобразования подходящей цели в скелетное представление или модель цели или любую другую соответствующую инструкцию.
Устройство 20 съемки может дополнительно включать в себя компонент 34 запоминающего устройства, который может сохранять инструкции, которые могут быть выполнены с помощью процессора 32, изображения или кадры изображений, захваченные 3D камерой или камерой RGB, или любую соответствующую информацию, изображения или тому подобное. В соответствии с примерным вариантом осуществления, компонент 34 запоминающего устройства может включать в себя оперативное запоминающее устройство (RAM), постоянное запоминающее устройство (ROM), кэш, запоминающее устройство типа флэш, жесткий диск или любой другой соответствующий компонент накопителя. Как показано на фиг.2, в одном варианте осуществления, компонент 34 запоминающего устройства может представлять собой отдельный компонент при выполнении обмена данными с компонентом 22 захвата изображения и процессором 32. В соответствии с другим вариантом осуществления, компонент 34 запоминающего устройства может быть интегрирован в процессор 32 и/или в компонент 22 захвата изображения.
Как показано на фиг.2, устройство 20 съемки может находиться в состоянии обмена данными с вычислительным окружением 12 через линию 36 связи. Линия 36 связи может представлять собой проводное соединение, включающее в себя, например, соединение USB (универсальная последовательная шина), соединение FireWire, кабельное соединение Ethernet или тому подобное, и/или беспроводное соединение, такое как беспроводное соединение 802.1 lb, g, a или n. В соответствии с одним вариантом осуществления, вычислительное окружение 12 может предоставлять тактовый сигнал в устройство 20 съемки, который может использоваться для определения того, когда следует выполнить захват, например, сцены, через линию 35 связи.
Дополнительно, устройство 20 съемки может предоставлять информацию с глубиной и изображения, снятые, например, с помощью 3D камеры 26 и/или RGB камеры 28, и скелетную модель, которая может быть сгенерирована с помощью устройства 20 съемки, для вычислительного окружения 12 через линию 36 связи. Вычислительное окружение 12 может затем использовать скелетную модель, информацию с глубиной и захваченные изображения, для того, чтобы, например, управлять приложением, таким как игра или текстовый редактор. Например, как показано, на фиг.2, вычислительное окружение 12 может включать в себя библиотеку 190 жестов.
Библиотека 190 жестов может включать в себя подборку фильтров 191 жестов. Каждый фильтр 191 может включать в себя информацию, определяющую жест, вместе с параметрами или метаданными для этого жеста. Например, бросок, который содержит движение одной из рук из-за задней части тела с проходом в переднюю часть тела, может быть воплощен как фильтр жестов, содержащий информацию, представляющую движение одной из рук пользователя из положения позади тела мимо тела в переднюю его часть, поскольку это движение может быть захвачено камерой с глубиной. Затем могут быть установлены параметры для этого жеста. В случае, когда жест представляет собой бросок, параметр может представлять собой пороговое значение скорости, которого должна достичь рука, расстояние, на которое рука должна переместиться (либо выраженная в абсолютных значениях, либо относительно размера пользователя в целом), и оценку степени уверенности, выполненную подсистемой распознавания, в том, что такой жест произошел. Эти параметры для жеста могут изменяться от приложения к приложению с учетом контекстов отдельного приложения или в пределах одного контекста одного приложения с течением времени.
Данные, снятые камерами 26, 28 и устройством 20 в форме скелетной модели, и движения, связанные с нею, можно сравнивать с фильтрами 191 жестов в библиотеке 190 жестов для идентификации того, когда пользователь (представленный в виде скелетной модели) выполнил один или больше жестов. Таким образом, входные сигналы в фильтр, такой как фильтр 191, могут содержать такие данные, как объединенные данные о положении пользователя, совпавшие углы, формируемые костями, которые соединяются в местах соединения, данные цветов RGB из сцены, и скорости изменения аспекта пользователя. Как отмечено выше, параметры могут быть установлены для этого жеста. Выходы фильтра 191 могут содержать такие данные, как степень уверенности в том, что данный жест выполнен, скорость, при которой жест был выполнен, и время, в которое возник жест.
Вычислительное окружение 12 может включать в себя процессор 196, который может обрабатывать изображение с глубиной для определения того, какие цели находятся в сцене, такие как пользователь 18 или объект в помещении. Это может быть выполнено, например, путем группирования пикселей изображения с глубиной, для которых совместно используется аналогичное значение расстояния. Изображение также можно разбирать путем получения скелетного представления пользователя, в случае когда идентифицированы характерные элементы, такие как суставы и ткани, которые протягиваются между суставами. При этом существуют технологии скелетной карты для захвата человека с помощью камеры с глубиной и определяющие на этой основе различные точки на скелете этого пользователя, суставы рук, запястья, локти, колени, нос, лодыжки, плечи и место, где таз соединятся со спиной. Другие технологии включают в себя преобразование изображения в представление модели тела человека и преобразование изображения в представление сетчатой модели человека.
В варианте осуществления обработку выполняют в самом устройстве 20 съемки, и необработанные данные, представляющие значения с глубиной и цвета (в случае, когда устройство съемки содержит 3D камеру), передаются в вычислительное окружение 12 через линию 36 связи. В другом варианте осуществления обработка выполняется с помощью процессора 32, соединенного с камерой 402, и затем данные выявленного изображения передаются в вычислительное окружение 12. В еще одном, другом варианте осуществления как необработанные данные изображения, так и данные выявленного изображения передаются в вычислительное окружение 12. Вычислительное окружение 12 может принимать данные выявленного изображения, но оно все еще может принимать необработанные данные для выполнения текущей обработки или приложения. Например, если изображение сцены передается через компьютерную сеть другому пользователю, вычислительное окружение 12 может передавать необработанные данные для их обработки другим вычислительным окружением.
Вычислительное окружение 12 может использовать библиотеку 190 жестов для интерпретации движений скелетной модели и для управления приложением на основе движений. Вычислительное окружение 12 может моделировать и отображать представление пользователя, такое как в форме аватара или указателя на дисплее, такое как в устройстве 193 дисплея. Устройство 193 дисплея может включать в себя компьютерный монитор, телевизионный экран или любое подходящее устройство дисплея. Например, компьютерная система, управляемая камерой, может захватывать данные изображения пользователя и отображать обратную связь от пользователя на телевизионном экране, которая ставится в соответствие жестам пользователя. Обратная связь от пользователя может отображаться как аватар на экране, такой как показан на фиг.1A и 1B. Движениями аватара можно управлять непосредственно путем постановки движений аватара в соответствие движениям пользователя. Жесты пользователя могут управлять определенными аспектами приложения.
Может быть желательным использовать предварительно подготовленную анимацию вместо отображения представления движений пользователя. Жест пользователя не всегда может быть применимым для приложения. Например, во время доступа к приложению через вычислительное окружение пользователь может протянуть руку за напитком. В приложении виртуального мира обычные движения пользователя, такие как протягивание руки за напитком или смещение положение сидя на стуле, могут быть желательными для постановки их в соответствие отображаемому движению. В других приложениях, таких как ввод информации в электронную таблицу, может быть нежелательно отображать определенные отснятые движения пользователя, такие как протягивание руки за напитком. В некоторых случаях движения пользователя, которые применимы для определенного приложения, являются избыточными или очень похожими для разных пользователей. Например, замах назад при выполнении движения во время игры в боулинг может быть распространенным, и при этом может не быть необходимости захватывать и моделировать снятое движение замаха назад пользователя. В других случаях определенные движения пользователя являются более трудными для захвата, или неопытные пользователи могут сталкиваться с трудностями при правильном выполнении движения. Например, правильное движение обратного замаха может представлять собой трудное движение для маленького ребенка, и использование предварительно подготовленного движения для этой части движения во время игры в боулинг может быть желательным. Движение пользователя, даже когда оно не отображается непосредственно на анимацию, все еще может быть интерпретировано для управления приложением. В качестве альтернативы, предварительно подготовленная анимация может обеспечить управление в течение всего или части периода, во время которого она отображается.
Библиотека 190 жестов может включать в себя библиотеку 192 предварительно подготовленных анимаций, содержащую данные анимации, которые являются заранее определенными или предварительно записанными. Вычислительное окружение может воплощать предварительно подготовленные данные для представления определенных движений, таких как определенный жест из библиотеки 192 предварительно подготовленных анимаций. Предварительно подготовленная анимация может использоваться для представления движения пользователя вместо отображения визуального представления, которое непосредственно ставится в соответствие снятому движению пользователя. Библиотека 192 предварительно подготовленных анимаций может содержать множество предварительно подготовленных анимаций. Анимации могут быть применимы в определенных приложениях, для определенного жеста, для определенного движения, уровня подготовки или тому подобное.
Предварительно подготовленная анимация может быть связана в точке перехода с анимацией снятого движения, или анимация снятого движения может быть связана в точке перехода с предварительно подготовленной анимацией. В обоих сценариях выбор предварительно подготовленной анимации, предназначенной для связывания с анимацией снятого движения, может зависеть от различных факторов, таких как параметры пользователя, тип приложения, параметры предварительно подготовленной анимации, уровень подготовки пользователя, уровень трудности при выполнении жеста, избыточность жестов и т.д.
Множество предварительно подготовленных анимаций может представлять одно и то же требуемое движение, и вычислительное окружение может выбирать предварительно подготовленную анимацию из множества тех, которые являются наиболее подходящими. Например, множество опций предварительно подготовленных анимаций могут быть доступны для представления замаха назад во время подачи при игре в теннис. Параметры положения и скорости движения замаха назад могут изменяться для каждой из множества предварительно подготовленных анимаций, которые представляют замах назад. Ниже будут описаны несколько примеров множества опций предварительно подготовленных анимации на основе разных факторов.
В примерном варианте осуществления выбор определенной предварительно подготовленной анимации для связывания с анимацией снятого движения может зависеть от сравнения параметров, таких как параметры предварительно подготовленной анимации, с параметрами анимации снятого движения в точке перехода. Например, может использоваться пять опций предварительно подготовленной анимации, которые представляют движение замаха назад. Вплоть до точки перехода и в точке перехода устройство съемки может принимать данные изображения, представляющие движения пользователя. Данные изображения могут быть проанализированы для идентификации положения пользователя до и в точке перехода, и в этом примере система идентифицирует очень медленную скорость руки пользователя при выполнении пользователем движения во время игры в теннис. Выбор предварительно подготовленной анимации для движения во время замаха назад, из пяти опций предварительно подготовленных анимаций, может быть основан на анимации с параметрами положения и скорости, которые ближе всего подходят к движению пользователя. Аналогично, при возврате от предварительно подготовленной анимации к анимации снятого движения данные изображения, снятые устройством съемки, могут быть проанализированы для идентификации движения в физическом пространстве.
Параметры предварительно подготовленной анимации могут быть модифицированы с тем, чтобы они тесно соотносились с движением, захваченным устройством съемки. Анализ данных изображения может подсказать переход к другой предварительно подготовленной анимации для модификации анимации существующей предварительно подготовленной анимацией или для смещения множества предварительно подготовленных анимаций. Например, одна из множества предварительно подготовленных анимаций может быть выбрана для связывания с анимацией отснятого движения. Параметры могут быть модифицированы с тем, чтобы они более тесно соответствовали физическим свойствам пользователя или движениям, которые пользователь стремиться выполнить.
В другом примерном варианте осуществления выбор предварительно подготовленной анимации может фактически представлять собой выбор двух или больше предварительно подготовленных анимаций, скомбинированных определенным способом. Например, две или больше предварительно подготовленные анимации могут иметь параметры, которые требуются для связывания с анимацией снятого движения. Параметры из множества предварительно подготовленных анимаций могут быть скомбинированы для генерирования новой, более соответствующей предварительно подготовленной анимации для связывания с анимацией снятого движения. В примерном варианте осуществления вычислительное окружение может использовать компонент 195 смешения анимаций для генерирования новой предварительно подготовленной анимации, где на вход подается множество предварительно подготовленных анимаций. Новая предварительно подготовленная анимация может обеспечивать лучшее представление снятого движения пользователя в точке перехода и, поэтому, обеспечивать более плавный переход между анимациями во время их связывания вместе. Таким образом, в приведенном выше примере игры в теннис две или больше предварительно подготовленные анимации, которые представляют замах назад во время подачи при игре в теннис, могут быть скомбинированы определенным образом, например смешаны для получения новой, предварительно подготовленной анимации, которая подогнана к положению и скорости пользователя.
В другом примерном варианте осуществления выбор конкретной предварительно подготовленной анимации для связывания с анимацией снятого движения может быть основан на параметрах пользователя. Например, устройство съемки может принимать данные изображения пользователя, играющего в игру. Данные изображения могут быть разобраны для определения различных параметров пользователя и движений пользователя. Данные изображения могут обозначать рост пользователя, а также движение суставов пользователя при выполнении конкретного движения. Положения суставов пользователя при выполнении движения и движения суставов и конечностей пользователя, снятые в точке перехода, могут быть идентифицированы. Может быть выбрана предварительно подготовленная анимация, которая соответствует анимации, которая представляет аналогичный рост пользователя и движется аналогично движениям пользователя, снятым устройством съемки.
В другом примерном варианте осуществления выбор определенной предварительно подготовленной анимации для связывания с анимацией снятого движения может быть основан на уровне подготовки пользователя. Например, если неопытный пользователь играет в теннис, может быть желательным, чтобы движение анимированного замаха рукой при выполнении обратного замаха во время подачи было бы представлено намного медленнее и основательно. Таким образом, выбор основных предварительно подготовленных анимаций, приспособленных для неопытного пользователя, может быть соответствующим. С другой стороны, более опытный пользователь может закручивать мяч, обладать лучшим управлением ракеткой или целью, или может выполнять более быстрый замах назад. Больше опций для редварительно подготовленных анимаций может быть предложено на основе более продвинутого уровня подготовки таким образом, чтобы закручивание мяча или цель можно было учитывать при движении обратного замаха.
В то время как выше были представлены конкретные примеры выбора из множества предварительно подготовленных анимаций, предусматривается, что выбор может быть основан на любой комбинации параметров. Например, выбор из множества предварительно подготовленных анимаций может быть основан как на уровне подготовки пользователя, так и на значении роста пользователя, снятого устройством съемки. Выбор предварительно подготовленной анимации может изменяться в процессе исполнения, при выполнении перехода от существующей предварительно подготовленной анимации к новой анимации, основанной на множестве смешанных предварительно подготовленных анимаций, модифицированной предварительно подготовленной анимации или тому подобное.
Предварительно подготовленная анимация также может быть модифицирована перед связыванием с анимацией отснятого движения. В некоторых случаях предварительно подготовленная анимация может быть модифицирована до такой точки, что требуется незначительное сглаживание или сглаживание не требуется вообще для связывания предварительно подготовленной анимации и анимации снятого движения. Например, параметры снятого движения пользователя могут быть проанализированы, и предварительно подготовленная анимация может быть выбрана для связывания. Перед связыванием предварительно подготовленная анимация может быть модифицирована, с тем чтобы более близко представлять снятое движение пользователя в точке перехода. Например, положение руки в анимации может быть модифицировано так, чтобы она более близко представляла положения руки в снятом движении пользователя.
Модифицируя определенные параметры предварительно подготовленной анимации таким образом, можно иногда устранить использование каких-либо технологий сглаживания для перехода без стыков между типами анимации. Такие параметры могут быть модифицированы во время выполнения, при подгонке параметров предварительно подготовленной анимации к движению пользователя во время работы, когда выполняют съемку движения. В качестве альтернативы, параметры могут быть модифицированы на основе данных предыстории пользователя. Например, если предварительно подготовленная анимация будет вставлена в качестве движения обратного замаха пользователя во время выполнения подачи при игре в теннис, данные предыстории положения пользователя могут обозначать типичное положение локтя пользователя в точке перехода между предварительно подготовленной анимацией и анимацией снятого движения пользователя. Поскольку пользователь часто выполняет стандартные или общие движения аналогичным образом каждый раз таким способом, который является особенным для этого пользователя, параметры предварительно подготовленных анимаций могут быть модифицированы на основе данных предыстории для этого пользователя. Аналогично, пользователь может медленно улучшать жесты для управления приложением, и данные предыстории могут отслеживать эти изменения в снятом движении пользователя и модифицировать соответствующим образом параметры предварительно подготовленной анимации.
Вычислительное окружение 12 может включать в себя компонент 194 точки перехода и компонент 200 смешения анимаций. Компонент 198 точки перехода может определять, когда целесообразно использовать предварительно подготовленную анимацию и когда целесообразно обеспечить анимацию, которая соответствует снятому движению пользователя. В зависимости от различных факторов, таких как тип приложения, уровень подготовки пользователя, уровень трудности при выполнении жеста, избыточность жестов и т.д., модуль 198 точки перехода может идентифицировать или устанавливать точки перехода, где представленное движение может выполнять переход между анимацией, которая соответствует движению пользователя, и предварительно подготовленной анимацией.
Библиотека 190 жестов, компонент 194 точки перехода и компонент 200 смешения анимаций могут быть воплощены в аппаратных средствах, программных средствах или с использованием комбинации обоих подходов. Например, библиотека 190 жестов, компонент 194 точки перехода и компонент 200 смешения анимаций могут быть воплощены как программное обеспечение, которое исполняется в процессоре, таком как процессор 196, из состава вычислительного окружения (или в модуле 101 обработки по фиг.3 или в модуле 259 обработки по фиг.4).
Следует подчеркнуть, что блок-схемы, представленные на фиг.2-4, являются примерными и не предполагают выполнения каких-либо конкретных вариантов осуществления. Таким образом, процессор 195 или 32 по фиг.1, модуль 101 обработки по фиг.3 и модуль 259 обработки по фиг.4 могут быть воплощены как одиночный процессор или множество процессоров. Множество процессоров могут быть распределены или могут быть установлены центрально. Например, библиотека 190 жестов может быть воплощена как программное обеспечение, которое исполняется в процессоре 32 устройства съемки, или может быть воплощена как программное обеспечение, которое исполняется в процессоре 195 в вычислительном окружении. Может использоваться любая комбинация процессоров, которые пригодны для выполнения раскрытых здесь технологий. Множество процессоров могут связываться беспроводным образом, через проводной канал или с использованием их комбинации.
Библиотека жестов и параметры, которые идентифицируют точки перехода, могут быть настроены для приложения или контекста приложения с помощью инструментального средства жестов. Контекст может представлять собой культурный контекст, и он может представлять собой контекст окружающей среды. Культурный контекст относится к культуре пользователя, использующего систему. В разных культурах могут использоваться аналогичные жесты для передачи совершенно разных значений. Например, американский пользователь, который желает сообщить другому пользователю "посмотри" или "используй свои глаза", может подвести свой указательный палец на своей голове близко к дистальной стороне своего глаза. Однако, для итальянского пользователя этот жест может быть интерпретирован как ссылка на мафию.
Аналогично, могут существовать разные контексты в разных окружающих средах одного приложения. Рассмотрим работающую от первого лица игру "стрелялку", в которой используется управление моторным транспортным средством. В то время как пользователь находится на ногах, размещение руки с пальцем, направленным к земле и перемещение руки вперед и в сторону от тела, может представлять собой жест удара.
В то время, когда пользователя рассматривают в контексте управления, то же самое движение может представлять собой жест "переключения передачи". Может также существовать одна или больше окружающих сред меню, где пользователь может сохранять свою игру, выбирать оборудование своего персонажа или выполнять аналогичные действия, которые не содержат непосредственное участие в игре. В этой среде один и тот же жест может иметь третье значение, например, выбор чего-то заранее или переход на другой экран.
Жесты, предварительно подготовленные анимации и точки перехода могут быть сгруппированы вместе в пакеты по жанрам взаимодополняющих жестов, которые, вероятно, используются приложением в этом жанре. Взаимодополняющие жесты (либо взаимодополняющие в том, что они обычно используются вместе, или взаимодополняющие в том, что при изменении параметра одного будет изменен параметр другого) могут быть сгруппированы вместе в пакеты жанра. Эти пакеты могут быть предоставлены для приложения, которое может выбрать по меньшей мере один. Приложения могут настраивать или модифицировать параметры жеста, предварительно подготовленную анимацию или точку перехода, так чтобы они наилучшим образом подходили к уникальным аспектам приложения. Когда параметр настраивают, второй взаимодополняющий параметр (во взаимозависимом смысле) либо жеста, либо второго жеста также настраивают таким образом, что параметры остаются взаимодополняющими. Пакеты жанра для компьютерных игр могут включать в себя жанры, такие как игра "стрелялка", боевик, управление автомобилем и спортивные состязания, в которые играют от первого лица.
Компонент 198 точки перехода может определять, целесообразно ли использовать предварительно подготовленную анимацию и когда целесообразно обеспечить анимацию на основе отснятого движения пользователя или жеста. Компонент 194 точки перехода может анализировать движение пользователя для определения того, удовлетворяют ли соответствующие параметры тем, которые служат показателем точки перехода. Например, различные жесты для движений при игре в боулинг в приложении для игры в боулинг могут быть интерпретированы вычислительным окружением 12. Фильтр 191 жестов может идентифицировать начала замаха назад пользователя на основе параметров, которые соответствуют параметрам жеста замаха назад.
Точка перехода при движении во время игры в боулинг может быть установлена в точке, где рука пользователя пересекает плоскость его или ее бедра. Характеристика точки перехода может состоять в том, что отснятое движение пользователя содержит движение обратного замаха и возникает при определенной скорости. Параметры, измеряемые по жесту пользователя в физическом пространстве, могут соответствовать параметрам точки перехода. Идентификация точки перехода может инициировать воплощение предварительно подготовленного или заранее заданного жеста. Библиотека 192 предварительно подготовленных анимаций может содержать предварительно подготовленную анимацию замаха назад.
Компонент 195 смешения анимаций может сглаживать переход между живой анимацией и предварительно подготовленной анимацией. Например, вычислительное окружение 12 может генерировать скелетную карту движений пользователя и сглаживать переход положения пользователя, измеренный в точке перехода, с исходным положением предварительно подготовленной анимации. Связывание движения пользователя и предварительно подготовленной анимации, таким образом, может свести к минимуму любое нарушение отображаемого представления пользователя, потенциально предоставляя переход без стыков. Отснятое движение может изменятся между пользователями и может изменяться каждый раз, когда пользователь выполняет определенный жест. Таким образом, смешивание для разных пользователей и различных движений, связанных с заранее заданным движением, также может изменяться. Предварительно подготовленная анимация, выбранная для связывания, также может определять требуемую величину смешивания.
Вторая точка перехода может быть установлена, когда рука пользователя пересекает плоскость его или ее бедра при перемещении шара снова вперед. Вторая точка перехода может инициировать возврат к использованию анимации, которая соответствует снятому движению или жесту пользователя. И снова компонент 195 смешения анимаций может сглаживать переход между анимацией движения пользователя и предварительно подготовленной анимацией.
На фиг.3 иллюстрируется примерный вариант осуществления вычислительного окружения, которое может использоваться для интерпретации одного или более жестов в системе распознавания, анализа и отслеживания цели. Вычислительное окружение, такое как вычислительное окружение 12, описанное выше со ссылкой на фиг.1A-2, может представлять собой мультимедийную консоль 100, такую как игровая консоль. Как показано на фиг.3, мультимедийная консоль 100 имеет центральное процессорное устройство (CPU, ЦПУ) 101, имеющее кэш 102 уровня 1, кэш 104 уровня 2 и ROM (ПЗУ, постоянное запоминающее устройство) 106 типа флэш. Кэш 102 уровня 1 и кэш 104 уровня 2 временно сохраняют данные и, следовательно, уменьшают количество циклов доступа к запоминающему устройству, улучшая таким образом скорость обработки и пропускную способность. CPU 101 может быть предоставлено как имеющее больше, чем одно ядро, и, таким образом, дополнительные кэш 102 и 104 уровня 1 и уровня 2. ROM 106 типа флэш может содержать исполняемые коды, которые загружаются во время исходной фазы процесса загрузки при включении питания мультимедийной консоли 100.
Модуль 108 графической обработки (GPU) и видеокодер/видеокодек (кодер/декодер) 114 формируют конвейер видеообработки для обработки графики с высокой скоростью с высоким разрешением. Данные передаются из модуля 108 графической обработки в видеокодер/видеокодек 114 через шину. Конвейер видеообработки выводит данные в A/V (аудио/видео) порт 140 для передачи в телевизор или в другой дисплей. Контроллер 110 запоминающего устройства соединен с GPU 108, который способствует доступу процессора к различным типам запоминающего устройства 112, таким как, но без ограничений, RAM (ОЗУ, оперативное запоминающее устройство).
Мультимедийная консоль 100 включает в себя контроллер 120 I/O (ввода/вывода), контроллер 122 управления системой, модуль 123 обработки звуковых данных, контроллер 124 сетевого интерфейса, первый хост-контроллер 126 USB, второй контроллер 128 USB и подузел 130 I/O передней панели, которые предпочтительно воплощены в модуле 118. Контроллеры 126 и 128 USB используются как хост-устройства для периферийных контроллеров 142(1)-142(2), беспроводного адаптера 148 и внешнего запоминающего устройства 146 (например, запоминающее устройство типа флэш, внешний дисковод CD/DVD ROM, съемный носитель и т.д.). Сетевой интерфейс 124 и/или беспроводный адаптер 148 обеспечивают доступ к сети (например, Интернет, домашней сети и т.д.), и могут представлять собой любые из широкого разнообразия различных проводных или беспроводных компонентов адаптера, включая карту Ethernet, модем, модуль Bluetooth, кабельный модем и т.п.
Системная память 143 предусмотрена для сохранения данных приложения, которые загружаются во время процесса загрузки. Накопитель 144 предусмотрен и может содержать дисковод DVD/CD, накопитель на жестких дисках или другой съемный накопитель и т.д. Накопитель 144 может быть внутренним или внешним для мультимедийной консоли 100. Доступ к данным приложения может осуществляться через накопитель 144 для исполнения, воспроизведения и т.д. с помощью мультимедийной консоли 100. Накопитель 144 соединен с контроллером 120 I/O через шину, такую как последовательная шина ATA или другое высокоскоростное соединение (например, IEEE 1394).
Контроллер 122 управления системой обеспечивает различные служебные функции, относящиеся к обеспечению доступности мультимедийной консоли 100. Модуль 123 обработки звуковых данных и аудиокодек 132 формируют соответствующий конвейер обработки аудиоданных с высоким качеством звука и стереофонической обработкой. Аудиоданные передаются между модулем 123 обработки аудиоданных и аудиокодеком 132 через линию связи. Конвейер обработки аудиоданных выводит данные в A/V порт 140 для воспроизведения с помощью внешнего аудиопроигрывателя или устройства, обладающего возможностями воспроизведения звука.
Подузел 130 I/O передней панели поддерживает функцию кнопки 150 включения питания и кнопки 152 выброса, а также некоторое количество LED (светодиодов) или других индикаторов, расположенных на внешней поверхности мультимедийной консоли 100. Модуль 136 источника питания системы обеспечивает энергию питания для компонентов мультимедийной консоли 100. Вентилятор 138 охлаждает цепи мультимедийной консоли 100.
CPU 101, GPU 108, контроллер 110 памяти и различные другие компоненты в мультимедийной консоли 100 взаимно соединены через одну или больше шин, включая последовательные и параллельные шины, шину памяти, периферийную шину и шину процессора или локальную шину, используя любую из различных архитектур шин. В качестве примера, такие архитектуры могут включать в себя шину межсоединения периферийных компонентов (PCI), шину PCI-Express и т.д.
Когда включают питание мультимедийной консоли 100, данные приложения могут быть загружены из системной памяти 143 в память 112 и/или кэш 102, 104 и исполнены в CPU 101. Приложение может представлять графический интерфейс пользователя, который обеспечивает соответствующее восприятие для пользователя при переходе к разным типам мультимедиа, доступных в мультимедийной консоли 100. Во время работы приложения и/или другое мультимедиа, содержащиеся в накопителе 144, могут быть запущены или воспроизведены из накопителя 144 для обеспечения дополнительных функций для мультимедийной консоли 100.
Мультимедийная консоль 100 может работать как автономная система, путем простого соединения системы с телевизором или другим дисплеем. В таком автономном режиме мультимедийная консоль 100 позволяет одному или больше пользователям взаимодействовать с системой, просматривать кинофильмы или прослушивать музыку. Однако, в случае интеграции функциональной возможности широкополосного соединения, реализуемого через сетевой интерфейс 124 или беспроводный адаптер 148, мультимедийная консоль 100 может дополнительно работать как участник большего сетевого сообщества.
Когда включают питание мультимедийной консоли 100, установленное количество аппаратных ресурсов резервируется для системного использования посредством операционной системы мультимедийной консоли. Эти ресурсы могут включать в себя резервирование памяти (например, 16 Мб), циклы CPU и GPU (например, 5%), полосу пропускания сети (например, 8 кб/с) и т.д. Поскольку эти ресурсы резервируются во время начальной загрузки системы, зарезервированные ресурсы не существуют с точки зрения приложения.
В частности, резервирование памяти предпочтительно является достаточно большим для содержания ядра запуска, конкурирующих системных приложений и драйверов. Резервирование CPU предпочтительно является постоянным, так что, если зарезервированная степень использования CPU не используется системными приложениями, то холостой поток будет употреблять любые неиспользованные циклы.
Что касается резервирования GPU, легковесные сообщения, генерируемые системными приложениями (например, всплывающие сообщения), отображаются путем использования прерывания GPU для планирования кода для представления всплывающего меню с наложением. Объем памяти, требуемый для наложения, зависит от размера области наложения, и область наложения предпочтительно масштабируют в соответствии с разрешением экрана. В случае, когда весь интерфейс пользователя используется конкурирующим системным приложением, предпочтительно использовать разрешение, не зависящее от разрешения приложения. Блок масштабирования можно использовать для установки такого разрешения так, чтобы устранить необходимость менять частоту и обеспечивать повторную синхронизацию телевизора.
После загрузки мультимедийной консоли 100 и резервирования системных ресурсов конкурирующие системные приложения исполняются для обеспечения функций системы. Эти функции системы инкапсулированы в набор системных приложений, которые выполняют в пределах зарезервированных ресурсов системы, описанных выше. Ядро операционной системы идентифицирует потоки, которые представляют собой потоки системного приложения по отношению к потокам игрового приложения. Системные приложения, предпочтительно, запланированы для работы с CPU 101 в заранее заданные моменты времени и интервалы, для обеспечения согласованного обзора системных ресурсов для приложения. Планирование состоит в минимизации нарушения кэша для игрового приложения, работающего на консоли.
Когда конкурирующее системное приложение требует использования звука, обработку аудиоданных планируют асинхронно с игровым приложением, ввиду чувствительности ко времени. Диспетчер приложений мультимедийной консоли (описанный ниже) управляет уровнем звука игрового приложения (например, отключение звука, приглушенный звук), когда системные приложения активны.
Устройства ввода (например, контроллеры 142(1) и 142(2)) совместно используются игровыми приложениями и системными приложениями. Устройства ввода не являются зарезервированными ресурсами, но их требуется переключать между системными приложениями и игровым приложением таким образом, что каждый из них будет иметь фокус на устройстве. Диспетчер приложений, предпочтительно, управляет переключением входного потока, не имея данных об игровом приложении, и драйвер поддерживают информацию о состоянии в отношении переключений фокуса. Камеры 26, 28 и устройство 20 съемки могут представлять дополнительные устройства ввода для консоли 100.
На фиг.4 иллюстрируется другой примерный вариант осуществления вычислительного окружения 220, которое может представлять собой вычислительное окружение 12, показанное на фиг.1A-2, используемое для интерпретации одного или больше жестов в системе распознавания, анализа и отслеживания цели. Окружение 220 вычислительной системы представляет собой только один пример, соответствующий вычислительному окружению, и не предназначено для наложения каких-либо ограничений на объем использования или функции раскрытого здесь изобретения. Вычислительное окружение 220 также не должно быть интерпретировано как имеющее какую-либо зависимость или требования, относящиеся к любому одному или комбинации компонентов, представленных в примерном рабочем окружении 220. В некоторых вариантах осуществления различные представленные вычислительные элементы могут включать в себя схемы, предназначенные для иллюстрации примеров конкретных аспектов настоящего раскрытия. Например, термин «схема», используемый в раскрытии, может включать в себя специализированные аппаратные компоненты, выполненные с возможностью осуществления функции (функций), используя встроенное программное обеспечение или переключатели. В других примерных вариантах осуществления термин «схема» может включать в себя процессорное устройство общего назначения, память и т.д., сконфигурированное посредством программных инструкций, которыми воплощена логика, приспособленная для выполнения функции (функций). В примерных вариантах осуществления в случае, когда схема включает в себя комбинацию аппаратных и программных средств, программист может написать исходный код, воплощающий логику, и этот исходный код может быть скомпилирован в машиночитаемый код, который может быть обработан процессорным устройством общего назначения. Поскольку для специалиста в данной области техники будет понятно, что предшествующий уровень техники в своем развитии достиг точки, где очень мало ощущаются различия между аппаратным обеспечением, программным обеспечением или комбинацией аппаратных средств/программных средств, выбор аппаратного обеспечения или программного обеспечения для выполнения конкретных функций представляет собой конструктивный выбор во время воплощения. Более конкретно, для специалиста в данной области техники будет понятно, что процесс, выполняемый программным обеспечением, может быть преобразован в эквивалентную аппаратную структуру, и аппаратная структура может быть сама преобразована в эквивалентный программный процесс. Таким образом, выбор воплощения на основе аппаратных средств, в сравнении с программным воплощением, представляет собой один вариант конструктивного выбора, выполняемого программистом.
На фиг.4 вычислительное окружение 220 содержит компьютер 241, который типично включает в себя различные считываемые компьютером носители информации. Считываемые компьютером носители информации могут представлять собой любые доступные носители информации, доступ к которым может осуществлять компьютер 241, и включают в себя как энергозависимые, так и энергонезависимые носители информации, как съемные, так и несъемные носители информации. Системная память 222 включает в себя компьютерные носители информации в форме энергозависимых и/или энергонезависимых запоминающих устройств, таких как постоянное запоминающее устройство (ROM) 223 и оперативное запоминающее устройство (RAM) 260. Базовая система 224 ввода/вывода (BIOS), содержащая основные процедуры, которые помогают передавать информацию между элементами в компьютере 241, например, во время запуска, типично содержится в ROM 223. RAM 260 типично содержит данные и/или программные модули, доступ к которым может осуществляться немедленно и/или с которыми в данный момент выполняет операции модуль 259 обработки. В качестве примера, а не для ограничений, на фиг.4 иллюстрируется операционная система 225, прикладные программы 226, другие программные модули 227 и данные 228 программ.
Компьютер 241 также может включать в себя другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные носители информации. Только в качестве примера, на фиг.4 иллюстрируется накопитель 238 на жестких дисках, который считывает с или записывает данные на несъемные, энергонезависимые магнитные носители информации, магнитный дисковод 239, который считывает с или записывает данные на съемный, энергонезависимый магнитный диск 254, и оптический дисковод 240, который считывает с или записывает данные на съемный, энергонезависимый оптический диск 253, такой как CD-ROM или другой оптический носитель информации. Другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные носители информации, которые можно использовать в примерном рабочем окружении, включают в себя, но не ограничиваются этим, кассеты с магнитными лентами, карты запоминающих устройств типа флэш, цифровые универсальные диски, цифровую видеоленту, твердотельное RAM, твердотельное ROM и т.п. Накопитель 238 на жестких дисках типично соединен с системной шиной 221 через интерфейс несъемного запоминающего устройства, такой как интерфейс 234, а магнитный дисковод 239 и оптический дисковод 240 типично соединены с системной шиной 221 через интерфейс съемного запоминающего устройства, такой как интерфейс 235.
Накопители и дисководы и их ассоциированные компьютерные носители информации, описанные выше и представленные на фиг.4, обеспечивают сохранение считываемых компьютером инструкций, структур данных, программных модулей и других данных для компьютера 241. На фиг.4, например, накопитель 238 на жестких дисках показан как содержащий операционную систему 258, прикладные программы 257, другие программные модули 256 и данные 255 программ. Следует отметить, что эти компоненты могут быть либо теми же, либо отличными от операционной системы 225, прикладных программ 226, других программных модулей 227 и данных 228 программ. Операционная система 258, прикладные программы 257, другие программные модули 256 и данные 255 программ обозначены здесь другими номерами для иллюстрации того, что, как минимум, они представляют собой другие копии. Пользователь может вводить команды и информацию в компьютер 241 через устройства ввода данных, такие как клавиатура 251 и указательное устройство 252, обычно называемое мышь, шаровой манипулятор или сенсорная панель. Другие устройства ввода данных (не показаны) могут включать в себя микрофон, джойстик, игровую панель, спутниковую антенну, сканер или тому подобное. Эти и другие устройства ввода данных часто соединены с модулем 259 обработки через интерфейс 236 ввода пользователя, который соединен с системной шиной, но могут быть соединены с помощью других структур интерфейсов и шин, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB). Камеры 26, 28 и устройство 20 съемки могут определять дополнительные устройства ввода данных для консоли 100. Монитор 242 или устройства дисплея другого типа также соединен с системной шиной 221 через интерфейс, такой как видеоинтерфейс 232. В дополнение к монитору, компьютеры также могут включать в себя другие периферийные устройства вывода, такие как громкоговорители 244 и принтер 243, которые могут быть соединены через выходной периферийный интерфейс 233.
Компьютер 241 может работать в сетевой среде, используя логические соединения с одним или больше удаленными компьютерами, таким как удаленный компьютер 246. Удаленный компьютер 246 может представлять собой персональный компьютер, сервер, маршрутизатор, сетевой PC, одноранговое устройство или другой общий сетевой узел, и типично включает в себя множество или все из элементов, описанных выше в отношении компьютера 241, хотя только запоминающее устройство 247 представлено на фиг.4. Логические соединения, показанные на фиг.2, включают в себя локальную сеть (LAN) 245 и глобальную сеть (WAN) 249, но также могут включать в себя другие сети. Такое сетевое окружение, как правило, используется в офисах, в компьютерных сетях масштаба предприятия, в интрасетях и в сети Интернет.
При использовании в сетевом окружении LAN компьютер 241 соединен с LAN 245 через сетевой интерфейс или адаптер 237. При использовании в сетевом окружении WAN компьютер 241 типично включает в себя модем 250 или другое средство для установления связи через WAN 249, такую как Интернет. Модем 250, который может представлять собой внутренний или внешний модем, может быть соединен с системной шиной 221 через интерфейс 236 ввода пользователя или другой соответствующий механизм. В сетевом окружении программные модули, описанные в отношении компьютера 241, или их части могут быть сохранены в удаленном запоминающем устройстве. В качестве примера, а не для ограничения, на фиг.4 иллюстрируются удаленные прикладные программы 248 как находящиеся в запоминающем устройстве 247. Следует понимать, что показанные сетевые соединения представляют собой примеры, и можно использовать другие средства установления линии связи между компьютерами.
На фиг.5A представлен пример скелетной карты пользователя, которая может быть сгенерирована из устройства 20 съемки. В данном варианте осуществления различные суставы и кости идентифицированы следующим образом: каждая рука 502, каждое предплечье 504, каждый локоть 506, каждый бицепс 508, каждое плечо 510, каждая верхняя часть бедра 512, каждое бедро 514, каждое колено 516, каждая голень 518, каждая ступня 520, голова 522, туловище 524, верхняя часть 526 и нижняя часть 528 позвоночника и талия 530. В случае, когда отслеживаются дополнительные точки, могут быть идентифицированы дополнительные свойства такие, как кости и суставы пальцев на руках или пальцев на ногах, или отдельные черты лица, такие как нос и глаза.
В результате движения своим телом пользователь может формировать жесты. Жест содержит движение или позу пользователя, которые могут быть захвачены как данные изображения и проанализированы для получения их значения. Жест может быть динамическим, содержащим движение, таким как имитация броска шара. Жест может представлять собой статическую позу, такую как поза со скрещенными предплечьями 504 перед туловищем 524. Жест также может включать в себя стойки, такие как размахивание игрушечным мечом. Жест может содержать более чем одну часть тела, например, хлопание в ладоши 502 или мелкие движения, такие как сжатие губ.
Жесты пользователя можно использовать для ввода в общий вычислительный контекст. Например, различные движения рук 502 или других частей тела могут соответствовать общим задачам, относящимся ко всей системе, таким как передвижение вверх или вниз по иерархическому списку, открыть файл, закрыть файл и сохранить файл. Например, пользователь может держать свою руку так, что пальцы указывают вверх и ладонь обращена к устройству 20 съемки. Он может затем сжать свои пальцы в направлении ладони в кулак, и это может представлять собой жест, который обозначает, что сфокусированное окно в оконном интерфейсе пользователя в вычислительном окружении должно быть закрыто. Жесты также могут использоваться в специфичном контексте видеоигры в зависимости от игры. Например, при управлении игрой различные движения рук 502 и ступней 520 могут соответствовать управлению транспортным средством по направлению, переключению передач, ускорению и торможению. Таким образом, жест может обозначать широкое разнообразие движений, которые отображаются на изображаемое представление пользователя, и широкое разнообразие приложений, таких как видеоигры, текстовые редакторы, программы для обработки текста, программы управления данными и т.д.
Пользователь может генерировать жест, который соответствует ходьбе или бегу, в результате выполнения им ходьбы или бега на месте. Например, пользователь может поочередно поднимать и опускать каждую ногу 512-520 для подражания ходьбе на месте. Система может выявлять этот жест путем анализа каждой верхней части бедра 512 и каждого бедра 514. Шаг может быть распознан, когда один угол между верхней частью бедра и бедром (измеренный относительно вертикальной линии, в котором нога в состоянии покоя имеет угол между верхней частью бедра и бедром, равный 0°, и горизонтально вытянутая вперед нога имеет угол между верхней частью бедра и бедром, равный 90°), превышает определенный порог относительно другого бедра. Ходьба или бег могут быть распознаны после некоторого количества последовательных шагов, выполняемых ногами поочередно. Время между двумя новыми шагами может использоваться как период. После некоторого количества периодов, когда пороговый угол не будет превышен, система может определить, что жест ходьбы или бега был закончен.
Для данного жеста "ходьба или бег" приложение может устанавливать значения для параметров, ассоциированных с этим жестом. Эти параметры могут включать в себя описанный выше пороговый угол, количество шагов, требуемых для инициирования жеста ходьбы или бега, количество периодов, когда отсутствие шагов приводит к окончанию жеста, и пороговый период, который определяет, является ли жест ходьбой или бегом. Быстрый период может соответствовать бегу, поскольку пользователь двигает своими ногами быстро, и медленный период может соответствовать ходьбе.
Жест может быть ассоциирован с набором принятых по умолчанию параметров, которые приложение может заменить своими собственными параметрами. В этом сценарии приложение не вынуждают предоставить параметры, но вместо этого оно может использовать набор принятых по умолчанию параметров, которые обеспечивают возможность распознавания жеста в отсутствии определенных приложением параметров. Информация, относящаяся к жесту, может быть сохранена для предварительно подготовленной анимации.
Существует множество выходных данных, которые могут быть ассоциированы с жестом. Может использоваться линия раздела "да или нет" в отношении того, возник или нет жест. Также может учитываться уровень степени уверенности, который соответствует вероятности того, что отслеживаемое движение пользователя соответствует жесту. Он может представлять собой линейную шкалу в диапазоне чисел с плавающей запятой от 0 до 1 включительно. При этом приложение, принимающее такую информацию жеста, не может осуществить принятие ошибочно допустимых чисел в качестве входных данных, оно может использовать только те распознанные жесты, которые имеют высокий уровень степени уверенности, такой как, по меньшей мере, 0,95. В случае, когда приложение должно распознавать каждый случай возникновения жеста, даже за счет возникновения ложноположительных решений, оно может использовать жесты, которые имеют по меньшей мере гораздо более низкий уровень степени уверенности, например, такие как всего лишь большие, чем 0,2. Жест может иметь выход в течение времени между двумя наиболее недавними шагами, и в случае когда был зарегистрирован только первый шаг, он может быть установлен в зарезервированное значение, такое как -1 (поскольку время между любыми двумя шагами должно быть положительным). Жест также может иметь выход для наибольшего угла бедра, достигнутого во время наиболее недавнего шага.
Другой примерный жест представляет собой "прыжок на носках". При этом пользователь может сформировать жест, поднимая свои пятки, отрывая их от земли, но оставаясь стоять на носках. В качестве альтернативы, пользователь может прыгать в воздухе так, что его ступни 520 полностью остаются на земле. Система может выполнять разбор скелета на предмет такого жеста, анализируя отношение углов плеч 510, верхней части бедра 512 и колен 516, чтобы определить, находятся ли они в состоянии выравнивания, эквивалентного прямой стойке. Затем эти точки, а также верхние 526 и нижние 528 точки позвоночника могут отслеживаться для определения направленного вверх ускорения. Достаточная комбинация ускорения может инициировать жест прыжка. Достаточная комбинация ускорения с определенным жестом может удовлетворять параметрам точки перехода.
Для такого жеста "прыжок на носках" приложение может устанавливать значения для параметров, ассоциированных с этим жестом. Эти параметры могут включать в себя описанный выше порог ускорения, который определяет, насколько быстро некоторая комбинация плеч 510, верхних частей бедра 512 и колен 516 пользователя должна переместиться вверх для инициирования жеста, а также максимальный угол выравнивания между плечами 510, верхними частями бедра 512 и коленями 516, при котором прыжок все еще может быть инициирован. Выходы могут содержать уровень степени уверенности, а также угол тела пользователя во время прыжка.
Установка параметров для жеста на основе конкретных деталей приложения, которое будет получать жест, является важной для точной идентификации жестов. Правильная идентификация жестов и намерения пользователя очень помогают сформировать положительное ощущение у пользователя.
Приложение может устанавливать значения для параметров, ассоциированных с различными точками перехода, для идентификации точек, в которых требуется использовать предварительно подготовленные анимации. Точки перехода могут быть определены по различным параметрам, таким как идентификация определенного жеста, скорость, угол цели или объекта или любая их комбинация. Если точка перехода определена, по меньшей мере частично, путем идентификации определенного жеста, тогда правильная идентификация жестов помогает повысить уровень степени уверенности так, чтобы параметры точки перехода были удовлетворены.
Другой параметр для жеста может представлять собой расстояние перемещения. Когда жесты пользователя управляют действиями аватара в виртуальной среде, аватар может находиться на расстоянии вытянутой руки от шара. Если пользователь желает взаимодействовать с шаром и схватить его, для этого может потребоваться, чтобы пользователь вытянул свою руку 502-510 на всю длину, выполняя жест захвата. В этой ситуации аналогичный жест захвата, когда пользователь только частично вытягивает свою руку 502-510, может не достичь результата взаимодействия с шаром. Аналогично, параметр точки перехода может представлять собой идентификацию жеста захвата, и в случае, когда пользователь только частично вытягивает свою руку 502-510, таким образом, не достигая результата взаимодействия с шаром, жест пользователя также не удовлетворяет параметрам точки перехода.
Жест или часть его может иметь в качестве параметра объем пространства, в котором он должен произойти. Этот объем пространства типично может быть выражен в отношении тела, где жест содержит движение тела. Например, жест броска футбольного мяча для пользователя-правши может быть распознан только в объеме пространства, не меньшем, чем правое плечо 510a, и с той же стороны относительно головы 522, с которой находится выполняющая бросок рука 502a-310a. При этом может не быть необходимым определить все связи в этом объеме, так, как, например, для жеста броска, где внешние связи, находящиеся за пределами тела, остаются неидентифицированными, и объем расширяется неопределенно или до кромки отслеживаемой сцены.
На фиг.6A-6F представлен пример жестов, которые пользователь 602 может выполнять во время игры в боулинг. Каждая из фиг.6A-6F может соответствовать моментальному снимку или кадру данных изображения движения пользователя в разные моменты времени. Каждый кадр данных изображения может быть разобран для получения скелетной карты пользователя, и жесты могут быть идентифицированы, как описано со ссылкой на скелетную карту, показанную на фиг.6. Кадры или моментальные снимки данных изображения, показанные на фиг.6A-6F, могут быть сняты с помощью устройства съемки и могут быть обработаны устройством 20 съемки или в вычислительном окружении 12, как показано на фиг.2.
Устройство 20 съемки может снимать последовательные кадры данных изображения более быстро, чем пользователь может преодолеть расстояние. Например, жесты во время игры в боулинг могут возникать в течение периода 10 секунд, и когда камера с глубиной снимает данные с частотой 40 кадров в секунду, она снимет за это время 400 кадров данных изображения. Система после формирования скелетной карты из изображения пользователя с глубиной может теперь определить, как тело пользователя движется с течением времени, и на основании этого выявить жест. В разные моменты в движении пользователя система может реализовать предварительно подготовленную анимацию для отображения, вместо отображения анимации, которая представляет движение пользователя.
На фиг.6A пользователь 602 начинает движение опускания руки 604 вдоль своего бока. Пользователь проходит к месту возврата шаров для боулинга, показанному моментальным снимком движения пользователя на фиг.6B. Пользователь затем выбирает шар, как показано моментальным снимком движения пользователя на фиг.6C. Пользователь может достичь фактически существующего физического объекта в физическом пространстве пользователя, который идентифицирован устройством съемки, и может отображаться в виде аватара в игровом пространстве. В качестве альтернативы, предметы реквизита или объекты, используемые в определенном приложении, могут отображаться на экране, и пользователь может взаимодействовать с объектами, занимая соответствующее положение в физическом пространстве, которое соответствует местоположению в игровом пространстве. Например, если подборка шаров для игры в месте возврата шаров для боулинга отображается в игровом пространстве, пользователь может выполнить следующие действия: пройти вперед и повернуться в физическом пространстве для управления аватаром, который шагает и поворачивается в направлении места возврата шаров для боулинга, отображаемом в игровом пространстве. При просмотре отображаемого представления пользователя, такого как аватар, который ставится в соответствие жестам пользователя, пользователь может занять положение для выбора шара.
После выбора шара пользователь переходит к месту дорожки для боулинга между кадрами, показанными на фиг.6C и фиг.6D, и занимает место в требуемом положении. И снова, при наблюдении за движениями пользователя, отображаемыми для представления, пользователь может выполнить движение во время ходьбы в физическом пространстве пользователя, для перемещения аватара в требуемое положение на дорожке для боулинга, отображаемой в игровом пространстве. Пользователь удерживает шар для подготовки к движению обратного маха, показанному моментальным снимком движения пользователя на фиг.6D, и начинает движение обратного маха, показанное на моментальном снимке движения пользователя на фиг.6E. На фиг.6F представлен пользователь в точке, в которой он отпускает шар для боулинга по линии для боулинга.
В то время как устройство 20 съемки снимает последовательность неподвижных изображений, так что на каждом изображении пользователь выглядит неподвижно, пользователь может двигаться в ходе выполнения такого жеста (в отличие от неподвижного жеста). Система может принимать эту последовательность положений на каждом неподвижном изображении и по ним определять уровень степени уверенности жеста движения, который выполняет пользователь.
При выполнении жеста движения пользователя могут ставиться в соответствие представлению на дисплее, такому как аватар. При этом может быть целесообразно вставлять предварительно подготовленную анимацию вместо отображения анимации, которая соответствует снятому движению пользователя. Если движение пользователя не является жестом, который управляет аспектом приложения, может быть все еще желательным отображать движение пользователя или вставлять предварительно подготовленную анимацию. Например, после выбора пользователем шара на фиг.6C движение между кадрами, показанными на фиг.6C и фиг.6D, которое включает в себя наклон назад вверх и движение поворота в сторону кеглей для игры в боулинг, может быть лучше представлено предварительно подготовленной анимацией. Вместо постановки в соответствие снятому движению пользователя может быть более эффективным, с целью анимации, использовать предварительно подготовленную анимацию. В качестве другого примера, замах назад пользователя, который происходит между изображениями, представленными на фиг.6D и 6F, моментальный снимок которого показан на фиг.6E, может быть сложным для неопытных пользователей, или он может быть установлен как предварительно подготовленная анимация, поскольку представляет собой обычное движение для игры в боулинг.
Определенный жест или сегмент движения может быть выбран для представления с помощью предварительно подготовленной анимации по различным причинам. Например, движение может быть несущественным для успеха пользователя в игре, и использование предварительно подготовленной анимации может быть более эффективным, чем постановка анимации в соответствие движениям пользователя. Вставка предварительно подготовленной анимации с целью анимации может быть желательной для обычных движений или для движения, которые сложно измерять или идентифицировать. При этом может быть желательным использовать предварительно подготовленную анимацию в ситуациях, когда пользователь не ожидает, что его или ее движения могут быть поставлены в соответствие отображению на дисплее. Некоторые движения, применимые для приложения, являются настолько общеупотребимыми, что пользователь не может отличить использование предварительно подготовленной анимации от отображения анимации на основе отснятого движения пользователя или жеста, и при этом может быть более эффективным отображать одну или другую. Предварительно подготовленная анимация может быть желательной для предоставления перерывов в игре или в работе приложения. Например, если пользователь понимает, что предварительно подготовленная анимация приводит к перемещению аватара пользователя от места возврата шаров для боулинга к дорожке после выбора шара, пользователь может сделать перерыв перед возобновлением игры, без влияния на движение аватара. Затем пользователь может сделать жест, представляющий собой инициирующее движение, для инициации возврата системы к отображению движения пользователя.
Точки перехода, которые инициируют использование предварительно подготовленных анимаций, и тип и требуемая величина смешивания могут быть настроены по параметрам, ассоциированным с жестом, для наилучшего использования специфики приложения. Например, в приложении для игры в боулинг, в котором используется библиотека жестов, имеющая сопоставленную информацию жестов, движения пользователя, показанные на фиг.6A-6F, могут быть идентифицированы как жесты во время игры в боулинг. Параметры, относящиеся к жесту, или специфичные для приложения, могут идентифицировать точку перехода, инициирующую использование предварительно подготовленной анимации для сегмента анимации, которая следует после точки перехода.
Набор параметров для идентификации точки перехода может быть более строгим, так что он требует изгиба тела пользователя под определенным углом или выполнение конкретного движения. Например, точка перехода может быть идентифицирована по специфичному для приложения движению, таким образом, что точка перехода при движении во время игры в боулинг, описанной выше, в которой требуется, чтобы пользователь выполнил движение захвата с вытянутой рукой, когда аватар пользователя находится в положении над требуемым шаром для боулинга. Если точка перехода идентифицирована по комбинации параметров, комбинация параметров может повышать уровень степени уверенности в обозначении точки перехода. Например, рассмотрим приложение для игры в боулинг, в котором движение между фиг.6C и 6D должно быть представлено с помощью предварительно подготовленной анимации. Параметры, обозначающие точки перехода, могут потребовать использования комбинации типа приложения (например, игра в боулинг), определенного движения пользователя (например, наклона вниз) и движения, специфичного для приложения (например, движения захвата при выборе шара).
Точки перехода могут быть разными в разных приложениях. Удовлетворение параметрам в одном приложении может обозначать точку перехода, но удовлетворение этим же параметрам во втором приложении может не обозначать точку перехода. Движение захвата в этот конкретный момент в игре может идентифицировать точку перехода, где предварительно подготовленная анимация будет представлять движение пользователя до следующей точки перехода. В другом приложении, таком как не являющееся игровым приложение электронной таблицы, движение захвата может использоваться для перемещения информации из одной ячейки в электронной таблице в другую ячейку. Параметры для точки перехода могут потребовать, чтобы пользователь выполнял движение через определенные положения в пределах определенного периода времени, например, 1,5 секунды, и если пользователь выполняет перемещение через эти положения за период времени больше, чем 1,5 секунды, это движение не будет распознано как определенная точка перехода, в результате чего не происходит инициирование предварительно подготовленной анимации.
Система может измерять жесты пользователя в физическом пространстве для движений аватара в направлении места возврата шаров для боулинга, наклона вниз и с последующим движением захвата определенного шара. В точке перехода система может воплощать предварительно подготовленную анимацию для движения, следующего после выбора шара (например, движение наклона назад и правильную установку положения аватара на дорожке для боулинга, где он обращен лицом к кеглям для боулинга). В системе могут использоваться технологии для смешения анимаций, такие как переход из анимации, которая соответствует живому движению пользователя, к предварительно подготовленной анимации, или наоборот (из предварительно подготовленной анимации к анимации, которая соответствует движению пользователя), могут быть соединены вместе с минимальными разрывами при отображении.
На фиг.7A и 7B представлен каждый из кадров движения пользователя, показанных на фиг.6A-6E, дополнительно представляющих последовательность жестов пользователя и предварительно подготовленных анимаций, и как система может соединять вместе анимации жестов пользователя и предварительно подготовленные анимации, используя технологии смешения анимаций.
Точки № 1, № 2, № 3 и № 4 перехода могут представлять собой точки, в которых параметр, например параметр, специфичный для движения пользователя, удовлетворяет параметрам точки перехода. Параметры, которые идентифицируют переход, могут соответствовать чему-либо другому, кроме движения пользователя, такие как параметры, обозначающие определенную точку в приложении. Может использоваться любой соответствующий способ для установки точек перехода. Само приложение может устанавливать точки перехода на основе типа приложения и/или уровня подготовки или на основе опыта пользователя. Например, большее количество предварительно подготовленных движений может быть воплощено для начинающего игрока. Пользователь может устанавливать точки перехода таким образом, чтобы предварительно подготовленные движения использовались для определенных движений, или пользователь может запрашивать большую или меньшую степень использования предварительно подготовленных анимаций в ходе использования приложения.
Удовлетворение параметрам точки перехода может инициировать переход от анимации движения пользователя к предварительно подготовленной анимации или возврат от предварительно подготовленной анимации к анимации движения пользователя. Как показано на фиг.7A, на участке A представлено использование анимации движения пользователя, где показаны различные жесты, которые управляют аспектами игры в боулинг. Воплощение предварительно подготовленной анимации может быть инициировано, когда удовлетворяются параметры точки перехода. Переход в точке № 1 перехода может быть инициирован с помощью комбинации типа приложения (например, игра в боулинг), определенного движения пользователя (например, наклон вниз), и специфичного для приложения движения (например, движение захвата для выбора шара).
Как показано на участке C, примерная предварительно подготовленная анимация в приложении для игры в боулинг может представлять собой движение, которое подразумевает захват шара из места возврата шара для боулинга, возврат в вертикальное положение с последующей установкой положения аватара пользователя, или другого визуального представления, перед дорожкой для боулинга с кеглями для боулинга. Для того, чтобы выполнить переход от снятого движения к предварительно подготовленной анимации, смешивание анимаций может быть встроено, как представлено на участке B, и более подробно описано ниже.
В другом примерном варианте осуществления система может устанавливать паузу отображаемого представления в последнем положении, предусмотренном предварительно подготовленной анимацией, так что последнее положение предварительно подготовленной анимации используется на участке C. Последнее положение, предусмотренное предварительно подготовленной анимацией, может быть представлено представлением пользователя, таким как аватар, на дисплее. Для возобновления представления живого движения, выполняемого пользователем, от пользователя может потребоваться инициировать переход с помощью определенного живого жеста. Например, для возобновления измерения системой и отображения живого движения, выполняемого пользователем, пользователь может встать в положение, аналогичное последнему положению, предоставленному предварительно подготовленной анимацией. Таким образом, переход может быть целенаправленно нарушен для обеспечения точки перехода или для помощи игроку самостоятельно установить правильное положение. Захват живого движения пользователя и детектирование определенного движения (движений) могут инициировать возврат системы к использованию живого движения пользователя. Как описано выше, переход между анимациями движения пользователя и предварительно подготовленными анимациями может потенциально быть выполнен без стыков для игрока, наблюдающего движение дисплея.
Вторая точка № 2 перехода может быть идентифицирована путем завершения движения, представленного предварительно подготовленной анимацией. В примерном варианте осуществления в точке № 2 перехода система может вернуться к анимированию движения пользователя. Для того, чтобы выполнить переход от предварительно подготовленной анимации обратно к анимации движений пользователя, как представлено на участке D, предварительно подготовленная анимация, используемая на участке C, может быть модифицирована для более плотного представления положения пользователя в начале участка E.
Последовательность жестов и анимаций для иллюстративного движения при игре в боулинг продолжается, как представлено на фиг.7B. Как показано на фиг.7B, на участке E снова иллюстрируется продолжающаяся в системе анимация жеста пользователя после точки № 2 перехода. При этом может быть желательным отображать анимацию движения пользователя в физическом пространстве после выбора шара, по мере того, как положение представления пользователя в игровом пространстве может быть основано на предпочтениях пользователя. Например, пользователь может пожелать находиться ближе к дорожке или может нацеливаться со смещением от центра размещения кеглей для боулинга.
Параметры третьей точки перехода, точки № 3 перехода, могут представлять собой живое движение пользователя или жест, который обозначает, что пользователь готов начать замах назад при выполнении движения для игры в боулинг. Например, параметры для точки № 3 перехода могут представлять собой идентификацию жеста пользователя, который включает в себя удержание шара в положении готовности перед торсом пользователя, паузы в течение заранее заданного периода времени и обозначения того, что требуемое положение на дорожке для боулинга было достигнуто, и инициирования замаха назад шаром из положения перед торсом в направлении бедра пользователя. Система может идентифицировать движения пользователя, которые обозначают точку № 3 перехода, инициируя, в результате, использование предварительно подготовленной анимации, представленной на участке G. Как показано на участке G, примерная предварительно подготовленная анимация в приложении для игры в боулинг может представлять собой движение обратного замаха и движения маха вперед, которое начинается позади плоскости бедер пользователя. Предварительно подготовленная анимация может быть выбрана из множества предварительно подготовленных анимаций, которые представляют движение замаха назад и маха вперед. Для выполнения перехода от снятого движения к предварительно подготовленной анимации, смешение анимаций может быть встроено, как представлено на участке F.
Четвертая точка № 4 перехода может быть идентифицирована по завершению движения, представленного предварительно подготовленной анимацией. В примерном варианте осуществления в точке № 4 перехода система может вернуться к использованию снятых движений пользователя для представления движения пользователя. Для того, чтобы сделать переход от предварительно подготовленной анимации обратно к снятым движениям пользователя, смешивание анимаций может быть встроено, как представлено на участке H.
Анимация движения пользователя может соответствовать или может не соответствовать управлению. Аналогично, предварительно подготовленная анимация может соответствовать или может не соответствовать управлению. Например, анимация движения пользователя в физическом пространстве может быть поставлена в соответствие анимации или визуальному представлению пользователя, такому как аватар. В случае, когда движение пользователя не управляет аспектом приложения, система может все еще отображать анимацию, которая ставится в соответствие движению пользователя. Аналогично, предварительно подготовленная анимация может быть вставлена и может отображаться, которая представляет сегмент движения, и это движение может быть применимо или может не быть применимо для управления приложением. В качестве альтернативы, движение пользователя может соответствовать жесту, который применим для управления, например, управления операционной системой или приложением. Например, движение захвата в приложении для игры в боулинг может представлять собой жест выбора шара. Аналогично, предварительно подготовленная анимация может управлять аспектом приложения (например, могут быть определены параметры предварительно подготовленной анимации, которые переводят в управление приложением, когда выполняется предварительно подготовленная анимация).
Для связывания анимации жеста пользователя или живого движения с предварительно подготовленной анимацией, такой как в каждой из точек № 1, № 2, № 3 и № 4 перехода, система может использовать способы смешения анимаций. Смешение анимаций представляет собой процесс отбора иерархической информации узла из одного или больше источников и смешивание их вместе для генерирования новой ориентации для узлов аналогичной иерархии. Наиболее типичная иерархия представляет собой иерархию, которая приблизительно представляет скелет человека. В этой иерархии каждый узел представляет собой сустав скелета, такой как колено, плечо или позвонки. Для каждого узла типично сохраняют ориентацию, содержащую положение, поворот и значения масштабирования. В этом контексте смешение анимаций представляет собой процесс смешения таких индивидуальных ориентаций суставов скелета для получения новой позы скелета из одного или больше источников.
Множество способов существует для выполнения смешения набора ориентаций. Они могут включать в себя линейную интерполяцию компонентов дискретной ориентации, сферическую линейную интерполяцию вращений, непрерывную сплайновую интерполяцию или простое суммирование, вычитание или модуляцию компонентов ориентации. Качество смешения анимаций сильно зависит от контекста, поэтому приложения могут комбинировать или могут расширять любые из предыдущих способов для достижения требуемого результата. Кроме того, способ сохранения для данных также является чрезвычайно гибким и может включать в себя матрицы преобразования, смещения дискретного положения, однородные и неоднородные значения масштабирования и повороты в форме полярных координат, пар ось-угол, кватерниона или дискретных углов Эйлера. Поскольку использование запоминающего устройства часто вызывает проблему больших наборов анимированных иерархий узлов, различные технологии сжатия могут использоваться для квантования или дополнительного уплотнения описанных данных.
Смешение анимаций также включает в себя процесс перенацеливания. Перенацеливание представляет собой процесс перевода одной или больше разных иерархий узлов в общее пространство с целью смешения. В качестве примера, вообразим анимированную скелетную иерархию, содержащую снятое движение, выполняемое профессиональным атлетом. В качестве второго источника также может использоваться снятое движение малого ребенка. Эти иерархии могут отличаться как по количеству суставов, содержащихся в каждом скелете, так и по индивидуальным длинам костей, которые может содержать каждый скелет. Для смешивания их вместе один или больше из этих источников может потребоваться перевести в общее пространство. Этот процесс перенацеливания приводит к переводу движения скелетной иерархии в другие пространство или форму. В предыдущем примере суставы ребенка могут быть масштабированы так, чтобы они соответствовали пропорциям атлета, для обеспечения однородного набора данных для смешивания.
В дополнение к прямому смешению анимированных иерархий узлов также существует ряд технологий для опосредованного смешивания одной или больше анимаций вместе для получения результата. Они могут включать в себя прямую и обратную кинематику. Приложение кинематики обеспечивает возможность выведения ориентаций узлов из требуемой цели и окружающих ориентаций узлов. Например, учитывая текущее местоположение плеча и требуемое положение руки, могут быть получены потенциальные местоположения локтя, используя обратную кинематику. Учитывая, что длина кости для плеча и предплечья является фиксированной, существует конечный набор потенциальных ориентаций для локтя, после того, как положение плеча и руки будет установлено. Используя знание о скелете человека и временную информацию о локте, может быть выбрано соответствующее местоположение. Используя этот процесс, ориентации могут быть выведены в случаях, когда узлы не являются непосредственно представленными в смешиваемых иерархиях.
Смешение анимаций представлено на фиг.7A и 7B как возникающее на участках B и H. Участок D представляет пример модификации параметров предварительно подготовленной анимации, как описано выше, и участок F представляет пример выбора предварительно подготовленной анимации из их множества, которая в наибольшей степени соответствуют снятому движению пользователя, как описано выше. Следует отметить, что любые из этих опций доступны для связывания между анимацией снятого движения и предварительно подготовленной анимацией, в любом порядке. Примеры, показанные на фиг.7A и 7B, предназначены только для использования в качестве примера. Например, модификация предварительно подготовленной анимации, показанная как возникающая на Участке D при переходе от предварительно подготовленного движения к движению пользователя, может возникнуть при переходе между анимацией снятого движения к предварительно подготовленной анимации.
Смешение анимаций может быть представлено любым соответствующим способом для сглаживания перехода между анимацией живого движения пользователя или жестом и предварительно подготовленной анимацией. Например, технология смешения анимаций может включать в себя интерполяцию между положениями или непрерывное смешение с использованием одной оси или множества осей. Одни из входных данных для технологии смешения анимаций могут представлять собой жест пользователя, который основан на движении пользователя в трехмерном пространстве. Другие входные данные в технологии смешения анимаций могут представлять собой положения, предоставляемые предварительно подготовленной анимацией.
Если жест в точке перехода является неподвижным или приводит к малым движениям, меньшая степень смешения может быть необходимой. Например, в точке № 1 перехода, отснятые движения пользователя могут быть идентифицированы как точка перехода в приложении для игры в боулинг, представляют собой движение пользователя, состоящее в наклоне в талии и выполнении движения захвата над выбранным шаром. Поскольку жесты, обозначающие точку перехода, представляют собой управляемые движения с незначительным движением, величина смешения анимаций от снятого движения пользователя на участке А до предварительно подготовленной анимации на участке C может быть малой. Это представлено малым дифференциалом на графике движения между участком A и участком C. Смешение на участке B для перевода движения на участке А к предварительно подготовленной анимации на участке C, таким образом, требует малой величины смешения анимаций.
В других случаях движение пользователя в точке перехода является большим или движение может изменяться в такой степени между пользователями или приложениями, что большая степень смешения требуется для перехода между живым движением и предварительно подготовленной анимацией. Если точка перехода представляет собой точку с большим движением, выполняемым пользователем, дополнительное смешение может потребоваться для перехода без стыков к предварительно подготовленному движению. В точке перехода чем больше изменяется положение движения пользователя в физическом пространстве от исходного положения предварительно подготовленной анимации, тем больше потребуется степень смешения.
Например, как показано на фиг.7B в точке № 4 перехода, система переходит от предварительно подготовленного замаха назад и движения маха вперед шаром для боулинга к живому движению пользователя, который выполняет мах за пределы плоскости бедер пользователя. В точке перехода анимация снятых движений, то есть движения пользователя, выполняемого от замаха назад до маха вперед, может изменяться от предварительно подготовленной анимации на основе, например, скорости руки пользователя, расстояния от бедер, типа закручивания в запястье пользователя и т.д. Таким образом, график движения на фиг.7B представляет пример смешения анимаций на участке H, который требует большей степени смешения анимаций, для сглаживания перехода от предварительно подготовленной анимации на участке G обратно к анимация жеста на участке I.
Величина используемого смешения может представлять собой фактор неудачного или успешного броска. Например, величина смешения, требуемого для связывания снятого движения и предварительно подготовленной анимации, может соответствовать уровню успеха в приложении. Если приложение представляет собой игру в боулинг, снятое движение обратного замаха пользователя или движение пользователя в точке перехода может значительно отличаться от начального положения предварительно подготовленной анимации.
Такая величина различия между жестом пользователя и предварительно подготовленной анимацией может быть интерпретирована как неудача. Неудача может определять результат броска пользователя шара по линии для боулинга. Например, если точка перехода в предварительно подготовленной анимации обратно к анимации снятого движения представляет собой положение, которое в значительной степени отличается от фактического положения пользователя в физическом пространстве, шар может не быть брошен прямо по дорожке для боулинга или шар может не быть выровнен с кеглями для боулинга. Или, например, если пользователь падает в физическом пространстве в момент, когда он отпускает шар для боулинга, или, например, пытается бросить его сверху вниз, разница между снятым движением и параметрами предварительно подготовленной анимации может свидетельствовать об успехе или неудаче пользователя в игре или в приложении.
Движения или позы, которые занимает пользователь для передачи жеста, могут изменяться с течением времени, и они могут создавать изменение контекста. Например, пользователь может устать и больше не прыгать так высоко, как он прыгал в начале своего сеанса, для передачи жеста прыжка. Кроме того, пользователь может в ходе обучения лучше выполнять движения или позу, ассоциированные с жестом, в связи с чем приемлемые вариации для параметра могут быть снижены так, что два разных жеста с меньшей вероятностью будут распознаны по одному набору движений или позе. В приложении также может быть принято решение представить для пользователя более трудные испытания по мере того, как он становится более искусным, с тем чтобы не потерять его внимание. В другом варианте осуществления приложение может предоставить пользователю более тонкое управление жестами или разрешить использовать больше жестов. Например, внимание начинающего игрока в видеоигре в теннис может быть направлено только на то, чтобы ударить мячом через сетку, не закручивая при этом мяч. Однако, по мере того, как приложение для игры в теннис детектирует, что пользователь улучшил свои способности, оно может ввести или может начать распознавать жесты для верхнего закручивания или обратного закручивания, в дополнение к стандартному удару.
Аналогично, параметры, ассоциированные с точками перехода для приложения, могут изменяться с течением времени, могут изменяться в зависимости от контекста или могут быть выбраны на основе прогнозирований намерения пользователя. Например, для начинающего игрока в видеоигру в теннис больше предварительно подготовленных анимаций может быть желательным, если внимание начинающего игрока направлено только на то, чтобы перебросить мяч через сетку. Таким образом, точки перехода могут быть установлены соответствующим образом. По мере того, как приложение для игры в теннис детектирует, что движения игрока улучшились, оно может модифицировать точки перехода таким образом, чтобы было вставлено меньше предварительно подготовленных анимаций.
Предысторию жестов, включающую в себя положения суставов, скорость, ускорение и т.п., можно использовать для определения намерения пользователя. Эти факторы могут использоваться как исходные факторы для получения параметров для последующих анимаций, управления игрой и для точек перехода, и могут определять инициирование предварительно подготовленной анимации. Например, при движении, выполняемом во время игры в боулинг, если предыстория обратного замаха этого пользователя и движение маха вперед типично находится в пределах определенного диапазона скоростей, предварительно подготовленная анимация с параметрами для движения в соответствии с аналогичной скоростью может быть выбрана для этого пользователя для смешения со снятым движением пользователя.
Второй пользователь может заменить первого пользователя при предоставлении входных данных, и второй пользователь может иметь сильно отличающиеся способы ведения жестов. В варианте осуществления принятые изображения с глубиной могут быть разобраны для определения того, что второй пользователь находится на сцене и передает жесты. Таким образом, точки перехода, ассоциированные со вторым пользователем, могут отличаться от точек перехода, ассоциированных с первым пользователем.
Как правило, операция смешения анимаций содержит отбор двух или больше входных данных и генерирование плавного выхода. Различные технологии для смешения анимаций могут использоваться для связывания анимации движения пользователя и одной или больше авторских анимаций в последовательных или параллельных конфигурациях. Эти технологии включают в себя аддитивное и субтрактивное смешение, линейную интерполяцию, сферическую линейную интерполяцию, сдвиг по фазе, линейное смешение, растворение, билинейное смешение, комбинированное смешение, зеркальное смешение, смешение с фиксацией, смешение множества треков, организацию уровней и т.д. Например, организация уровней выполняется, когда две анимации выполняются одновременно и результат представляет их комбинацию. Смешение анимаций может подразумевать формирование кадров между кадрами анимации снятого движения пользователя или жеста и предварительно подготовленной анимации. Разные анимации формируют эти промежуточные кадры различными способами. Например, положения точки могут быть интерполированы с использованием линейной или сплайновой интерполяции.
Основная операция смешения анимаций может включать в себя линейную интерполяцию. Переход между анимацией жеста ходьбы и предварительно подготовленной анимацией бега может включать в себя смешивание конца измеренных параметров анимации жеста во время ходьбы с началом параметров предварительно подготовленной анимации бега. Эта операция может содержать расчет разности в положениях между двумя анимациями и использование линейной интерполяции для представления движения, которое могло бы возникнуть между двумя положениями. Отображение интерполированного движения между анимацией снятого движения пользователя и предварительно подготовленной анимацией может обеспечивать переход без стыков или практически без стыков между анимациями. Длительность перехода может представлять собой функцию переменных ускорения и скорости, которые измеряются по снятому движению пользователя в физическом пространстве, которые используются для сглаживания перехода от анимации жеста во время ходьбы до предварительно подготовленной анимации для бега.
И снова рассматривая переход от ходьбы к предварительно подготовленному бегу, если дельта между окончанием параметров анимации жеста во время ходьбы в начало параметров анимации предварительно подготовленного бега будет малой, простая технология растворения для смешения анимаций может быть достаточной. Если переход будет обоснованно быстрым, растворение от последнего положения жеста во время ходьбы в начало предварительно подготовленного жеста для бега может быть достаточным. В других случаях может потребоваться поддерживать состояние перехода в течение большей длительности, формируя несколько шагов движения трусцой между предварительно подготовленными анимациями ходьбы и бега для соединения зазора в их соответствующих скоростях перемещения. Традиционные технологии смешения анимаций могут использоваться для генерирования движения бега трусцой от одной или больше предварительно подготовленных анимаций ходьбы и бега.
Однако часто дельта между отснятым движением и предварительно подготовленной анимацией получается со смещением из-за переменного движения пользователя. Таким образом, ходьба и бег могут быть не в фазе, и, таким образом, смешение будет имитировать движение, которое смешивает или связывает две анимации вместе. Может быть определено смещение между этими двумя анимациями, включая смещения по положению, скорости и т.п. Предварительно подготовленная анимация может быть выбрана на основе параметров жеста пользователя в точке перехода. Кроме того, параметры предварительно подготовленной анимации могут быть отрегулированы синхронно с параметрами живого движения пользователя. Если требуемая предварительно подготовленная анимация представляет собой быстрый бег и снятое движение представляет собой медленную ходьбу, большее количество кадров движения может быть вставлено для представления перехода от снятого движения к предварительно подготовленной анимации.
В некоторых случаях может быть желательно позволить пользователю наблюдать анимацию для направления смешения между набором предварительно подготовленных анимаций. Таким образом, физические действия пользователя становятся входными параметрами, направляющими технологию смешения. Например, приложение может содержать множество профессионально созданных или снятых движений анимаций во время замаха в игре в теннис. В такой палитре анимаций замаха каждый замах может быть классифицирован по любому количеству параметров, таких как скорость замаха и дуга, которой следует запястье в пространстве. Когда пользователя наблюдают при выполнении жеста замаха при игре в теннис, также можно наблюдать соответствующий набор параметров этого действия в физическом пространстве. Используя наблюдаемые параметры пользователя в качестве направляющей, одна или больше предварительно подготовленных анимаций затем могут быть выбраны и могут быть смешаны для получения выглядящего профессионально удара при игре в теннис, который наилучшим образом имитирует наблюдаемое действие пользователя. Такое смешение может возникнуть в режиме реального времени, по мере того, как пользователь выполняет свой собственный замах, постоянно регулируя параметры смешения между предварительно подготовленными анимациями. Такое непрерывное регулирование может использоваться для сведения к минимуму любой воспринимаемой задержки между физическим движением пользователя и соответствующими действиями аватара в пространстве игры.
Различные инструменты используются для описания анимации в точках перехода и в кадрах для отображения. Некоторые способы могут использовать точечные положения трехмерной скелетной модели пользователя для определения движения или жеста пользователя. В других способах используются матрицы или углы Эйлера для описания положений движения/жеста пользователя и/или предварительно подготовленной анимации.
Вспомогательные данные или параметры управления также могут использоваться как входные данные для выполнения алгоритмов сглаживания, включающих в себя параметры, специфичные для предварительно подготовленной анимации и/или анимации движения пользователя. Например, точки перехода обозначают опорную точку для инициализации перехода от одной анимации к следующей. Длительность смешения может обозначать длительность смешения в кадрах. Тип смешения может представлять собой обозначение того, как сглаживание должно быть связано между предварительно подготовленной анимацией и/или анимацией движения пользователя. Другие параметры, хотя они и не составляют включительный список, могут представлять степень движения анимации, скорости различных опорных точек (например, суставов или конечностей), дельту между анимацией движения пользователя и предварительно подготовленной анимацией и т.д. Используя точки перехода и параметры, относящиеся к анимации движения пользователя и предварительно подготовленной анимации, предназначенной для связывания, смешивание анимаций позволяет плавно смешивать анимации.
На фиг.8 представлена блок-схема последовательности операций примерного способа 500 для смешивания анимаций. Примерный способ 500 может быть воплощен с использованием, например, устройства 20 съемки и/или вычислительного окружения 12 системы 10 распознавания, анализа и отслеживания цели, описанной со ссылкой на фиг.1A-B. В соответствии с примерным вариантом осуществления, цель может представлять собой цель-человека, цель - человека с объектом, две или больше целей - людей или тому подобное, которые могут быть сканированы для генерирования модели, такой как скелетная модель, сетчатая модель человека или любое другое соответствующее его представление. Модель можно затем использовать для взаимодействия с приложением, которое может исполняться вычислительным окружением 12, описанным выше со ссылкой на фиг.1A-1B. В соответствии с примерным вариантом осуществления цель может быть сканирована для генерирования модели, когда приложение может быть запущено или начато, например в вычислительном окружении 12, и/или периодически во время исполнения приложения, например в вычислительном окружении 12.
Например, как описано выше, цель может включать в себя пользователя 18, описанного выше со ссылкой на фиг.1A-1B. Цель может быть сканирована для генерирования скелетной модели, например, пользователя 18, которого можно отслеживать таким образом, что физические движения или движения пользователя 18 могут действовать как интерфейс пользователя в режиме реального времени, который регулирует и/или управляет параметрами приложения, такого как электронная игра. Например, отслеживаемые движения пользователя можно использовать для перемещения персонажа или аватара на экране в электронной ролевой игре; для управления транспортным средством на экране в электронной игре, представляющей гонки; для управления построением или организацией объектов в виртуальной среде; или для выполнения любых других соответствующих элементов управления приложением.
В соответствии с одним вариантом осуществления, на этапе 805 управляемая компьютером система камеры, например, может измерять информацию с глубиной, относящуюся к жесту пользователя. Например, система распознавания, анализа и отслеживания цели может включать в себя устройство съемки, такое как устройство 20 съемки, описанное выше со ссылкой на фиг.1A-2. Устройство съемки может снимать или наблюдать сцену, которая может включать в себя одну или больше целей. В примерном варианте осуществления устройство съемки может представлять собой камеру с глубиной, выполненную с возможностью получения информации с глубиной, ассоциированной с одной или больше целями на сцене, используя любую соответствующую технологию, такую как анализ времени полета, структурированный анализ света, анализ стереоскопических представлений или тому подобное. Кроме того, информация с глубиной может быть предварительно обработана либо как изображение с глубиной, генерируемое из данных с глубиной и данных цвета, либо даже как выявленные данные изображения с глубиной, с получением скелетной карты любого пользователя в изображении.
В соответствии с примерным вариантом осуществления, информация с глубиной может включать в себя изображение с глубиной. Изображение с глубиной может представлять собой множество наблюдаемых пикселей, где каждый наблюдаемый пиксель имеет наблюдаемое значение с глубиной. Например, изображение с глубиной может включать в себя двумерную (2D) область пикселей снимаемой сцены, где каждый пиксель в двумерной области пикселей может представлять значение глубины, такое как длина или расстояние, например в сантиметрах, миллиметрах или тому подобное, объекта в сцене, снимаемой с помощью устройства съемки.
На этапе 810 система может идентифицировать точки перехода и параметры таким образом, что когда они удовлетворяются, они обозначают точку перехода. Точка перехода может представлять собой точку идентификации для жеста или между жестами, где система выполняет переходы между анимацией снятого движения или жестом пользователя и предварительно подготовленной анимацией. В примерном варианте осуществления точка перехода может представлять собой точку идентификации жеста или между жестами, которая обеспечивает обозначение для переключения на предварительно подготовленную анимацию. Идентификация точки перехода может содержать определение того, что пользователь переместился таким образом, что он столкнулся с определенными требованиями точки перехода (такими, как рука находится выше головы). В варианте осуществления пользователь может использовать голос для выполнения регулировки, обозначающей или разъясняющей движение. Например, пользователь может иметь возможность выполнять жест пения, открывая и закрывая свой рот, но также и устанавливать определенную ноту такого жеста пения, когда он поет эту ноту. Кроме того, пользователь может иметь возможность выполнения жеста "сильного удара" в противоположность жесту "обычного удара", выкрикивая, во время выполнения жеста в остальном "обычного удара". В другом примерном варианте осуществления точка перехода представляет собой точку, идентифицирующую предварительно подготовленную анимацию, которая инициирует возврат к анимации снятого движения.
На этапе 815 выполняют определение того, удовлетворяются или нет параметры точки перехода, на основе сравнения параметров снятого движения или предварительно подготовленной анимации (в зависимости того, что из них в данный момент используется) для параметров, определенных для конкретной точки перехода. Если параметры перехода не удовлетворяются, измерение информации с глубиной продолжается на этапе 805.
Если параметры точки перехода удовлетворяются на этапе 815, операция 820 определяет, основана или нет текущая анимация на снятом движении или представляет собой предварительно подготовленную анимацию. Если предварительно подготовленная анимация выполняется в данный момент времени, анимация снятого движения пользователя связывается с этой предварительно подготовленной анимацией, например, через технологии смешения анимаций. Если текущая анимация основана на снятом движении, точка перехода обозначает, что требуется выбрать предварительно подготовленную анимацию.
На этапе 822 система выбирает по меньшей мере одну предварительно подготовленную анимацию. Множество предварительно подготовленных анимаций могут представлять собой одно и то же требуемое движение, и вычислительное окружение может выбирать из множества предварительно подготовленную анимацию, которая является наиболее соответствующей. Например, множество опций выбора предварительно подготовленных анимаций может быть доступно для представления замаха назад при подаче в игре в теннис. Параметры положения и скорости движения обратного замаха могут изменяться для каждой из множества предварительно подготовленных анимаций, которые представляют обратный замах. Система может выбирать предварительно подготовленную анимацию с параметрами, наиболее похожими на снятое движение пользователя в точке перехода.
Если больше, чем одна предварительно подготовленная анимация будет выбрана на этапе 822, множество предварительно подготовленных анимаций могут быть скомбинированы определенным образом для генерирования новой предварительно подготовленной анимации, которая желательна для связывания с анимацией отснятого движения пользователя. Например, на этапе 832 множество предварительно подготовленных анимаций могут быть смешаны для связывания с анимацией снятого движения пользователя на этапе 834.
На этапе 832 могут быть модифицированы параметры по меньшей мере одной выбранной предварительно подготовленной анимации. В некоторых случаях предварительно подготовленная анимация может быть модифицирована до такой точки, что требуется незначительное сглаживание или сглаживание не требуется вообще, для связывания предварительно подготовленной анимации и анимации отснятого движения на этапе 834. Например, параметры снятого движения пользователя могут быть проанализированы, и предварительно подготовленная анимация может быть выбрана для связывания. Перед связыванием предварительно подготовленная анимация может быть модифицирована так, чтобы она более близко представляла снятое движение пользователя в точке перехода. Например, положение руки при анимации может быть модифицировано так, чтобы оно более близко представляло положение руки снятого движения пользователя.
После выбора по меньшей мере одной предварительно подготовленной анимации на этапе 822, на этапе 825 связывают анимацию снятого движения пользователя и предварительно подготовленную анимацию. На этапе 830 предоставляют отображение смешанного представления движения пользователя и предварительно подготовленной анимации. Таким образом, система может выбирать или модифицировать предварительно подготовленную анимацию, которая должна быть связана с анимацией снятого жеста пользователя. Система может выбирать предварительно подготовленную анимацию и затем сглаживать переход между анимациями, например, используя технологии смешивания, или система может выполнять комбинацию обоих подходов. Выбор предварительно подготовленной анимации может быть выполнен исходя из одной опции, выбранной на основе движения, предоставленного предварительно подготовленной анимацией, или предварительно подготовленная анимация может быть выбрана из множества предварительно подготовленных анимаций, каждая из которых представляет требуемое движение для анимации.
Следует понимать, что конфигурации и/или подходы, описанные здесь, представляют собой примеры по своей природе, и эти конкретные варианты осуществления или примеры не следует рассматривать как ограничения. Конкретные процедуры или способы, описанные здесь, могут представлять собой одну или большее количество стратегий обработки. При этом различные действия, представленные здесь, могут быть выполнены в показанной последовательности, в других последовательностях, параллельно или тому подобное. Аналогично, порядок описанных выше процессов может быть изменен.
Кроме того, в то время как настоящее раскрытие было описано в связи с конкретными аспектами, которые представлены на различных чертежах, следует понимать, что можно использовать другие аналогичные аспекты или модификации, и добавление может быть выполнено для описанных аспектов для выполнения той же функции настоящего раскрытия без отхода от них. Предмет изобретения по настоящему раскрытию включает в себя все новые и неочевидные комбинации и подкомбинации различных процессов, систем и конфигураций и другие свойства, функции, действия и/или свойства, раскрытые здесь, а также любые и все их эквиваленты. Таким образом, способы и устройство раскрытых вариантов осуществления, или определенных аспектов, или их частей, могут принимать форму программного кода (то есть инструкций), внедренных в физический носитель информации, такой как гибкие дискеты, CD-ROM, накопители на жестких дисках или любой другой машиночитаемый носитель информации. Когда программный код загружается в и исполняется посредством машины, такой как компьютер, машина становится устройством, сконфигурированным для выполнения на практике раскрытых вариантов осуществления.
В дополнение к конкретным вариантам осуществления, явно представленным здесь, другие аспекты и варианты осуществления будут очевидны для специалиста в данной области техники при учете раскрытого здесь описания. Поэтому, настоящее раскрытие не должно быть ограничено каким-либо одиночным аспектом, а скорее его требуется рассматривать по ширине и в объеме соответствующей приложенной формулы изобретения. Например, различные процедуры, описанные здесь, могут быть воплощены с использованием аппаратных средств или программных средств или комбинации обоих этих подходов.
название | год | авторы | номер документа |
---|---|---|---|
ВОПЛОЩЕНИЕ ВИЗУАЛЬНОГО ПРЕДСТАВЛЕНИЯ С ПОМОЩЬЮ ИЗУЧЕННОГО ВВОДА ОТ ПОЛЬЗОВАТЕЛЯ | 2010 |
|
RU2554548C2 |
ВЫРАЖЕНИЕ ВИЗУАЛЬНОГО ПРЕДСТАВЛЕНИЯ, ОСНОВАННОЕ НА ВЫРАЖЕНИИ ИГРОКА | 2010 |
|
RU2560794C2 |
АВТОМАТИЧЕСКОЕ ГЕНЕРИРОВАНИЕ ВИЗУАЛЬНОГО ПРЕДСТАВЛЕНИЯ | 2010 |
|
RU2560340C2 |
СИСТЕМА И СПОСОБЫ ДЛЯ ПРИМЕНЕНИЯ АНИМАЦИЙ ИЛИ ДВИЖЕНИЙ К ПЕРСОНАЖУ | 2010 |
|
RU2544770C2 |
СИСТЕМЫ И СПОСОБЫ ПРИМЕНЕНИЯ ОТСЛЕЖИВАНИЯ МОДЕЛИ ДЛЯ ЗАХВАТА ДВИЖЕНИЙ | 2010 |
|
RU2580450C2 |
МАНИПУЛИРОВАНИЕ ВИРТУАЛЬНЫМ ОБЪЕКТОМ | 2010 |
|
RU2555228C2 |
СПОСОБ И СИСТЕМА ДЛЯ АВТОМАТИЗИРОВАННОГО ПРЕДОХРАНЕНИЯ ОТ СТОЛКНОВЕНИЙ И СОХРАНЕНИЯ КОМПОЗИЦИИ КАМЕРЫ | 2018 |
|
RU2745828C1 |
ЖЕСТОВЫЕ СОКРАЩЕНИЯ | 2010 |
|
RU2574830C2 |
СОЦИАЛЬНОЕ ИЗМЕНЕНИЕ ВИРТУАЛЬНОГО АВАТАРА | 2009 |
|
RU2536354C2 |
СЕМАНТИЧЕСКОЕ МАСШТАБИРОВАНИЕ | 2011 |
|
RU2611970C2 |
Изобретение относится к компьютерной технике. Технический результат - обеспечение эффективного распознавания жестов. Способ связывания анимаций, содержащий этапы, на которых: принимают данные изображения, которые представляют снятое движение; выбирают предварительно подготовленную анимацию; изменяют положение в предварительно подготовленной анимации в качестве реакции на данные предыстории, связанные с пользователем; идентифицируют по меньшей мере один параметр, который обозначает точку перехода, причем удовлетворение этому по меньшей мере одному параметру инициирует связывание анимации снятого движения и предварительно подготовленной анимации; связывают анимацию снятого движения и предварительно подготовленную анимацию посредством по меньшей мере последовательного отображения снятого движения и предварительно подготовленной анимации. 3 н. и 19 з.п. ф-лы, 15 ил.
1. Способ связывания анимаций, содержащий этапы, на которых:
принимают данные изображения, которые представляют снятое движение;
выбирают предварительно подготовленную анимацию;
изменяют положение в предварительно подготовленной анимации в качестве реакции на данные предыстории, связанные с пользователем;
идентифицируют по меньшей мере один параметр, который обозначает точку перехода, причем удовлетворение этому по меньшей мере одному параметру инициирует связывание анимации снятого движения и предварительно подготовленной анимации;
связывают анимацию снятого движения и предварительно подготовленную анимацию посредством по меньшей мере последовательного отображения снятого движения и предварительно подготовленной анимации.
2. Способ по п.1, в котором связывание анимации снятого движения и предварительно подготовленной анимации содержит смешивание анимаций снятого движения с предварительно подготовленной анимацией или смешивание предварительно подготовленной анимации с анимацией снятого движения.
3. Способ по п.2, в котором при выборе предварительно подготовленной анимации предварительно подготовленную анимацию выбирают из множества предварительно подготовленных анимаций.
4. Способ по п.2, в котором связывание анимации снятого движения и предварительно подготовленной анимации содержит смешивание параметров снятого движения с по меньшей мере одним из исходных параметров предварительно подготовленной анимации и конечных параметров предварительно подготовленной анимации.
5. Способ по п.1, дополнительно содержащий этапы, на которых выбирают множество предварительно подготовленных анимаций и смешивают это множество предварительно подготовленных анимаций для генерирования новой предварительно подготовленной анимации и выбирают эту новую предварительно подготовленную анимацию для связывания с анимацией снятого движения.
6. Способ по п.1, в котором по меньшей мере один параметр, который обозначает точку перехода, устанавливается на основе по меньшей мере одного из типа приложения, предыстории жеста, степени трудности жеста, избыточности жеста, контекста окружающей среды, уровня навыков и культурного контекста.
7. Способ по п.1, в котором величина смешивания, используемая для смешивания анимации снятого движения с предварительно подготовленной анимацией, соответствует уровню успеха в приложении.
8. Способ по п.1, дополнительно содержащий этап, на котором прогнозируют намерение снятого движения, при этом предварительно подготовленную анимацию выбирают на основе спрогнозированного намерения.
9. Способ по п.1, в котором снятое движение представляет собой живое движение цели в физическом пространстве.
10. Способ связывания анимаций, содержащий этапы, на которых:
принимают данные изображения, которые представляют жест;
выбирают предварительно подготовленную анимацию;
изменяют положение в предварительно подготовленной анимации в качестве реакции на данные предыстории, связанные с пользователем;
идентифицируют по меньшей мере один параметр, который обозначает точку перехода, причем удовлетворение этому по меньшей мере одному параметру инициирует связывание анимации жеста и предварительно подготовленной анимации;
связывают анимацию жеста и предварительно подготовленную анимацию посредством по меньшей мере последовательного отображения жеста и предварительно подготовленной анимации.
11. Способ по п.10, в котором жест является жестом, применяемым в игре.
12. Способ по п.10, в котором при выборе предварительно подготовленной анимации предварительно подготовленную анимацию выбирают из множества предварительно подготовленных анимаций.
13. Способ по п.10, дополнительно содержащий этапы, на которых выбирают множество предварительно подготовленных анимаций и смешивают это множество предварительно подготовленных анимаций для генерирования новой предварительно подготовленной анимации и выбирают эту новую предварительно подготовленную анимацию для связывания с анимацией жеста.
14. Способ по п.10, в котором при связывании анимации жеста и предварительно подготовленной анимации связывают анимацию жеста с предварительно подготовленной анимацией или связывают предварительно подготовленную анимацию с анимацией жеста.
15. Способ по п.10, в котором при связывании анимации жеста и предварительно подготовленной анимации связывают параметры жеста в точке перехода с по меньшей мере одним из исходных параметров предварительно подготовленной анимации и конечных параметров предварительно подготовленной анимации.
16. Способ по п.10, в котором по меньшей мере один параметр, который обозначает точку перехода, устанавливается на основе по меньшей мере одного из типа приложения, предыстории жеста, степени трудности жеста, избыточности жеста, контекста окружающей среды, уровня навыков и культурного контекста.
17. Способ по п.10, в котором величина смешивания, требующаяся для смешивания анимации жеста и предварительно подготовленной анимации, соответствует уровню успеха в приложении.
18. Способ по п.10, дополнительно содержащий этап, на котором прогнозируют намерение жеста, при этом предварительно подготовленную анимацию выбирают на основе спрогнозированного намерения.
19. Система для смешения анимаций, содержащая:
компонент устройства съемки, при этом компонент устройства съемки принимает данные изображения, которые представляют снятое движение;
процессор, при этом процессор исполняет машиноисполняемые инструкции, причем машиноисполняемые инструкции содержат инструкции:
выбирать предварительно подготовленную анимацию,
изменять положение в предварительно подготовленной анимации в качестве реакции на данные предыстории, связанные с пользователем,
идентифицировать по меньшей мере один параметр, который обозначает точку перехода, причем удовлетворение этому по меньшей мере одному параметру инициирует смешивание анимации снятого движения с предварительно подготовленной анимацией;
в точке перехода последовательно отображать анимацию снятого движения и предварительно подготовленную анимацию.
20. Система по п.19, в которой отображение анимации снятого движения и предварительно подготовленной анимации содержит смешивание анимации снятого движения с предварительно подготовленной анимацией или смешивание предварительно подготовленной анимации с анимацией снятого движения.
21. Система по п.19, дополнительно содержащая устройство дисплея для отображения смешиваемой анимации снятого движения и предварительно подготовленной анимации.
22. Система по п.19, при этом снятое движение представляет собой живое движение цели в физическом пространстве, снимаемом устройством съемки.
Пломбировальные щипцы | 1923 |
|
SU2006A1 |
Станок для изготовления деревянных ниточных катушек из цилиндрических, снабженных осевым отверстием, заготовок | 1923 |
|
SU2008A1 |
Регулятор давления газа | 1986 |
|
SU1645944A1 |
Станок для изготовления деревянных ниточных катушек из цилиндрических, снабженных осевым отверстием, заготовок | 1923 |
|
SU2008A1 |
Способ и приспособление для нагревания хлебопекарных камер | 1923 |
|
SU2003A1 |
Станок для изготовления деревянных ниточных катушек из цилиндрических, снабженных осевым отверстием, заготовок | 1923 |
|
SU2008A1 |
Авторы
Даты
2014-10-10—Публикация
2010-03-02—Подача