Перекрестные ссылки на родственные заявки
[0001] Данная заявка притязает на приоритет предварительной заявки на патент (США) № 62/473107, поданной 17 марта 2017 года, предварительной заявки на патент (США) № 62/525037, поданной 26 июня 2017 года, и предварительной заявки на патент (США) № 62/551134, поданной 28 августа 2017 года, каждая из которых полностью содержится в данном документе по ссылке.
Область техники, к которой относится изобретение
[0002] Настоящее раскрытие сущности относится к области техники программных инструментальных средств для автоматизированной кинематографии.
Уровень техники
[0003] В мире трехмерной виртуальной кинематографии, предусмотрены процедурные камеры для съемки сцен с переменными сценариями. Процедурные камеры программируются с возможностью адаптироваться до некоторой степени к сцене и объектам в ней. Например, чтобы выполнять съемку сцены, процедурная камера может следовать за субъектом через трехмерное окружение при поддержании расстояния и фиксированной ориентации относительно субъекта. Тем не менее, когда процедурные камеры выполняют съемку переменных сценариев (например, субъекта в движении, других трехмерных объектов в движении и т.д.), предусмотрено множество случаев, в которых субъект должен загораживаться от вида камеры посредством некоторого промежуточного объекта или перемещаться за пределы композиции съемки. В некоторых случаях, камера, следующая за субъектом, может застревать позади объекта, при попытке следовать за субъектом, либо она может проникать в объект, чтобы поддерживать определенную съемку относительно субъекта.
[0004] Один пример процедурной использования камеры, при котором вышеуказанные проблемы могут становиться значимыми, состоит в записи и широковещательной передаче видеоигр; при этом неиграющий хост просматривает и широковещательно передает свой вид, наряду с комментарием, онлайновой многопользовательской видеоигры в реальном времени. Эти неиграющие пользователи упоминаются как "хосты", и их широковещательная передача представляет собой хостинг игры. Множество третьих сторон могут настраиваться и просматривать хостящиеся игры через веб–узлы, такие как Twitch® и YouTube®. Хосты используют процедурные камеры для того, чтобы записывать видеоигру, и трудности процедурных камер, описанных выше, приводят к плохому кинематографическому качеству (например, композиции съемки, быстрых переключений камеры и т.п.) и к плохому пользовательскому восприятию для аудитории видеоигр.
Краткое описание чертежей
[0005] Дополнительные признаки и преимущества настоящего раскрытия сущности должны становиться очевидными из последующего подробного описания, рассматриваемого в комбинации с прилагаемыми чертежами, на которых:
[0006] Фиг. 1 является схематическим видом, иллюстрирующим кинематографическую систему проведения видеоигр, включающую в себя модуль управления коллайдерами и модуль управления композицией, в соответствии с одним вариантом осуществления;
[0007] Фиг. 2A является схематическим видом, иллюстрирующим снимок экрана, показывающий целевую зону композиции и ее окружающие граничные зоны, в соответствии с одним вариантом осуществления;
[0008] Фиг. 2B является схематическим видом, иллюстрирующим снимок экрана, показывающий целевую зону композиции и ее окружающие граничные зоны, в соответствии с одним вариантом осуществления;
[0009] Фиг. 3 является схематическим видом, показывающим композицию–субъект, в соответствии с одним вариантом осуществления;
[0010] Фиг. 4 является блок–схемой последовательности операций, показывающей способ управления композицией, в соответствии с одним вариантом осуществления;
[0011] Фиг. 5 является схематическим видом, показывающим стержни коллайдера на камере, в соответствии с одним вариантом осуществления;
[0012] Фиг. 6A является блок–схемой последовательности операций, показывающей способ управления коллайдерами, в соответствии с одним вариантом осуществления;
[0013] Фиг. 6B является блок–схемой последовательности операций способа, показывающей инициирование способа управления коллайдерами, в соответствии с одним вариантом осуществления;
[0014] Фиг. 6C является блок–схемой последовательности операций, показывающей способ управления коллайдерами, в соответствии с одним вариантом осуществления;
[0015] Фиг. 6D является блок–схемой последовательности операций, показывающей способ управления коллайдерами, в соответствии с одним вариантом осуществления;
[0016] Фиг. 6E является принципиальной схемой виртуального окружения, в котором модуль управления коллайдерами перемещает камеру, чтобы избегать объекта, в соответствии с вариантом осуществления;
[0017] Фиг. 6F является блок–схемой последовательности операций, показывающей способ управления коллайдерами, в соответствии с одним вариантом осуществления;
[0018] Фиг. 6G является принципиальной схемой виртуального окружения, в котором модуль управления коллайдерами перемещает камеру, чтобы избегать объекта, в соответствии с вариантом осуществления;
[0019] Фиг. 7A, 7B и 7C являются принципиальными схемами экрана камеры, на которых загораживающий объект перемещается по экрану и закрывает субъект;
[0020] Фиг. 8A является снимком экрана, иллюстрирующим панель пользовательского интерфейса для регулируемой по состояниям камеры;
[0021] Фиг. 8B является снимком экрана, иллюстрирующим динамически заполненный раскрывающийся список состояний в игре;
[0022] Фиг. 8C является снимком экрана, иллюстрирующим результат щелчка кнопки камеры;
[0023] Фиг. 8D является снимком экрана, иллюстрирующим то, как регулируемые по состояниям камеры могут смешиваться между собой;
[0024] Фиг. 8E является снимком экрана, иллюстрирующим определяемый пользователем список всех камер, которые должны быть доступными для регулируемой по состояниям камеры со средствами управления на предмет приоритета;
[0025] Фиг. 8F является снимком экрана, иллюстрирующим средства управления на предмет полного приоритета одной системы регулируемых по состояниям камер;
[0026] Фиг. 9 является схемой примерного наголовного дисплея (HMD), носимого пользователем;
[0027] Фиг. 10 является блок–схемой, иллюстрирующей примерную программную архитектуру, которая может использоваться в сочетании с различными аппаратными архитектурами, описанными в данном документе; и
[0028] Фиг. 11 является блок–схемой, иллюстрирующей компоненты машины 900, согласно некоторым примерным вариантам осуществления, выполненной с возможностью считывать инструкции из машиночитаемого носителя (например, машиночитаемого носителя хранения данных) и выполнять любую одну или более технологий, поясненных в данном документе.
[0029] Следует отметить, что на всех прилагаемых чертежах аналогичные признаки идентифицируются посредством аналогичных ссылок с номерами.
Подробное описание изобретения
[0030] Нижеследующее описание и чертежи иллюстрируют раскрытие сущности и не должны считаться ограничивающими раскрытие сущности. Множество конкретных подробностей описываются для того, чтобы предоставлять полное понимание настоящего раскрытия сущности. Тем не менее, в определенных случаях, подробности, известные специалистам в данной области техники, не описываются с тем, чтобы исключать затруднение понимания описания настоящего раскрытия сущности.
[0031] В данном документе описываются системы и способы для коллайдеров камеры и сохранения композиции съемки в трехмерном виртуальном окружении, которые предотвращают застревание виртуальной процедурной камеры позади объекта или проникновение в объект, при съемке субъекта, также при одновременном поддержании композиции экрана субъекта в съемке камеры.
[0032] Терминология: Во всем описании в данном документе, термин "субъект" означает объект в трехмерном виртуальном окружении, который представляет собой желательный основной предмет внимания виртуальной камеры в ходе съемки (например, субъект зачастую представляет собой фокус камеры).
[0033] Обращаясь теперь к чертежам, проиллюстрированы системы и способы для предохранения от столкновений и сохранения композиции камеры в соответствии с вариантами осуществления раскрытия сущности. Фиг. 1 является диаграммой компонентов кинематографического устройства для проведения видеоигр, которое включает в себя устройство с игровым "движком" и ассоциированные периферийные устройства. В примерном варианте осуществления, кинематографическое устройство для проведения видеоигр представляет собой вычислительное устройство, управляемое пользователем. Пользователь может представлять собой игрока онлайновой многопользовательской игры (например, в киберспортивной игре) или широковещательный хост (или просто "хост"), который предоставляет различные функции широковещательной передачи, ассоциированные с видеоигрой. Кинематографическое устройство для проведения видеоигр включает в себя одно или более устройств отображения (например, традиционные компьютерные мониторы, носимые VR–устройства и т.д.) и одно или более устройств ввода (например, клавиатуру, мышь, карманное указательное устройство, сенсорный экран и т.п.). Кинематографическое устройство для проведения видеоигр также включает в себя запоминающее устройство, один или более центральных процессоров (CPU), один или более графических процессоров (GPU) и один или более сетевых адаптеров (например, проводных или беспроводных сетевых адаптеров, предоставляющих возможности сетевых подключений, используемые для видеоигры).
[0034] В примерном варианте осуществления, кинематографическое устройство для проведения видеоигр включает в себя игровой "движок" (например, выполняемый посредством CPU или GPU), который представляет видеоигру (или моделирование) пользователю. Игровой "движок" включает в себя модуль управления коллайдерами и модуль управления композицией, которые предоставляют кинематографическую функциональность, как описано в данном документе. Каждый из модуля управления композицией и модуля управления коллайдерами, а также игрового "движка" включает в себя машиноисполняемые инструкции, постоянно размещающиеся в запоминающем устройстве, которые выполняются посредством CPU или GPU в ходе работы. Игровой "движок" обменивается данными с устройствами отображения, а также с другими аппаратными средствами, такими как устройство(а) ввода. Модуль управления композицией и модуль управления коллайдерами могут интегрироваться непосредственно в игровом "движке" или могут реализовываться как внешний элемент программного обеспечения (например, подключаемый модуль или другое независимое программное обеспечение видеообработки).
[0035] В соответствии с вариантом осуществления, модуль управления композицией изменяет ориентацию виртуальной камеры для того, чтобы поддерживать конкретную часть субъекта (упоминается в данном документе в качестве субъекта–цели или просто цели) в конкретной области на экране камеры (упоминается в данном документе в качестве целевой зоны). Способ, описанный в данном документе, представляет собой высокопроизводительный точный способ для поддержания позиции цели в экранном пространстве. Модуль управления композицией включает в себя временные скорости отслеживания, а также ограничивающие прямоугольники в пределах экрана камеры для того, чтобы задавать то, насколько быстро он ориентирует камеру с возможностью позиционировать цель в требуемой целевой зоне. Модуль управления композицией, описанный в данном документе, управляет ориентацией камеры, но не должен обязательно управлять расстоянием от камеры до субъекта, и в силу этого, может использоваться с другими системами, которые управляют позицией камеры (в абсолютном трехмерном пространстве или в позиции относительно субъекта).
[0036] В соответствии со многими вариантами осуществления, на фиг. 2A и фиг. 2B показан экран камеры, содержащий границы для модуля управления композицией съемок. Композиция субъекта задается посредством размещения субъекта в специальной области двумерного пространства экрана камеры. Специальная область упоминается как целевая зона. В ходе осуществления съемки, модуль управления композицией динамически изменяет ориентацию камеры для того, чтобы поддерживать цель в целевой зоне. Как видно на чертеже, целевая зона на экране камеры задается посредством нескольких наборов границ. При визуализации, она выглядит как три участка экрана: целевая зона, которая находится в пределах всех мягких границ, мягкая граничная зона, которая занимает пространство между мягкими границами и жесткими границами, и жесткая граничная зона, которая занимает пространство за пределами жестких граничных зон. Границы (и в силу этого целевая зона) задаются пользователем или могут выбираться посредством автоматизированной процедуры с использованием кинематографических правил.
[0037] В некоторых вариантах осуществления, субъект может представлять собой композиционный субъект, который включает в себя несколько целей, каждая из которых может перемещаться независимо. Например, композиционный субъект может включать в себя двух или более игроков в команде или игрока и фиксированное местоположение или другой объект–неигрока. Модуль управления композицией может использовать камеру, чтобы отслеживать композиционный субъект, позиционирование и ориентацию камеры на основе аспектов местоположения и ориентации композиционного субъекта или его целей (например, в качестве центра массового вычисления). Композиционный субъект может использоваться в качестве логической группы и может использоваться в качестве "Посмотреть", обеспечивая использование композиционного субъекта в качестве цели для просмотра другими пользователями. В некоторых вариантах осуществления, позиция композиционного субъекта может задаваться в качестве центра ограничивающего прямоугольника, который включает в себя все цели композиционного субъекта (например, вычисляться из позиций и радиусов целей композиционного субъекта).
[0038] В некоторых вариантах осуществления, каждой цели в композиционном субъекте может присваиваться относительный весовой коэффициент, который может оказывать влияние на позицию и ориентацию камеры относительно композиционного субъекта. Например, камера может быть наклонена к капитану команды или к члену команды, возглавляющему группу, посредством присваивания возглавляющему члену команды более высокого весового коэффициента, чем другим, например, посредством инструктирования камере сдвигать центр фокуса больше к члену команды с более высоким весовым коэффициентом. В некоторых вариантах осуществления, весовые коэффициенты каждой цели композиционного субъекта могут изменяться динамически на основе действий, предпринимаемых посредством конкретных целей. Например, если один член команды стреляет во врага, в то время как второй член команды является бездействующим и смотрит в другом направлении, активному члену команды может присваиваться более высокий весовой коэффициент. В некоторых вариантах осуществления, средняя ориентация является нормализованной взвешенной суммой кватернионов, представляющих ориентации целей. По сути, например, одновременные действия целей могут инструктировать камере сдвигать центр фокуса больше к активному члену команды, а ориентацию камеры – к ориентации активного члена команды (например, больше к направлению огня активного игрока).
[0039] В некоторых вариантах осуществления, модуль управления композицией может динамически автокадрировать композиционный субъект на основе его позиций. Например, если объекты перемещаются в направлении друг от друга, модуль управления композицией может регулировать поле обзора или позицию камеры, к примеру, так что она включает в себя все цели в композиционном субъекте. В некоторых вариантах осуществления, модуль управления композицией может создавать ограничивающий прямоугольник для композиционного субъекта на основе начальной позиции камеры и оценивать экранное пространство, которое он занимает. В некоторых вариантах осуществления, размеры экранного пространства могут указываться посредством просматривающего пользователя композиционного субъекта (например, как горизонтальный и вертикальный размеры камеры). Камера может регулировать свое поле обзора, чтобы повторно кадрировать композиционный субъект по мере того, как отдельные цели перемещаются. В некоторых вариантах осуществления, повторное кадрирование может осуществляться посредством перемещения камеры в направлении к или от композиционного субъекта (например, вдоль центральной оси цели камеры). В некоторых вариантах осуществления, демпфирование может применяться к действию повторного кадрирования таким образом, что повторное позиционирование камеры осуществляется в течение периода времени, за счет этого исключая неровные переходы.
[0040] Фиг. 3 показывает пример композиции–субъекта с границами целевых зон, в котором субъект представляет собой слона, и субъект–цель представляет собой правый глаз слона. Целевая зона в примере представляет собой область в верхней правой части экрана камеры.
[0041] В соответствии с вариантом осуществления, поведение модуля управления композицией, когда цель находится в каждой из этих 3 зон, характеризуется следующим образом:
[0042] Целевая зона: Если цель находится в целевой зоне, то ориентация камеры не осуществляется, и модуль управления композицией продолжает отслеживать целевую позицию на экране камеры.
[0043] Мягкая граничная зона: Если определяется то, что цель находится между мягкой границей и жесткой границей, то модуль управления композицией ориентирует камеру при требуемой горизонтальной и вертикальной скоростях отслеживания, чтобы перемещать ее в целевую зону. Скорости отслеживания задаются в экранном пространстве.
[0044] Жесткая граничная зона: цели не разрешается находиться за пределами любой из жестких граничных линий. Цель за пределами одной из жестких граничных линий инструктирует модулю управления композицией сразу ориентировать камеру к краю жесткой границы, ближайшей к цели. Отсутствует временная задержка (например, постоянная времени равна нулю) для этого действия, камера перемещается сразу после обнаружения ее позиции за пределами границы.
[0045] Хотя фиг. 2 и фиг. 3 показывают то, что выглядит в качестве симметричного позиционирования горизонтальной и вертикальной границ, эти границы не должны позиционироваться симметрично таким образом, что размер зон может быть асимметричным как влево/вправо, так и вверх/вниз. Кроме того, фиг. 2 и фиг. 3 показывают то, что выглядит в качестве линейных границ под прямым углом друг к другу, создающих прямоугольную целевую зону, прямоугольную мягкую граничную зону и прямоугольную жесткую границу, как показано на фиг. 2B, границы могут быть нелинейными, и форма зон может иметь любую форму.
[0046] Способ отслеживания, описанный в данном документе, обеспечивает возможность отдельного отслеживания вдоль вертикальной и горизонтальной оси экранного пространства. Помимо этого, способ отслеживания использует постоянные времени для каждой границы, чтобы определять количество времени, которое модуль управления композицией может использовать для того, чтобы переориентировать камеру таким образом, что цель должна перемещаться в целевую зону. При 3 описанных зонах, модуль управления композицией регулирует камеру только в том случае, если он обнаруживает отклонение от требуемой композиции (т.е. если цель находится за пределами целевой зоны). Кроме того, переориентация камеры в мягкой граничной зоне представляет собой градуируемую реакцию на основе величины отклонения от границы. Скорость переориентации связана с расстоянием от границы целевой зоны. Этот подход обеспечивает реалистичное человеческое ощущение при перемещении камеры, поскольку чем ближе цель к целевой зоне, тем медленнее реакция камеры (и наоборот). Это является аналогичным перемещениям камер, управляемых посредством людей.
[0047] В примерном варианте осуществления, способ использует вычисления с плавающей запятой с одинарной точностью и формирует высококачественные результаты. Вследствие использования вычислений с плавающей запятой с одинарной точностью, вычислительная нагрузка уменьшается по сравнению с вычислением при использовании вычислений с плавающей запятой с двойной точностью. Это является очень полезным для ситуаций, когда композиция съемки должна задаваться на нескольких камерах одновременно. Например, когда предусмотрено несколько камер в сцене, конкретная композиция каждой камеры может поддерживаться одновременно с использованием этого способа без использования мощного компьютера. По идентичной причине, способ управления композицией, описанный в данном документе, также является очень практичным для мобильного устройства, в котором вычислительная мощность может быть ниже настольного/переносного компьютера. Чтобы сохранять верность с плавающей запятой с использованием только одинарной точности, все вычисления выполняются в координатном пространстве камеры (например, в локальных координатах относительно камеры). Кроме того, вместо использования эйлеровых углов и тригонометрии для того, чтобы определять позицию субъекта на экране и ориентацию камеры, все ориентации и значения вращения вычисляются с использованием кватернионов и векторов единичной длины.
[0048] В соответствии с вариантом осуществления, на фиг. 4 показан способ управления композицией, в котором порядок модуля управления композицией операций для поддержания цели в целевой зоне заключается в следующем для каждой камеры:
[0049] Во–первых, модуль управления композицией преобразует целевую позицию из трехмерных мировых координат в трехмерные пространственные координаты камеры. Затем модуль управления композицией преобразует трехмерные координаты камеры цели в двумерную пространственную позицию порта вида камеры (например, в позицию экрана камеры). Модуль управления композицией затем сравнивает целевую позицию в экранном пространстве с выбранной целевой зоной. Если выбранная целевая зона (например, центральный ограничивающий участок) в пространстве порта вида не содержит цель, то модуль управления композицией должен повторно регулировать ориентацию камеры. Тем не менее, если пространство порта вида содержит цель, то регулирование ориентации камеры не требуется, и модуль управления композицией может возвращаться к этапу 1 и отслеживать целевую позицию. Чтобы повторно регулировать ориентацию камеры, модуль управления композицией находит точку на краю предоставляемой границы, которая является ближайшей от цели таким образом, что камера должна вращаться по кратчайшему пути, что переводит цель в требуемую целевую зону композиции. Модуль управления композицией затем вычисляет два вектора; во–первых, вектор из начала координат камеры в цель, и во–вторых, вектор из начала координат камеры в точку на границе, вычисленную на предыдущем этапе. Оба вектора вычисляются в координатах камеры. Модуль управления композицией затем проецирует два вектора на направленную вправо ось, которую следует использовать в качестве базиса для горизонтального отслеживания, и он проецирует два вектора на направленную вверх ось, которую следует использовать в качестве базиса для вертикального отслеживания. Модуль управления композицией затем определяет угол между двумя векторами и использует значение, чтобы масштабировать постоянные во времени значения отслеживания для плавного движения с использованием кватернионов.
[0050] Модуль управления композицией затем создает кватернионные вращения вокруг направленной вправо оси и направленной вверх оси из вычисленных углов. Модуль управления композицией затем использует результирующие кватернионы, чтобы вращать камеру на запрашиваемую величину.
[0051] Модуль управления композицией применяет этот процесс отслеживания дважды, один раз для жесткой границы отслеживания и еще раз для мягкой границы отслеживания, в расчете на обновление (время отслеживания для жесткой границы равно нулю, что означает мгновенно).
[0052] Также следует отметить, что модуль управления композицией может применяться к системе со стационарной камерой и движущимся субъектом, к системе с движущейся камерой и стационарным субъектом либо к системе, в которой камера и субъект находятся в движении.
[0053] В соответствии с вариантом осуществления, в данном документе описывается система управления коллайдерами (осуществленная частично в модуле управления коллайдерами), за счет которой модуль управления коллайдерами перемещает (например, изменяет позицию) камеру, чтобы избегать объекта в трехмерном окружении, в котором объект загораживает цель относительно целевой зоны камеры. Система управления коллайдерами может использовать систему модуля управления композицией, чтобы поддерживать композицию съемки (например, посредством изменения ориентации камеры), в то время как система управления коллайдерами перемещает позицию камеры для того, чтобы избегать загораживающего объекта.
[0054] В соответствии с вариантом осуществления, как показано на фиг. 5, модуль управления коллайдерами формирует стержни коллайдера на камере. Стержень коллайдера представляет собой стержень, который протягивается из камеры и достигает наружной части на определенном расстоянии. Камера может иметь несколько стержней коллайдера, протягивающихся под несколькими углами. Длина стержня коллайдера и направление, в котором он протягивается из камеры, могут задаваться пользователем и могут отличаться для каждого стержня коллайдера. Каждый стержень коллайдера также может иметь регулируемое демпфирование. Демпфирование выполняется, когда стержень коллайдера является скомпрометированным (т.е. входит в контакт с объектом в трехмерном окружении), и означает скорость, с которой модуль управления коллайдерами возвращает камеру в позицию, в которой стержень коллайдера больше не является скомпрометированным (т.е. больше не находится в контакте с объектом в трехмерном окружении). Жесткое демпфирование перемещает камеру быстро из скомпрометированной позиции в нормальную позицию, тогда как мягкое демпфирование медленно перемещает камеру из скомпрометированной позиции обратно в нормальную позицию. Демпфирование коллайдера забирает часть резкой внезапности в силу столкновений между камерой и объектами. Стержни коллайдера могут конструироваться более длинными, чем требуется при демпфировании, и столкновения могут предотвращаться настолько плавно, что зритель не замечает. Без демпфирования, камера может работать довольно неустойчиво и может немедленно прекращать/начинать работу и т.д.
[0055] Поведение системы на основе модуля управления коллайдерами зависит от типа загораживания, которое возникает между камерой, загораживающим объектом и субъектом съемки. В соответствии с вариантом осуществления, как показано на фиг. 6A 6G, система управления коллайдерами, описанная в данном документе, реагирует, по меньшей мере, на два различных типа загораживания. Первый тип загораживания связан с позицией корпуса камеры относительно загораживающего объекта, и более конкретно, возникает, когда объект находится достаточно близко к корпусу камеры, так что он вызывает скомпрометированность одного или более стержней коллайдера (т.е. он находится в пределах досягаемости длины стержня коллайдера). Когда один или более стержней коллайдера являются скомпрометированными, модуль управления коллайдерами изменяет позицию камеры для того, чтобы возвращать стержни коллайдера в нормальную ситуацию. Для этой цели, модуль управления коллайдерами отодвигает камеру от загораживающего объекта вдоль направления скомпрометированного стержня коллайдера. Скомпрометированный стержень коллайдера может считаться векторным направлением в трехмерном виртуальном пространстве. Например, если камера имеет скомпрометированный стержень с левой стороны, то модуль управления коллайдерами должен перемещать камеру вправо (например, вдоль векторного направления стержня коллайдера) до тех пор, пока стержень коллайдера больше не является скомпрометированным объектом. В некоторых вариантах осуществления, стержень коллайдера автоматически включен между камерой и целью и протягивается на часть или на все расстояние от камеры и цели, за счет этого инициируя загораживание на основе промежуточного объекта. Если несколько стержней коллайдера являются скомпрометированными, то модуль управления коллайдерами должен перемещать камеру, чтобы исключать все скомпрометированные стержни; другими словами, модуль управления коллайдерами должен перемещать камеру вдоль направления векторной суммы нескольких направлений стержней коллайдера. В соответствии с вариантом осуществления, модуль управления коллайдерами использует модуль управления композицией, чтобы обеспечивать то, что композиционный вид субъекта сохраняется, в то время как камера находится в движении (например, при коррекции для скомпрометированного стержня). Модуль управления коллайдерами регулирует позицию корпуса камеры, в то время как модуль управления композицией одновременно регулирует ориентацию камеры для того, чтобы поддерживать цель композиции в целевой зоне.
[0056] В соответствии с вариантом осуществления, предусмотрен второй тип загораживания, которое заключает в себе сохранение композиции, при котором вид субъекта из целевой зоны загораживается объектом, позиционированного между камерой и объектом. В этой второй ситуации, модуль управления коллайдерами проецирует линию (упоминается в качестве "целевого луча") в трехмерном окружении, которая протягивается из начала координат камеры в субъект–цель (например, в точку на субъекте). Этот целевой луч обычно не проходит через центр экрана, поскольку он является регулируемым с помощью модуля управления композицией камеры через субъект–цель и целевую зону (например, если пользователь определяет необходимость составлять композицию съемки с целевой зоной в краю экрана). Целевой луч может рассматриваться в качестве вектора в трехмерном окружении.
[0057] В соответствии с вариантом осуществления, когда целевой луч является скомпрометированным (например, когда объект пересекается с целевым лучом), модуль управления коллайдерами должен перемещать камеру к субъекту вдоль целевого луча (например, вдоль направления вектора целевого луча) до тех пор, пока камера не находится в позиции, в которой она больше не загораживается объектом, и целевой луч больше не является скомпрометированным. В некоторых вариантах осуществления, это перемещение происходит в одном кадре (например, камера резко переходит в новую позицию). Другими словами, камера перемещается вперед посредством модуля управления коллайдерами до тех пор, пока она не имеет четкой съемки субъекта с надлежащей композицией (например, с использованием модуля управления композицией, чтобы поддерживать цель в целевой зоне по мере того, как камера перемещает свою позицию). В соответствии с вариантом осуществления, длина целевого луча может быть меньше расстояния от камеры до субъекта таким образом, что он завершается до достижения субъекта–цели. Целевой луч, который завершается до достижения субъекта–цели, исключает вероятность пересечения объекта настолько близко к субъекту, что он не может обходиться, при поддержании хорошей съемки. Короткий целевой луч также исключает вероятность предоставления возможности модулю управления коллайдерами масштабировать камеру настолько близко к субъекту, что значимая композиция является невозможной (например, чтобы исключать экстремальный крупный план). Длина целевого луча также может задаваться таким образом, что он выступает мимо субъекта–цели и возникает на другой стороне, обеспечивая пересечение целевого луча с объектами позади субъекта.
[0058] В соответствии с вариантом осуществления, как показано на блок–схеме последовательности операций способа на фиг. 6D, модуль управления коллайдерами пытается сохранять исходную высоту камеры посредством отодвигания камеры назад в исходную позицию до того, как целевой луч является скомпрометированным. В некоторых вариантах осуществления, это перемещение происходит в одном кадре (например, камера резко переходит в новую позицию, определенную посредством следующего способа). В других вариантах осуществления, следующий способ, чтобы отодвигать камеру назад, возникает менее часто, что может помогать в снижении вычислительной нагрузки. Для этой цели, модуль управления коллайдерами отбрасывает луч (упоминается в данном документе в качестве отрицательного луча) назад вдоль оси камеры в отрицательном направлении (например, в направлении от цели) до тех пор, пока отрицательный луч не сходится с горизонтальной плоскостью, заданной посредством исходной высоты камеры. Если плоскость исходной высоты камеры может достигаться без промежуточного препятствия, помещение камеры в точку, в которой отрицательный луч пересекает плоскость исходной высоты камеры, и выход (например, переход в точку A на фиг. 6A). Если препятствие встречается, модуль управления коллайдерами осуществляет следующие этапы: этап 1, проецирование отрицательного луча на плоскость, заданную посредством нормали препятствия в точке, в которой отрицательный луч наталкивается на препятствие. Этап 2, задание нового направления луча в качестве проекции отрицательного луча на плоскость, заданную посредством нормали препятствия. Инициирование частного случая для внутренних углов (например, если отрицательный луч наталкивается на препятствие в точке вдоль линии, на которой 2 препятствия сходятся), затем принятие проекции отрицательного луча на эту линию пересечения в качестве нового направления луча. Если новое направление луча не указывает на плоскость исходной высоты камеры, просто оставление камеры в этом месте и выход из режима попытки сохранять высоту камеры. Этап 4, модуль управления коллайдерами протягивает луч в новом направлении луча, с прекращением тогда, когда-либо плоскость исходной высоты камеры достигается, либо на другое препятствие наталкиваются, либо край ограничивающего прямоугольника текущего препятствия достигается. Если плоскость исходной высоты камеры достигается, оставление камеры в этой точке и выход (например, переход в точку A на фиг. 6A). Если максимальное число итераций достигнуто, оставление камеры в этой точке и выход (например, переход в точку A на фиг. 6A). Если другое препятствие достигается, начало новой итерации посредством возвращения к этапу 1 (например, переход в точку C на фиг. 6D). Если край ограничивающего прямоугольника текущего препятствия достигается, то переопределение оси камеры в качестве направления из цели в текущее место и начало новой итерации попытки сохранять исходную высоту камеры (например, переход в точку D на фиг. 6D).
[0059] В соответствии с вариантом осуществления, на фиг. 6E показана принципиальная схема виртуального окружения, показывающая перемещение камеры с использованием способа, описанного на фиг. 6D. В этом примере, в первом кадре, камера находится в позиции 0 (позиц. 0), когда препятствие затемняет целевой луч. До того, как второй кадр моделируется и рисуется, модуль управления коллайдерами перемещает камеру в позицию 1 (позиц. 1), чтобы избегать препятствия. Тем не менее, позиция 1 намного ближе к цели и не поддерживает исходную высоту камеры при одновременном избегании препятствия. Соответственно, модуль управления коллайдерами пытается перемещать камеру обратно в исходную позицию камеры, но эта позиция блокируется объектом. Модуль управления коллайдерами затем выдвигает камеру вверх по стене объекта до тех пор, пока она не достигнет вершины объекта в позиции 2 (позиц. 2). Модуль управления коллайдерами затем вращает камеру таким образом, что ось камеры снова указывает на цель, и затем отодвигает камеру назад до тех пор, пока она не находится в плоскости исходной высоты камеры в позиции 3 (позиц. 3). Это перемещение из позиц. 1 в позиц. 3 может выполняться в одном стандартном видеокадре.
[0060] В соответствии с вариантом осуществления, как показано на блок–схеме последовательности операций способа на фиг. 6F, модуль управления коллайдерами пытается сохранять исходное расстояние от камеры посредством отодвигания камеры назад в исходную позицию до того, как целевой луч является скомпрометированным. В некоторых вариантах осуществления, это перемещение происходит в одном кадре (например, камера резко переходит в новую позицию, определенную посредством следующего способа). В других вариантах осуществления, следующий способ, чтобы отодвигать камеру назад, возникает менее часто, что может помогать в снижении вычислительной нагрузки. Для этой цели, модуль управления коллайдерами отбрасывает луч (упоминается в данном документе в качестве отрицательного луча) назад вдоль оси камеры в отрицательном направлении (например, в направлении от цели) до тех пор, пока отрицательный луч не сходится с вертикальной плоскостью, заданной посредством исходного расстояния до камеры от цели. Если плоскость исходного расстояния от камеры может достигаться без промежуточного препятствия, помещение камеры в точку, в которой отрицательный луч пересекает плоскость исходного расстояния от камеры, и выход (например, переход в точку A на фиг. 6A). Если препятствие встречается, модуль управления коллайдерами осуществляет следующие этапы: этап 1, проецирование отрицательного луча на плоскость, заданную посредством нормали препятствия в точке, в которой отрицательный луч наталкивается на препятствие. Этап 2, задание нового направления луча в качестве проекции отрицательного луча на плоскость, заданную посредством нормали препятствия. Инициирование частного случая для внутренних углов (например, если отрицательный луч наталкивается на препятствие в точке вдоль линии, на которой 2 препятствия сходятся), затем принятие проекции отрицательного луча на эту линию пересечения в качестве нового направления луча. Если новое направление луча не указывает на плоскость исходного расстояния от камеры, просто оставление камеры в этом месте и выход из режима попытки сохранять расстояние от камеры. Этап 4, модуль управления коллайдерами протягивает луч в новом направлении луча, с прекращением тогда, когда-либо плоскость исходного расстояния от камеры достигается, либо на другое препятствие наталкиваются, либо край ограничивающего прямоугольника текущего препятствия достигается. Если плоскость исходного расстояния от камеры достигается, оставление камеры в этой точке и выход (например, переход в точку A на фиг. 6A). Если максимальное число итераций достигнуто, оставление камеры в этой точке и выход (например, переход в точку A на фиг. 6A). Если другое препятствие достигается, начало новой итерации посредством возвращения к этапу 1 (например, переход в точку F на фиг. 6F). Если край ограничивающего прямоугольника текущего препятствия достигается, то переопределение оси камеры в качестве направления из цели в текущее место и начало новой итерации попытки сохранять исходную высоту камеры (например, переход в точку G на фиг. 6F).
[0061] В соответствии с вариантом осуществления, на фиг. 6G показана принципиальная схема виртуального окружения, показывающая перемещение камеры с использованием способа, описанного на фиг. 6F. В этом примере, в первом кадре, камера находится в позиции 0 (позиц. 0), когда препятствие затемняет целевой луч. До того, как второй кадр моделируется и рисуется, модуль управления коллайдерами перемещает камеру в позицию 1 (позиц. 1), чтобы избегать препятствия. Тем не менее, позиция 1 намного ближе к цели и не поддерживает исходное расстояние от камеры до цели при одновременном избегании препятствия. Соответственно, модуль управления коллайдерами пытается перемещать камеру обратно в исходную позицию камеры, но блокируется объектом. Согласно способу, модуль управления коллайдерами выдвигает камеру вверх по стене объекта до тех пор, пока она не достигает вершины объекта в позиции 2 (позиц. 2). Модуль управления коллайдерами затем поворачивает камеру таким образом, что ось камеры снова указывает на цель, и затем отодвигает камеру назад до тех пор, пока она не находится в плоскости исходного расстояния от камеры в позиции 3 (позиц. 3). Это перемещение из позиц. 1 в позиц. 3 может происходить в одном стандартном видеокадре.
[0062] В качестве примера реакции модуля управления коллайдерами на загораживание объектов, фиг. 7A, 7B и 7C показывают три сценария загораживания, в которых загораживающий объект перемещается слева направо по экрану камеры. На фиг. 7A, загораживающий объект закрывает только левую сторону экрана и не загораживает часть слона. Модуль управления коллайдерами не должен перемещать камеру в этом случае. На фиг. 7B, загораживающий объект закрывает большую часть области экрана с левой стороны экрана и загораживает значительную часть слона, но при этом не загораживает субъект–цель. С другой стороны, это не инструктирует модулю управления коллайдерами перемещать камеру. Тем не менее, на фиг. 7C, загораживающий объект закрывает большую часть экрана и в итоге закрывает субъект–цель в правой верхней части экрана камеры. Поскольку загораживающий объект закрывает субъект–цель, он должен пересекаться целевым лучом и инструктировать модулю управления коллайдерами перемещать камеру к субъекту, чтобы продвигаться за пределы загораживающего объекта.
[0063] В некоторых вариантах осуществления, модуль управления коллайдерами может использовать минимальное расстояние от препятствия при определении того, следует или нет и когда следует реагировать, на основе загораживаемой зоны прямой видимости. Некоторые загораживающие объекты могут игнорироваться (например, без изменения позиции камеры) на основе расстояния между препятствием и камерой. Например, находящиеся рядом объекты могут игнорироваться, если они находятся менее чем на минимальном расстоянии от препятствия от камеры, поскольку они с большой вероятностью должны проходить быстро на переднем плане. В некоторых вариантах осуществления, дополнительные факторы могут использоваться при определении того, следует или нет реагировать на основе загораживаемой зоны прямой видимости, такие как размер объекта, текущая траектория и скорость камеры или цели либо вычисленное время загораживания на основе загораживающего объекта и текущей траектории и скорости камеры.
[0064] В соответствии с вариантом осуществления, предусмотрен способ для оценки съемок камеры с использованием модуля управления коллайдерами и специальной камеры, упоминаемой в данном документе в качестве метакамеры. Метакамера представляет собой высокоуровневую камеру, которая содержит множество субкамер, каждая из которых формирует подсъемку. Каждая из субкамер может содержать или использовать модуль управления коллайдерами. Метакамера может устанавливаться таким образом, что каждая субкамера имеет любой тип подсъемки (например, она вообще не должна придерживаться какого–либо типа кинематографической темы). Например, субкамера может процедурно смещаться от субъекта "Назад на 5 метров и вниз на 1 метр от лица", либо она может представлять собой стационарную камеру в мире, либо она может представлять собой камеру со свободным обзором, которая имеет любое число позиционных и угловых ограничений/взаимосвязей между субкамерой и субъектом.
[0065] Хотя метакамера является полностью открытой для любого типа конфигурации субкамер, может быть более эффективным, когда субкамеры устанавливаются в темах, так что они имеют некоторое концептуальное подобие. В соответствии с вариантом осуществления, метакамера может устанавливаться таким образом, что все субкамеры имеют подсъемки, которые представляют собой варьирования одного концептуального типа съемки камеры (например, съемки головы, съемки общим планом, съемки дальним планом и т.п.). Например, метакамера может устанавливаться в качестве метакамеры на основе принципа "съемки головы" таким образом, что каждая из подсъемок имеет варьирование для съемки головы субъекта. Каждая из субкамер на основе принципа съемки головы имеет отличающиеся параметры, чтобы создавать различные варьирования съемок головы (например, различные углы, расстояния, поле видов из субъекта).
[0066] В соответствии с вариантом осуществления, при реализации (например, в компьютерной программе), метакамера должна оценивать качество съемки всех субкамер, которые она содержит, ранжировать их и предоставлять одну подсъемку с ранжированием высшего качества. Более конкретно, когда метакамера инициирована, она должна активировать все субкамеры и быстро выполнять анализ для каждой из них, чтобы определять "качество съемки", а затем воспроизводить только субкамеру высшего качества. Это происходит очень быстро с задержкой самое большее в один кадр.
[0067] В примерном варианте осуществления, качество съемки может определяться следующим образом: Каждой субкамере сначала присваивается идеальный количественный показатель. После инициализации субкамеры (например, модуль управления коллайдерами для субкамеры активируется), количественный показатель для субкамеры регулируется на основе действий модуля управления коллайдерами для субкамеры. Количественный показатель регулируется вниз, если модуль управления коллайдерами должен перемещать субкамеру (например, поскольку субкамера блокируется из наблюдения субъекта или имеет что–то наподобие подсъемки). Величина регулирования количественного показателя зависит от того, насколько камера перемещена посредством модуля управления коллайдерами. Если субкамера не может получать съемку субъекта даже после перемещения из модуля управления коллайдерами, то съемка определяется как сбой (например, количественный показатель может регулироваться до нуля). Субкамера с высоким количественным показателем (например, близким к идеальному количественному показателю) должна перемещаться меньше, чем субкамера с более низким количественным показателем. Субкамера, которая не перемещена посредством модуля управления коллайдерами (например, она имеет идеальную съемку), получает наибольший ранг и сохраняет идеальный количественный показатель.
[0068] В некоторых вариантах осуществления, определенное число критериев учитывается при определении качества съемки. Эти критерии могут включать в себя, например, то, загораживается или нет цель от точки обзора камеры (например, если модуль управления коллайдерами должен перемещать камеру), длительность загораживания (если имеется) (например, чем больше длительность, тем хуже качество съемки), то, смещена или нет камера из своей идеальной позиции (например, вследствие разрешения столкновений из модуля управления коллайдерами), расстояние от камеры до цели (например, как описано ниже), композицию съемки (например, то, находится или нет съемка в пределах границ), важность цели в игровом контексте (например, цель, такая как конкретный участник игры, может ранжироваться по важности посредством игровой логики или непосредственно посредством участника игры), либо то, соблюдаются или нет кинематографические правила посредством выбора конкретной съемки (например, кинематографические правила могут применяться для нескольких съемок, и в силу этого означенное зависит от одной или более предыдущих съемок, к примеру, того, нарушает или нет новая съемка кинематографические правила).
[0069] В некоторых вариантах осуществления, модуль управления коллайдерами может использовать как приоритет съемки, так и качество съемки в качестве факторов при выборе конкретного вида субкамеры. Например, приоритет съемки может включать в себя такие факторы, как то, какой член команды или область находится в поле обзора субкамеры (например, фокусирование на самом эффективном игроке или на конкретном местоположении, центральном для игры), или природа текущих действий, предпринимаемых игроками или игрой (например, фокусирование на битве между игроками, или когда игрок подбирает интересующий объект в игре). В связи с этим, приоритету съемки может присваиваться весовой коэффициент наряду с качеством съемки, чтобы выбирать конкретный вид субкамеры. В некоторых вариантах осуществления, рандомизация может применяться на основе качества съемки или приоритета съемки. Например, если несколько субкамер имеют качество съемки или приоритет съемки с аналогичной количественной оценкой, модуль управления коллайдерами может рандомизировать то, какой вид субкамеры следует выбирать, за счет этого предоставляя множество видов камеры без обязательного снижения качества съемки или приоритета съемки.
[0070] В некоторых вариантах осуществления, модуль управления коллайдерами идентифицирует целевое расстояние и оценивает качество съемки различных субкамер на основе этого целевого расстояния. Например, пользователь может предпочитать 20–ярдовый вид действия. В связи с этим, модуль управления коллайдерами может выбирать субкамеры на основе целевого расстояния, присваивая весовые коэффициенты видам субкамеры на приблизительно 20 ярдов выше видов дальше или ближе. В некоторых вариантах осуществления, модуль управления коллайдерами может использовать линейное демпфирование при оценке целевого расстояния в качестве фактора для качества съемки (например, вплоть до некоторого предварительно определенного кратного числа целевого расстояния).
[0071] В некоторых вариантах осуществления, орбитальный модуль транспозиции используется с зафиксированной камерой на цели. Модуль управления композицией может добавлять дополнительные средства управления на предмет смещения курса, следования на основе дельты позиции, вектора или мирового курса, нескольких смешанных режимов и средства управления демпфированием в расчете на ось. Конфигурируемый гауссов фильтр может использоваться для того, чтобы сглаживать определение скорости. Может быть преимущественным дистиллировать или сглаживать определенные мгновенные перемещения (например, небольшие рывки или толчки останавливающегося автомобиля) и фокусировать вид камеры на более важных перемещениях цели. Гауссов фильтр нижних частот может использоваться для того, чтобы сглаживать такие небольшие перемещения.
[0072] В некоторых вариантах осуществления, модуль управления композицией может автоматически регулировать поле обзора камеры на основе н расстояния до субъекта, чтобы поддерживать объекты с идентичным размером на экране. Например, модуль управления композицией может регулировать поле обзора (например, зафиксированной камеры), чтобы поддерживать размер головы цели таким образом, что она имеет определенный размер. В связи с этим, размер объекта между быстрыми переключениями может управляться, даже когда расстояния изменяются, или когда персонажи перемещаются. В некоторых вариантах осуществления, мировой размер кадрового покрытия может быть сконфигурирован, наряду с целевым расстоянием. Модуль управления композицией может регулировать поле обзора динамически, чтобы поддерживать размер на целевом расстоянии. Настройки демпфирования могут обеспечивать возможность управления временной плотностью изменения.
[0073] В некоторых вариантах осуществления, модуль управления композицией может использовать вид регулируемой по состояниям камеры для того, чтобы предоставлять связывание камер и анимационных состояний без кодов. Разработчик может инициировать различные поведения камеры для различных анимаций. Например, "карманная камера" может быть инициирована, когда персонаж бежит. Когда цель анимации задается (например, когда последовательность анимации задается в качестве цели посредством разработчика), модуль управления композицией сканирует машину анимационных состояний, ассоциированную с этой целью анимации, выполняющей поиск иерархических состояний, и составляет таблицу со всеми состояниями (например, на всех уровнях иерархии). Модуль управления композицией затем ассоциирует конкретные виртуальные камеры с каждым состоянием. Ассоциирование может осуществляться через пользовательский интерфейс, который обеспечивает возможность соединения каждого состояния с конкретной виртуальной камерой, или ассоциирование может осуществляться на основе правил таким образом, что все состояния определенного типа соединяются с конкретной виртуальной камерой. Во время игры, когда состояние становится активным, ассоциированная виртуальная камера затем активируется посредством модуля управления композицией. Если отсутствует виртуальная камера, ассоциированная с конкретным состоянием, то изменение состояния игнорируется, и текущая активная камера остается. В некоторых вариантах осуществления, правила пользовательского смешивания могут предоставляться для переходов виртуальной камеры.
[0074] За счет этой функциональности между метакамерой, модулем управления коллайдерами и оценкой съемок, можно создавать несколько метакамер, содержащих несколько субкамер, чтобы создавать систему, в которой можно всегда быстро переключаться на хороший угол субъекта независимо от того, что происходит.
[0075] Фиг. 8A является снимком экрана, иллюстрирующим панель пользовательского интерфейса для регулируемой по состояниям камеры. Эта панель обеспечивает возможность пользователю управлять связыванием между анимационным состоянием и виртуальной камерой, а также смешиванием между съемками.
[0076] Фиг. 8B является снимком экрана, иллюстрирующим динамически заполненный раскрывающийся список состояний в игре (например, когда пользователь щелкает кнопку состояния). Пользователь может выбирать любое состояние, доступное в списке.
[0077] Фиг. 8C является снимком экрана, иллюстрирующим результат щелчка кнопки камеры. Щелчок "Камера" показывает все камеры в сцене и обеспечивает возможность пользователю выбирать любую камеру и связывать ее с любым выбранным состоянием. Это обеспечивает возможность связывания любого конкретного состояния с любой конкретной камерой (например, без кодирования пользователем).
[0078] Фиг. 8D является снимком экрана, иллюстрирующим то, как регулируемые по состояниям камеры могут смешиваться между собой (например, от съемки на камере 1 до съемки на камере 2). Смешивание может задаваться пользователем в этом пользовательском интерфейсе с использованием компонента, упоминаемого на чертеже в качестве пользовательского смешивания.
[0079] Фиг. 8E является снимком экрана, иллюстрирующим определяемый пользователем список всех камер, которые должны быть доступными для регулируемой по состояниям камеры (например, для задания того, какие камеры наблюдаются посредством регулируемой по состояниям камеры) со средствами управления на предмет приоритета. Это упоминается на чертеже в качестве дочернего элемента виртуальной камеры. Это обеспечивает возможность пользователю управлять приоритетом каждой камеры и предоставлять лучшую ясность.
[0080] Фиг. 8F является снимком экрана, иллюстрирующим средства управления на предмет полного приоритета одной системы регулируемых по состояниям камер. В некоторых вариантах осуществления, может быть предусмотрено множество систем регулируемых по состояниям камер, работающих с идентичной игрой, каждая из которых имеет приоритет относительно других, при этом их дочерние камеры имеют собственные приоритеты в каждой системе регулируемых по состояниям камер.
[0081] Фиг. 9 является схемой примерного наголовного дисплея 1202 (HMD), носимого пользователем 1200 (или "носящим"). В примерном варианте осуществления, пользователь 1200 (например, разработчик игры или участник игры) получает впечатление от VR–окружения или контента в стиле дополненной реальности (AR) (например, окружения в стиле смешанной реальности) при ношении HMD 1202. В примерном варианте осуществления, HMD–устройство 1202 может включать в себя непрозрачный визор 1208, который может затемнять вид реального мира для носящего 1200 и который может отображать полное виртуальное окружение носящему 1200. В других вариантах осуществления, HMD–устройство 1202 включает в себя прозрачный или полупрозрачный визор 108 ("линзу" или "линзы"), через который носящий 1200 просматривает свои окрестности (также упоминается в данном документе как "реальный мир"). Следует понимать, что визор 1208 проиллюстрирован на фиг. 9 как прозрачный в целях иллюстрации, но, как описано выше, визор 1208 может быть непрозрачным в некоторых вариантах осуществления.
[0082] В примерном варианте осуществления, HMD 1202 также включает в себя устройство 1218 отображения, которое подготавливает посредством рендеринга графику (например, виртуальные объекты) на визоре 1208. В связи с этим, визор 1208 выступает в качестве "экрана" или поверхности, на которой появляется вывод устройства 1218 отображения и через которую носящий 1200 получает впечатление от виртуального контента. В некоторых вариантах осуществления, HMD 1202 может представлять две различных проекции через визор (например, по одной для каждого глаза). Устройство 1218 отображения регулируется или управляется посредством одного или более GPU 1206 или голографических проекционных блоков (HPU). GPU 1206 обрабатывает аспекты графического вывода, которые помогают при ускорении рендеринга вывода через устройство 1218 отображения.
[0083] В примерном варианте осуществления, HMD–устройство 1202 также включает в себя один или более центральных процессоров 1205 (CPU), которые могут выполнять некоторые операции и способы, описанные в данном документе. HMD–устройство 1202 также включает в себя аудиоустройство 1212 (например, динамики, не проиллюстрированы отдельно), которое выполнено с возможностью представлять аудиовывод носящему 1200 (например, через уши 1216 пользователя 1200). Хотя отдельно не показано, HMD–устройство 1202 также включает в себя проводные или беспроводные сетевые адаптеры (например, Wi–Fi–, Bluetooth–, сотовые), которые упрощают связь между HMD и другими вычислительными устройствами, описанными в данном документе.
[0084] В некоторых вариантах осуществления, HMD–устройство 1202 включает в себя устройство 1210 с цифровой камерой. Устройство 1210 с цифровой камерой (или просто "камера") представляет собой обращенное вперед устройство видеоввода, которое ориентировано таким образом, чтобы захватывать, по меньшей мере, часть поля обзора (FOV) носящего 1200. Другими словами, камера 1210 захватывает или "видит" угол обзора реального мира на основе ориентации HMD–устройства 1202 (например, аналогично тому, что носящий 1200 видит в FOV носящего 1200 при смотрении через визор 1208). Устройства 1210 с камерой могут быть выполнены с возможностью захватывать цифровое видео реального мира вокруг пользователя 1200 (например, поле обзора, периферийный вид или вид на 360° вокруг носящего 1200). Устройства 1210 с камерой могут использоваться для того, чтобы захватывать цифровое видео окружения реального мира вокруг пользователя 1200. В некоторых вариантах осуществления, вывод из устройства 1210 с цифровой камерой может проецироваться на визор 1208 (например, в вариантах осуществления с непрозрачным визором), а также может включать в себя дополнительный виртуальный контент (например, добавляемый в вывод камеры). В некоторых вариантах осуществления, камера 1210 может представлять собой камеру с эффектом глубины, или HMD–устройство 1202 в иных случаях может включать в себя датчик глубины, захватывающий информацию глубины для объектов в FOV пользователя 1200.
[0085] В некоторых вариантах осуществления, HMD–устройство 1202 может включать в себя один или более датчиков (не показаны отдельно) или может соединяться по проводной или беспроводной связи с датчиками (например, через связь ближнего радиуса действия (NFC) с носимым на запястье устройством, также носимым носящим 1200). Например, HMD 1202 может включать в себя датчики движения или позиции, выполненные с возможностью определять позицию или ориентацию HMD 1202 или позицию близлежащих объектов реального мира. В некоторых вариантах осуществления, HMD–устройство 1202 может включать в себя микрофон для захвата аудиоввода (например, разговорной речи пользователя 1200).
[0086] В некоторых вариантах осуществления, HMD 1202 может быть аналогичным HMD в стиле виртуальной реальности, таким как Oculus Rift™, HTC Vive™, PlayStation VR™ и т.п. В некоторых вариантах осуществления, HMD 102 может быть аналогичным HMD в стиле дополненной реальности, таким как Google Glass®, Microsoft HoloLens®, Magic Leap™ HMD, Meta™ HMD и т.д. В некоторых вариантах осуществления, HMD 1202 также может включать в себя один или более датчиков (не показаны), таких как приемное устройство на основе глобальной системы позиционирования (GPS) (например, для определения местоположения по GPS пользовательского устройства 1202), биометрические датчики (например, для захвата биометрических данных пользователя 1200), датчики движения или позиции (например, для захвата позиционных данных пользователя 1200 или других объектов), камера с эффектом глубины (например, с использованием лидара) или аудиомикрофон (например, для того, чтобы собирать звуковые данные). Некоторые датчики могут быть внешними по отношению к HMD 1202 и могут быть выполнены с возможностью обмениваться данными в беспроводном режиме с HMD 1202 (например, используемом в Microsoft Kinect®, Vive Tracker™, в лидарном датчике MIT или в беспроводном детекторе эмоций MIT).
[0087] В некоторых вариантах осуществления, пользователь 1200 может держать одно или более наручных отслеживающих устройств ("карманных компьютеров") (не показаны отдельно на фиг. 9) (например, по одному на каждой руке). Карманные компьютеры предоставляют информацию относительно абсолютной или относительной позиции и ориентации рук пользователя и, по сути, допускают захват информации жестов руками. Карманные компьютеры могут быть выполнены с возможностью работать непосредственно с HMD 1202 (например, через проводную или беспроводную связь). В некоторых вариантах осуществления, карманные компьютеры могут представлять собой наручные контроллеры Oculus Touch™, наручные модули отслеживания HTC Vive™ или наручные контроллеры PlayStation VR™. Карманные компьютеры также могут включать в себя одну или более кнопок или джойстиков, встроенных в карманный компьютер. В других вариантах осуществления, пользователь 1200 может носить одно или более носимых наручных отслеживающих устройств (например, перчаток с отслеживанием движения, которые не показаны), к примеру, предлагаемых на рынке компанией Manus VR (Нидерланды). В еще других вариантах осуществления, движение руками пользователя 1200 может отслеживаться, без или помимо карманных компьютеров либо носимых наручных отслеживающих устройств, через датчик позиции рук (не показан, например, с использованием оптических способов, чтобы отслеживать позицию и ориентацию рук пользователя), такой как, например, предлагаемые на рынке компанией Leap Motion, Inc. (корпорацией из штата Калифорния). Такие наручные отслеживающие устройства (например, карманные компьютеры) отслеживают позицию одной или более рук пользователя в ходе работы.
[0088] В ходе работы, в примерном варианте осуществления, HMD 1202 смонтирован на голове 1204 носящего и на обоих глазах 1214 носящего 1200, как показано на фиг. 9. Носящему 1200 может представляться виртуальное окружение или окружение в стиле смешанной реальности, от которого можно получать впечатление через HMD 1202 и карманные компьютеры, как описано в данном документе. Дополнительно, системы, описанные в данном документе (не показаны отдельно на фиг. 9), могут использоваться в сочетании с HMD 1202, как описано в данном документе. Например, модуль управления композицией и модуль управления коллайдерами могут использоваться для того, чтобы управлять одной или более виртуальных камер во втором виртуальном окружении, при этом вывод одной или более виртуальных камер отображается носящему 1200 через виртуальный экран в виртуальном окружении или в окружении в стиле смешанной реальности, от которого можно получать впечатление через HMD 1202. Виртуальный экран может быть плавающим в окружении (например, фиксированным относительно движения носящего 1200) либо прикрепленным к объекту в виртуальном окружении или в окружении в стиле смешанной реальности. Например, в окружении в стиле смешанной реальности, виртуальный экран может представлять собой виртуальную проекцию в стиле дополненной реальности на стене реального мира. В окружении в стиле виртуальной реальности, виртуальный экран может представлять собой виртуальную проекцию на виртуальной стене. Второе виртуальное окружение может включать в себя любое трехмерное виртуальное окружение, в котором может работать виртуальная камера (например, управляемое посредством модуля управления коллайдерами и модуля управления композицией), в том числе игровое видеоокружение (живое или записанное), окружение трехмерного моделирования и трехмерное киноокружение. В связи с этим, носящий 1200 может получать впечатление от окружения в стиле смешанной реальности, сидя на диване в помещении при просмотре виртуального экрана, проецируемого на стену около дивана, при этом виртуальный экран отображает игровое передаваемое вживую игровое видеоокружение (например, живой онлайновой многопользовательской видеоигры), за счет чего вид игрового окружения передаваемого вживую видео наблюдается через одну или более виртуальных камер в игровом видеоокружении, управляемом посредством модуля управления коллайдерами и модуля управления композицией.
[0089] Конкретные варианты осуществления описываются в данном документе как включающие в себя логику или определенное число компонентов, модулей или механизмов. Модули могут составлять либо программные модули (например, код, осуществленный на машиночитаемом носителе хранения данных или в передаваемом сигнале), либо аппаратные модули. "Аппаратный модуль" представляет собой материальный блок, допускающий выполнение определенных операций, и может быть сконфигурирован или скомпонован определенным физическим способом. В различных примерных вариантах осуществления, одна или более компьютерных систем (например, автономная компьютерная система, клиентская компьютерная система или серверная компьютерная система) или один или более аппаратных модулей компьютерной системы (например, процессор или группа процессоров) могут быть сконфигурированы посредством программного обеспечения (например, приложения или часть приложения) в качестве аппаратного модуля, который работает с возможностью выполнять определенные операции, как описано в данном документе.
[0090] В некоторых вариантах осуществления, аппаратный модуль может реализовываться механически, электронно или с любой подходящей комбинацией вышеозначенного. Например, аппаратный модуль может включать в себя специализированную схему или логику, которая постоянно сконфигурирована с возможностью выполнять определенные операции. Например, аппаратный модуль может представлять собой процессор специального назначения, такой как программируемая пользователем вентильная матрица (FPGA) или специализированная интегральная схема (ASIC). Аппаратный модуль также может включать в себя программируемую логику или схему, которая временно сконфигурирована посредством программного обеспечения с возможностью выполнять определенные операции. Например, аппаратный модуль может включать в себя программное обеспечение, включенное в процессор общего назначения или другой программируемый процессор. Следует принимать во внимание, что решение на предмет необходимости реализовывать аппаратный модуль механически, в выделенной и постоянно сконфигурированной схеме или во временно сконфигурированной схеме (например, сконфигурированной посредством программного обеспечения), может быть обусловлено посредством факторов затрат и времени.
[0091] Соответственно, фраза "аппаратный модуль" должна пониматься как охватывающая материальный объект, независимо от того, представляет он собой объект, который имеет физическую конструкцию, постоянно сконфигурирован (например, аппаратное решение) или временно сконфигурирован (например, запрограммирован) с возможностью работать определенным способом или выполнять определенные операции, описанные в данном документе. При использовании в данном документе, "аппаратно–реализованный модуль" означает аппаратный модуль. Если рассматривать варианты осуществления, в которых аппаратные модули временно сконфигурированы (например, запрограммированы), каждый из аппаратных модулей не должен обязательно конфигурироваться или подвергаться созданию экземпляра в любой конкретный момент времени. Например, если аппаратный модуль содержит процессор общего назначения, сконфигурированный посредством программного обеспечения с возможностью становиться процессором специального назначения, процессор общего назначения может быть сконфигурирован, соответственно, как различные процессоры специального назначения (например, содержащие различные аппаратные модули) в различные моменты времени. Программное обеспечение, соответственно, может конфигурировать конкретный процессор или процессоры, например, с возможностью составлять конкретный аппаратный модуль в один момент времени и составлять другой аппаратный модуль в другой момент времени.
[0092] Аппаратные модули могут предоставлять информацию и принимать информацию в/из других аппаратных модулей. Соответственно, описанные аппаратные модули могут рассматриваться как функционально соединенные. Если несколько аппаратных модулей существуют одновременно, связь может достигаться через передачу сигналов (например, по соответствующим схемам и шинам) между двумя или более аппаратных модулей. В вариантах осуществления, в которых несколько аппаратных модулей конфигурируются или подвергаются созданию экземпляра в различные моменты времени, связь между такими аппаратными модулями может достигаться, например, посредством хранения и извлечения информации в структурах запоминающего устройства, к которым имеют доступ несколько аппаратных модулей. Например, один аппаратный модуль может выполнять операцию и сохранять вывод этой операции в запоминающем устройстве, с которым он функционально соединяется. Дополнительный аппаратный модуль затем может, в последующее время, осуществлять доступ к запоминающему устройству, чтобы извлекать и обрабатывать сохраненный вывод. Аппаратные модули также могут инициировать связь с устройствами ввода или вывода и могут работать на ресурсе (например, для сбора информации).
[0093] Различные операции примерных способов, описанных в данном документе, могут выполняться, по меньшей мере, частично, посредством одного или более процессоров, которые временно выполнены с возможностью (например, посредством программного обеспечения) или постоянно выполнены с возможностью выполнять релевантные операции. Независимо от того, временно или постоянно выполнены с возможностью, такие процессоры могут составлять процессорнореализованные модули, которые работают с возможностью выполнять одну или более операций или функций, описанных в данном документе. При использовании в данном документе, "процессорнореализованный модуль" означает аппаратный модуль, реализованный с использованием одного или более процессоров.
[0094] Аналогично, способы, описанные в данном документе, могут быть, по меньшей мере, частично процессорнореализованными, при этом конкретный процессор или процессоры представляют собой пример аппаратных средств. Например, по меньшей мере, некоторые операции способа могут осуществляться посредством одного или более процессоров или процессорнореализованных модулей. Кроме того, один или более процессоров также могут работать с возможностью поддерживать выполнение релевантных операций в окружении "облачных вычислений" или в качестве "программного обеспечения как услуга" (SaaS). Например, по меньшей мере, некоторые операции могут выполняться посредством группы компьютеров (в качестве примеров машин, включающих в себя процессоры), причем эти операции являются доступным через сеть (например, Интернет) и через один или более соответствующих интерфейсов (например, через интерфейс прикладного программирования (API)).
[0095] Выполнение определенных операций может распределяться между процессорами, не только постоянно размещающимися в одной машине, но и развернутыми на определенном числе машин. В некоторых примерных вариантах осуществления, процессоры или процессорнореализованные модули могут быть расположены в одном географическом местоположении (например, в домашнем окружении, в офисном окружении или на ферме серверов). В других примерных вариантах осуществления, процессоры или процессорнореализованные модули могут быть распределены по ряду географических местоположений.
[0096] Фиг. 10 является блок–схемой 800, иллюстрирующей примерную программную архитектуру 802, которая может использоваться в сочетании с различными аппаратными архитектурами, описанными в данном документе. Фиг. 8 является неограничивающим примером программной архитектуры, и следует принимать во внимание, что могут реализовываться множество других архитектур для того, чтобы упрощать функциональность, описанную в данном документе. Программная архитектура 802 может выполняться на аппаратных средствах, таких как машина 900 по фиг. 11, которая включает в себя, в числе прочего, процессоры 910, запоминающее устройство 930 и компоненты 950 ввода–вывода. Характерный аппаратный слой 804 проиллюстрирован и может представлять, например, машину 900 по фиг. 11. Характерный аппаратный слой 804 включает в себя блок 806 обработки, имеющий ассоциированные выполняемые инструкции 808. Выполняемые инструкции 808 представляют выполняемые инструкции программной архитектуры 802, включающие в себя реализацию способов, модулей и т.д., описанных в данном документе. Аппаратный слой 804 также включает в себя запоминающее устройство/устройство 810 хранения данных, которое также включает в себя выполняемые инструкции 808. Аппаратный слой 804 также может содержать другие аппаратные средства 812.
[0097] В примерной архитектуре по фиг. 8, программная архитектура 802 может концептуализироваться в качестве стека слоев, в котором каждый слой предоставляет конкретную функциональность. Например, программная архитектура 802 может включать в себя слои, такие как операционная система 814, библиотеки 816, инфраструктуры или промежуточное программное обеспечение 818, приложения 820 и слой 844 представления. Функционально, приложения 820 и/или другие компоненты в слоях могут активировать вызовы 824 интерфейса прикладного программирования (API) через программный стек и принимать ответ в качестве сообщений 826. Проиллюстрированные слои являются характерными по своему характеру, и не все программные архитектуры имеют все слои. Например, некоторые мобильные операционные системы или операционные системы специального назначения могут не предоставлять инфраструктуры/промежуточное программное обеспечение 818, в то время как другие могут предоставлять такой слой. Другие программные архитектуры могут включать в себя дополнительные или другие слои.
[0098] Операционная система 814 может управлять аппаратными ресурсами и предоставлять общие услуги. Операционная система 814 может включать в себя, например, ядро 828, услуги 830 и драйверы 832. Ядро 828 может выступать в качестве слоя абстрагирования между аппаратными средствами и другими программными слоями. Например, ядро 828 может отвечать за управление запоминающим устройством, процессорное управление (например, диспетчеризацию), управление компонентами, организацию сетей, настройки безопасности и т.д. Услуги 830 могут предоставлять другие общие услуги для других программных слоев. Драйверы 832 могут отвечать за управление или взаимодействие через интерфейс с базовыми аппаратными средствами. Например, драйверы 832 могут включать в себя драйверы дисплея, драйверы камеры, Bluetooth®–драйверы, драйверы флэш–памяти, драйверы последовательной связи (например, драйверы универсальной последовательной шины (USB)), Wi–Fi®–драйверы, аудиодрайверы, драйверы управления мощностью и т.д., в зависимости от аппаратной конфигурации.
[0099] Библиотеки 816 могут предоставлять общую инфраструктуру, которая может использоваться посредством приложений 820 и/или других компонентов и/или слоев. Библиотеки 816 типично предоставляют функциональность, которая обеспечивает возможность другим программным модулям выполнять задачи более простым способом, чем непосредственное взаимодействие через интерфейс с базовой функциональностью операционной системы 814 (например, ядром 828, услугами 830 и/или драйверами 832). Библиотеки 816 могут включать в себя системные библиотеки 834 (например, стандартную библиотеку C), которые могут предоставлять такие функции, как функции распределения запоминающего устройства, функции обработки строк, математические функции и т.п. Помимо этого, библиотеки 816 могут включать в себя API–библиотеки 836, такие как мультимедийные библиотеки (например, библиотеки, чтобы поддерживать представление и манипулирование различного мультимедийного формата, такого как MPEG4, H.264, MP3, AAC, AMR, JPG, PNG), графические библиотеки (например, OpenGL–инфраструктуру, которая может использоваться для того, чтобы подготавливать посредством рендеринга двумерный и трехмерный графический контент на дисплее), библиотеки баз данных (например, SQLite, которая может предоставлять различные функции реляционных баз данных), веб–библиотеки (например, WebKit, которая может предоставлять функциональность просмотра веб–страниц), и т.п. Библиотеки 816 также могут включать в себя широкий спектр других библиотек 838, чтобы предоставлять множество других API в приложения 820 и другие программные компоненты/модули.
[00100] Инфраструктуры 818 (также иногда упоминаются как "промежуточное программное обеспечение") предоставляют высокоуровневую общую инфраструктуру, которая может использоваться посредством приложений 820 и/или других программных компонентов/модулей.
Например, инфраструктуры/промежуточное программное обеспечение 818 могут предоставлять различные функции графического пользовательского интерфейса (GUI), высокоуровневое управление ресурсами, высокоуровневые услуги определения местоположения и т.д. Инфраструктуры/промежуточное программное обеспечение 818 могут предоставлять широкий спектр других API, которые могут использоваться посредством приложений 820 и/или других программных компонентов/модулей, некоторые из которых могут быть конкретными для конкретной операционной системы или платформы.
[00101] Приложения 820 включают в себя встроенные приложения 840 и/или сторонние приложения 842. Примеры характерных встроенных приложений 840 могут включать в себя, но не только, приложение для управления контактами, приложение браузера, приложение для чтения книг, приложение для определения местоположения, мультимедийное приложение, приложение для обмена сообщениями и/или игровое приложение. Сторонние приложения 842 могут включать в себя любого приложение, разработанное с использованием комплекта разработки программного обеспечения (SDK) Android™ или iOS™ объектом, отличного от производителя конкретной платформы, и могут представлять собой мобильное программное обеспечение, выполняющееся на мобильной операционной системе, такой как iOS™, Android™, Windows® Phone или другие мобильные операционные системы. Сторонние приложения 842 могут активировать API–вызовы 824, предоставленные посредством мобильной операционной системы, такой как операционная система 814, чтобы упрощать функциональность, описанную в данном документе.
[00102] Приложения 820 могут использовать встроенные функции операционной системы (например, ядро 828, услуги 830 и/или драйверы 832), библиотеки 816 или инфраструктуры/промежуточное программное обеспечение 818, чтобы создавать пользовательские интерфейсы, чтобы взаимодействовать с пользователями системы. Альтернативно или дополнительно, в некоторых системах, взаимодействия с пользователем могут возникать через слой представления, к примеру, слой 844 представления. В этих системах, "логика" приложения/модуля может отделяться от аспектов приложения/модуля, которые взаимодействуют с пользователем.
[00103] Некоторые программные архитектуры используют виртуальные машины. В примере по фиг. 8, это проиллюстрировано посредством виртуальной машины 848. Виртуальная машина 848 создает программное окружение, в котором приложения/модули могут выполняться, как если они выполняются на аппаратной машине (такой как, например, машина 900 по фиг. 11). Виртуальная машина 848 хостится посредством хостовой операционной системы (например, операционной системы 814) и типично, хотя не всегда, имеет монитор 846 виртуальной машины, который управляет работой виртуальной машины 848, а также интерфейс с хостовой операционной системой (т.е. операционной системой 814). Программная архитектура выполняется в виртуальной машине 848, к примеру, операционная система 850 (ОС), библиотеки 852, инфраструктуры 854, приложения 856 и/или слой 858 представления. Эти слои программной архитектуры, выполняемые в виртуальной машине 848, могут быть идентичными соответствующим вышеописанным слоям или могут отличаться.
[00104] Фиг. 11 является блок–схемой, иллюстрирующей компоненты машины 900, согласно некоторым примерным вариантам осуществления, выполненной с возможностью считывать инструкции из машиночитаемого носителя (например, машиночитаемого носителя хранения данных) и выполнять любую одну или более технологий, поясненных в данном документе. В некоторых вариантах осуществления, машина 110 является аналогичной HMD 102. В частности, фиг. 11 показывает схематическое представление машины 900 в примерной форме компьютерной системы, в которой могут выполняться инструкции 916 (например, программное обеспечение, программа, приложение, апплет, приложение или другой исполняемый код) для инструктирования машине 900 выполнять любую одну или более технологий, поясненных в данном документе. В связи с этим, инструкции 916 могут использоваться для того, чтобы реализовывать модули или компоненты, описанные в данном документе. Инструкции преобразуют общую, непрограммируемую машину в конкретную машину, программируемую с возможностью выполнять описанные и проиллюстрированные функции описанным способом. В альтернативных вариантах осуществления, машина 900 работает в качестве автономного устройства или может соединяться (например, по сети) с другими машинами. В сетевом развертывании, машина 900 может работать в роли серверной машины или клиентской машины в клиент–серверном сетевом окружении либо в качестве равноправной машины в сетевом окружении с равноправными узлами (или распределенном сетевом окружении). Машина 900 может содержать, но не только, серверный компьютер, клиентский компьютер, персональный компьютер (PC), планшетный компьютер, переносной компьютер, нетбук, абонентскую приставку (STB), персональное цифровое устройство (PDA), мультимедийную развлекательную систему, сотовый телефон, смартфон, мобильное устройство, носимое устройство (например, интеллектуальные часы), интеллектуальное бытовое устройство (например, интеллектуальный прибор), другие интеллектуальные устройства, веб–прибор, сетевой маршрутизатор, сетевой коммутатор, сетевой мост или любую машину, допускающую выполнение инструкций 916, последовательно или иным способом, которые указывают действия, которые должны осуществляться машиной 900. Дополнительно, хотя проиллюстрирована только одна машина 900, термин "машина" должен также рассматриваться как включающий в себя совокупность машин, которые отдельно или объединенно выполняют инструкции 916, чтобы выполнять любую одну или более технологий, поясненных в данном документе.
[00105] Машина 900 может включать в себя процессоры 910, запоминающее устройство 930 и компоненты 950 ввода–вывода, которые могут быть выполнены с возможностью обмениваться данными между собой, к примеру, через шину 902. В примерном варианте осуществления, процессоры 910 (например, центральный процессор (CPU), процессор на основе архитектуры вычислений с сокращенным набором команд (RISC), процессор на основе архитектуры вычислений с полным набором команд (CISC), графический процессор (GPU), процессор цифровых сигналов (DSP), специализированная интегральная схема (ASIC), радиочастотная интегральная схема (RFIC), другой процессор или любая подходящая комбинация вышеозначенного) могут включать в себя, например, процессор 912 и процессор 914, которые могут выполнять инструкции 916. Термин "процессор" имеет намерение включать в себя многоядерный процессор, который может содержать два или более независимых процессора (иногда упоминаются как "ядра"), которые могут выполнять инструкции одновременно. Хотя фиг. 11 показывает несколько процессоров, машина 900 может включать в себя один процессор с одним ядром, один процессор с несколькими ядрами (например, многоядерный процессор), несколько процессоров с одним ядром, несколько процессоров с несколькими ядрами либо любую комбинацию вышеозначенного.
[00106] Запоминающее устройство/устройство 930 хранения данных может включать в себя запоминающее устройство, к примеру, основное запоминающее устройство 932, статическое запоминающее устройство 934 или другое запоминающее устройство и блок 936 хранения, оба из которых являются доступными для процессоров 910, к примеру, через шину 902. Блок 936 хранения и запоминающее устройство 932, 934 сохраняют инструкции 916, осуществляющие любую одну или более технологий или функций, описанных в данном документе. Инструкции 916 также могут постоянно размещаться, полностью или частично, в запоминающем устройстве 932, 934, в блоке 936 хранения, по меньшей мере, в одном из процессоров 910 (например, в кэш–памяти процессора) или в любой подходящей комбинации вышеозначенного, в ходе своего выполнения посредством машины 900. Соответственно, запоминающее устройство 932, 934, блок 936 хранения и запоминающее устройство процессоров 910 представляют собой примеры машиночитаемых носителей 938.
[00107] При использовании в данном документе, "машиночитаемый носитель хранения данных" означает устройство, которое может сохранять инструкции и данные временно или постоянно, и может включать в себя, но не только, оперативное запоминающее устройство (RAM), постоянное запоминающее устройство (ROM), буферное запоминающее устройство, флэш–память, оптические носители, магнитные носители, кэш–память, другие типы устройств хранения данных (например, стираемое программируемое постоянное запоминающее устройство (EEPROM)) и/или любую подходящую комбинацию вышеозначенного. Термин "машиночитаемый носитель хранения данных" должен рассматриваться как включающий в себя один носитель или несколько носителей (например, централизованную или распределенную базу данных либо ассоциированные кэши и серверы), позволяющих сохранять инструкции 916. Термин "машиночитаемый носитель хранения данных" должен также рассматриваться как включающий в себя любой носитель или комбинацию нескольких носителей, которая допускает сохранение инструкций (например, инструкций 916) для выполнения посредством машины (например, машины 900) таким образом, что инструкции, при выполнении посредством одного или более процессоров машины 900 (например, процессоров 910), инструктируют машине 900 выполнять любую одну или более технологий, описанных в данном документе. Соответственно, "машиночитаемый носитель хранения данных" означает одно оборудование или устройство хранения данных, а также "облачные" системы хранения данных или сети хранения данных, которые включают в себя несколько экземпляров оборудования или устройства хранения данных. Термин "машиночитаемый носитель" включает в себя машиночитаемый носитель и передающую среду, например, сигнал.
[00108] Компоненты 950 ввода–вывода могут включать в себя широкий спектр компонентов, чтобы принимать ввод, предоставлять вывод, формировать вывод, передавать информацию, обмениваться информацией, захватывать измерения и т.д. Конкретные компоненты 950 ввода–вывода, которые включены в конкретную машину, должны зависеть от типа машины. Например, портативные машины, такие как мобильные телефоны, с большой вероятностью должны включать в себя устройство сенсорного ввода или другие такие механизмы ввода, тогда как безголовная серверная машина с большой вероятностью не должна включать в себя такое устройство сенсорного ввода. Следует принимать во внимание, что компоненты 950 ввода–вывода могут включать в себя множество других компонентов, которые не показаны на фиг. 11. Компоненты 950 ввода–вывода группируются согласно функциональности просто для упрощения нижеприведенного пояснения, и группировка никоим образом не является ограничивающей. В различных примерных вариантах осуществления, компоненты 950 ввода–вывода могут включать в себя компоненты 952 вывода и компоненты 954 ввода. Компоненты 952 вывода могут включать в себя визуальные компоненты (например, дисплей, такой как плазменная панель отображения (PDP), дисплей на светоизлучающих диодах (светодиодах), жидкокристаллический дисплей (ЖК–дисплей), проектор или электронно–лучевая трубка (CRT)), акустические компоненты (например, динамики), тактильные компоненты (например, вибрационный электромотор, резистивные механизмы), другие формирователи сигналов и т.д. Компоненты 954 ввода могут включать в себя компоненты буквенно–цифрового ввода (например, клавиатуру, сенсорный экран, выполненный с возможностью принимать буквенно–цифровой ввод, фотооптическую клавиатуру или другие компоненты буквенно–цифрового ввода), компоненты точечного ввода (например, мышь, сенсорную панель, шаровой манипулятор, джойстик, датчик движения или другой указательный инструмент), компоненты тактильного ввода (например, физическую кнопку, сенсорный экран, который предоставляет местоположение и/или силу касаний или жестов касания, либо другие компоненты тактильного ввода), компоненты аудиоввода (например, микрофон) и т.п.
[00109] В дополнительных примерных вариантах осуществления, компоненты 950 ввода–вывода могут включать в себя биометрические компоненты 956, компоненты 958 на основе движения, компоненты 960 на основе окружающих условий или компоненты 962 на основе позиции, из огромного количества других компонентов. Например, биометрические компоненты 956 могут включать в себя компоненты, чтобы обнаруживать выражения (например, выражения с помощью рук, выражения лица, вокальные выражения, отслеживание жестов или движений глаз корпуса), измерять биосигналы (например, кровяное давление, сердечный ритм, температуру тела, пот или мозговые волны), идентифицировать пользователя (например, голосовую идентификацию, идентификацию по сетчатке глаза, идентификацию по лицу, идентификацию по отпечаткам пальцев или идентификацию на основе электроэнцефалограммы) и т.п. Компоненты 958 на основе движения могут включать в себя компоненты на основе датчика ускорения (например, акселерометр), компоненты на основе датчика гравитации, компоненты на основе датчика вращения (например, гироскоп) и т.д. Компоненты 960 на основе окружающих условий могут включать в себя, например, компоненты на основе датчика освещения (например, фотометр), компоненты на основе температурного датчика (например, один или более термометров, которые определяют температуру окружающей среды), компоненты на основе датчика влажности, компоненты на основе датчика давления (например, барометр), компоненты на основе акустического датчика (например, один или более микрофонов, которые обнаруживают фоновый шум), компоненты на основе бесконтактного датчика (например, инфракрасные датчики, которые обнаруживают находящиеся рядом объекты), газовые датчики (например, датчики обнаружения газа для того, чтобы обнаруживать концентрации опасных газов для безопасности или измерять загрязнители в атмосфере) или другие компоненты, которые могут предоставлять индикаторы, измерения или сигналы, соответствующие окружающему физическому окружению. Компоненты 962 на основе позиции могут включать в себя компоненты на основе датчика местоположения (например, компонент приемного устройства глобальной системы позиционирования (GPS)), компоненты на основе датчика высоты над уровнем моря (например, высотомеры или барометры, которые обнаруживают давление воздуха, из которого может извлекаться высота), компоненты на основе датчика ориентации (например, магнитометры) и т.п.
[00110] Связь может реализовываться с использованием широкого спектра технологий. Компоненты 950 ввода–вывода могут включать в себя компоненты 964 связи, выполненные с возможностью соединять машину 900 с сетью 980 или устройствами 970 через соединение 982 и соединение 972, соответственно. Например, компоненты 964 связи могут включать в себя компонент сетевого интерфейса или другое подходящее устройство, чтобы взаимодействовать с сетью 980. В дополнительных примерах, компоненты 964 связи могут включать в себя компоненты проводной связи, компоненты беспроводной связи, компоненты сотовой связи, компоненты связи ближнего радиуса действия (NFC), Bluetooth®–компоненты (например, Bluetooth® Low Energy), Wi–Fi®–компоненты и другие компоненты связи, чтобы предоставлять связь через другие модальности. Устройства 970 могут представлять собой другую машину или любое из широкого спектра периферийных устройств (например, периферийное устройство, соединенное через универсальную последовательную шину (USB)).
[00111] Кроме того, компоненты 964 связи могут обнаруживать идентификаторы или включать в себя компоненты, выполненные с возможностью обнаруживать идентификаторы. Например, компоненты 964 связи могут включать в себя компоненты считывателя тегов радиочастотной идентификации (RFID), компоненты обнаружения интеллектуальных NFC–тегов, компоненты оптического считывателя (например, оптический датчик, чтобы обнаруживать одномерные штрих–коды, такие как универсальный штрих–код продукта (UPC), многомерные штрих–коды, такие как код быстрого отклика (QR), Aztec–код, штрих–код Data Matrix, Dataglyph, MaxiCode, PDF417, Ultra Code, UCC RSS–2D и другие оптические коды) либо акустические компоненты обнаружения (например, микрофоны, чтобы идентифицировать тегированные аудиосигналы). Помимо этого, множество информации может извлекаться через компоненты 962связи, к примеру, местоположение через геолокацию по Интернет–протоколу (IP), местоположение через триангуляцию Wi–Fi®–сигналов, местоположение через обнаружение маякового NFC–радиосигнала, который может указывать конкретное местоположение, и т.д.
[00112] В этом подробном описании, несколько экземпляров могут реализовывать компоненты, операции или структуры, описанные в качестве одного экземпляра. Хотя отдельные операции одного или более способов проиллюстрированы и описаны в качестве отдельных операций, одна или более отдельных операций могут выполняться параллельно, и ничего не требует выполнения операций в проиллюстрированном порядке. Структуры и функциональность, представленные в качестве отдельных компонентов в примерных конфигурациях, могут реализовываться как комбинированная структура или компонент. Аналогично, структуры и функциональность, представленные в качестве одного компонента, могут реализовываться как отдельные компоненты. Эти и другие варьирования, модификации, добавления и улучшения попадают в пределы объема предмета изобретения в данном документе.
[00113] Варианты осуществления, проиллюстрированные в данном документе, описываются с достаточной степенью детализации, чтобы обеспечивать возможность специалистам в данной области техники осуществлять на практике раскрытые идеи. Другие варианты осуществления могут использоваться и извлекаться из них таким образом, что структурные и логические замены и изменения могут вноситься без отступления от объема данного раскрытия сущности. В силу этого, подробное описание не должно рассматриваться в ограничивающем смысле, и объем различных вариантов осуществления задается только посредством прилагаемой формулы изобретения, наряду с полным диапазоном эквивалентов, на которые уполномочена такая формула изобретения.
[00114] При использовании в данном документе, термин "или" может истолковываться во включающем или исключающем смысле. Кроме того, несколько экземпляров могут предоставляться для ресурсов, операций или структур, описанных в данном документе в качестве одного экземпляра. Дополнительно, границы между различными ресурсами, операциями, модулями, механизмами и хранилищами данных являются в определенной степени произвольными, и конкретные операции проиллюстрированы в контексте конкретных иллюстративных конфигураций. Другие распределения функциональности предусматриваются и могут попадать в пределы объема различных вариантов осуществления настоящего раскрытия сущности. В общем, структуры и функциональность, представленные в качестве отдельных ресурсов в примерных конфигурациях, могут реализовываться как комбинированная структура или ресурс. Аналогично, структуры и функциональность, представленные в качестве одного ресурса, могут реализовываться как отдельные ресурсы. Эти и другие варьирования, модификации, добавления и улучшения попадают в пределы объема вариантов осуществления настоящего раскрытия сущности, как представлено посредством прилагаемой формулы изобретения. Следовательно, подробное описание и чертежи должны рассматриваться в иллюстративном, а не в ограничительном смысле.
Изобретение относится к области вычислительной техники. Технический результат заключается в повышении кинематографического качества виртуальной камеры. Технический результат достигается за счет того, что ассоциируют жесткую границу с целевой областью, причем жесткая граница представляет собой вторую линейную границу на экране, которая заключает область за пределами мягкой границы; на основе обнаружения того, что часть субъекта находится в местоположении, которое находится за пределами жесткой границы, ассоциированной с целевой областью, задают второе время отслеживания равным нулю и выполняют изменение ориентации, чтобы возвращать часть субъекта на жесткую границу по существу сразу; и на основе обнаружения того, что часть субъекта находится в местоположении между мягкой границей и жесткой границей, определяют первое время отслеживания для изменения ориентации виртуальной камеры, определяют первое время отслеживания на основе величины разделения между частью субъекта и целевой областью и выполняют изменение ориентации виртуальной камеры для того, чтобы возвращать часть субъекта на мягкую границу за первое время отслеживания. 4 н. и 14 з.п. ф-лы, 11 ил.
1. Система управления ориентацией виртуальной камеры, содержащая:
– устройство, имеющее один или более компьютерных процессоров и одно или более компьютерных запоминающих устройств; и
– модуль управления композицией, включенный в одно или более компьютерных запоминающих устройств, причем модуль управления композицией выполнен с возможностью выполнять операции для изменения ориентации виртуальной камеры для того, чтобы поддерживать часть субъекта в целевой области на экране виртуальной камеры, причем операции содержат:
– ассоциирование мягкой границы с целевой областью, причем мягкая граница представляет собой первую линейную границу на экране, которая заключает целевую область, причем мягкая граница ассоциирована с первым временем отслеживания для изменения ориентации виртуальной камеры;
– ассоциирование жесткой границы с целевой областью, причем жесткая граница представляет собой вторую линейную границу на экране, которая заключает область за пределами мягкой границы, причем жесткая граница ассоциирована со вторым временем отслеживания для изменения переориентации виртуальной камеры;
– на основе обнаружения того, что часть субъекта находится в местоположении, которое находится за пределами жесткой границы, ассоциированной с целевой областью, задание второго времени отслеживания равным нулю и выполнение изменения ориентации, чтобы возвращать часть субъекта на жесткую границу по существу сразу; и
– на основе обнаружения того, что часть субъекта находится в местоположении между мягкой границей и жесткой границей, определение первого времени отслеживания для изменения ориентации виртуальной камеры, определение первого времени отслеживания на основе величины разделения между частью субъекта и целевой областью и выполнение изменения ориентации виртуальной камеры для того, чтобы возвращать часть субъекта на мягкую границу за первое время отслеживания.
2. Система по п. 1, в которой выполнение изменения ориентации содержит:
– определение координат для части субъекта в координатном пространстве камеры;
– нахождение точки на мягкой границе около координат для части субъекта;
– вычисление первого вектора в координатном пространстве камеры, протягивающемся из начала координат камеры в координаты для части субъекта;
– вычисление второго вектора в координатном пространстве камеры, протягивающемся из начала координат камеры в точку на мягкой границе;
– определение угла между первым вектором и вторым вектором и использование угла для того, чтобы масштабировать время отслеживания;
– проецирование первого и второго векторов на горизонтальную ось камеры в качестве базиса, использование первого и второго векторов для того, чтобы вычислять кватернионное вращение вокруг горизонтальной оси, и вращение камеры вокруг горизонтальной оси с кватернионом; и
– проецирование первого и второго векторов на вертикальную ось камеры в качестве базиса, использование первого и второго векторов для того, чтобы вычислять кватернионное вращение вокруг вертикальной оси, и вращение камеры вокруг вертикальной оси с кватернионом.
3. Система по любому из предшествующих пунктов, дополнительно содержащая модуль управления коллайдерами, выполненный с возможностью перемещать виртуальную камеру вперед на целевом луче, ассоциированном с виртуальной камерой, чтобы избегать препятствия, которое вызывает скомпрометированность целевого луча, причем целевой луч протягивается из начала координат трехмерной камеры через целевую область на экране камеры в трехмерные координаты, ассоциированные с частью субъекта.
4. Система по п. 3, в которой модуль управления коллайдерами дополнительно выполнен с возможностью перемещать виртуальную камеру в обратном векторном направлении, ассоциированном с целевым лучом, на исходную высоту, ассоциированную с виртуальной камерой, до вызывания скомпрометированности целевого луча посредством препятствия; при этом перемещение включает в себя итеративное выполнение последовательности этапов, причем последовательность этапов включает в себя:
– отбрасывание отрицательного луча вдоль оси камеры, в направлении от части субъекта, до тех пор, пока отрицательный луч не сходится с горизонтальной плоскостью, заданной посредством исходной высоты;
– на основе невстречающегося препятствия вдоль отрицательного луча, перемещение виртуальной камеры вдоль отрицательного луча до тех пор, пока камера не находится на исходной высоте;
– на основе встречающегося препятствия, проецирование отрицательного луча на плоскость, заданную посредством нормали препятствия в точке, в которой отрицательный луч наталкивается на препятствие; и,
– задание нового направления луча в качестве проекции отрицательного луча на плоскость, заданную посредством нормали препятствия для препятствия; и,
– на основе нового направления луча, указывающего в направлении от горизонтальной плоскости, оставление виртуальной камеры в текущем месте;
– на основе нового направления луча, указывающего на горизонтальную плоскость, протягивание нового луча в новом направлении луча, с прекращением тогда, когда либо горизонтальная плоскость достигается, либо на второе препятствие наталкиваются, либо край ограничивающего прямоугольника препятствия достигается;
– на основе достижения третьего препятствия, повторение перемещения виртуальной камеры; и
– на основе достижения края ограничивающего прямоугольника, переопределение оси камеры в качестве направления из части субъекта в точку на пересечении нового луча и края ограничивающего прямоугольника и повторение перемещения виртуальной камеры.
5. Система по п. 3 или 4, дополнительно содержащая дополнительный модуль управления композицией и дополнительный модуль управления коллайдерами, включенные в одно или более компьютерных запоминающих устройств, причем дополнительный модуль управления композицией и дополнительный модуль управления коллайдерами выполнены с возможностью выполнять операции для изменения ориентации и позиции дополнительной виртуальной камеры для того, чтобы поддерживать часть субъекта в целевой области, ассоциированной с дополнительной виртуальной камерой, причем виртуальная камера и дополнительная виртуальная камера содержат метакамеру, причем метакамера выполнена с возможностью выбирать либо виртуальную камеру, либо дополнительную виртуальную камеру на основе количественного показателя съемки части субъекта, захваченного посредством виртуальной камеры, и количественного показателя съемки части субъекта, захваченного посредством дополнительной виртуальной камеры.
6. Система по п. 5, в которой количественный показатель съемки, захваченной посредством виртуальной камеры, или количественный показатель съемки, захваченной посредством дополнительной виртуальной камеры, определяется, по меньшей мере, посредством активности модуля управления коллайдерами, дополнительного модуля управления коллайдерами, модуля управления композицией или дополнительного модуля управления композицией, при этом активность включает в себя:
– величину сдвига, присваиваемую виртуальной камере и дополнительной виртуальной камере; и
– величину вращения, присваиваемую виртуальной камере и дополнительной виртуальной камере.
7. Способ управления ориентацией виртуальной камеры, содержащий этапы, на которых:
– выполняют операции для изменения ориентации виртуальной камеры для того, чтобы поддерживать часть субъекта в целевой зоне на экране виртуальной камеры, причем операции содержат:
– ассоциируют мягкую границу с целевой областью, причем мягкая граница представляет собой первую линейную границу на экране, которая заключает целевую область, причем мягкая граница ассоциирована с первым временем отслеживания для изменения ориентации виртуальной камеры;
– ассоциируют жесткую границу с целевой областью, причем жесткая граница представляет собой вторую линейную границу на экране, которая заключает область за пределами мягкой границы, причем жесткая граница ассоциирована со вторым временем отслеживания для изменения переориентации виртуальной камеры;
– на основе обнаружения того, что часть субъекта находится в местоположении, которое находится за пределами жесткой границы, ассоциированной с целевой областью, задают второе время отслеживания равным нулю и выполняют изменение ориентации, чтобы возвращать часть субъекта на жесткую границу по существу сразу; и
– на основе обнаружения того, что часть субъекта находится в местоположении между мягкой границей и жесткой границей, определяют первое время отслеживания для изменения ориентации виртуальной камеры, определяют первое время отслеживания на основе величины разделения между частью субъекта и целевой областью и выполняют изменение ориентации виртуальной камеры для того, чтобы возвращать часть субъекта на мягкую границу за первое время отслеживания.
8. Способ по п. 7, в котором выполнение изменения ориентации содержит этапы, на которых:
– определяют координаты для части субъекта в координатном пространстве камеры;
– находят точку на мягкой границе около координат для части субъекта;
– вычисляют первый вектор в координатном пространстве камеры, протягивающемся из начала координат камеры в координаты для части субъекта;
– вычисляют второй вектор в координатном пространстве камеры, протягивающемся из начала координат камеры в точку на мягкой границе;
– определяют угол между первым вектором и вторым вектором и используют угол для того, чтобы масштабировать время отслеживания;
– проецируют первый и второй векторы на горизонтальную ось камеры в качестве базиса, используют первый и второй векторы для того, чтобы вычислять кватернионное вращение вокруг горизонтальной оси, и вращают камеру вокруг горизонтальной оси с кватернионом; и
– проецируют первый и второй векторы на вертикальную ось камеры в качестве базиса, используют первый и второй векторы для того, чтобы вычислять кватернионное вращение вокруг вертикальной оси, и вращают камеру вокруг вертикальной оси с кватернионом.
9. Способ по п. 8, дополнительно содержащий модуль управления коллайдерами, выполненный с возможностью перемещать виртуальную камеру вперед на целевом луче, ассоциированном с виртуальной камерой, чтобы избегать препятствия, которое вызывает скомпрометированность целевого луча, причем целевой луч протягивается из начала координат трехмерной камеры через целевую область на экране камеры в трехмерные координаты, ассоциированные с частью субъекта.
10. Способ по п. 9, в котором модуль управления коллайдерами дополнительно выполнен с возможностью перемещать виртуальную камеру в обратном векторном направлении, ассоциированном с целевым лучом, на исходную высоту, ассоциированную с виртуальной камерой, до вызывания скомпрометированности целевого луча посредством препятствия; при этом модуль управления коллайдерами дополнительно выполнен с возможностью перемещать виртуальную камеру в обратном векторном направлении, ассоциированном с целевым лучом, на исходную высоту, ассоциированную с виртуальной камерой, до вызывания скомпрометированности целевого луча посредством препятствия; при этом перемещение включает в себя итеративное выполнение последовательности этапов, причем последовательность этапов включает в себя этапы, на которых:
– отбрасывают отрицательный луч вдоль оси камеры, в направлении от части субъекта, до тех пор, пока отрицательный луч не сходится с горизонтальной плоскостью, заданной посредством исходной высоты;
– на основе невстречающегося препятствия вдоль отрицательного луча, перемещают виртуальную камеру вдоль отрицательного луча до тех пор, пока камера не находится на исходной высоте;
– на основе встречающегося препятствия, проецируют отрицательный луч на плоскость, заданную посредством нормали препятствия в точке, в которой отрицательный луч наталкивается на препятствие; и,
– задают новое направление луча в качестве проекции отрицательного луча на плоскость, заданную посредством нормали препятствия для препятствия; и,
– на основе нового направления луча, указывающего в направлении от горизонтальной плоскости, оставляют виртуальную камеру в текущем месте;
– на основе нового направления луча, указывающего на горизонтальную плоскость, протягивают новый луч в новом направлении луча, с прекращением тогда, когда либо горизонтальная плоскость достигается, либо на второе препятствие наталкиваются, либо край ограничивающего прямоугольника препятствия достигается;
– на основе достижения третьего препятствия, повторяют перемещение виртуальной камеры; и
– на основе достижения края ограничивающего прямоугольника, переопределяют ось камеры в качестве направления из части субъекта в точку на пересечении нового луча и края ограничивающего прямоугольника и повторяют перемещение виртуальной камеры.
11. Способ по п. 9 или 10, дополнительно содержащий дополнительный модуль управления композицией и дополнительный модуль управления коллайдерами, включенные в одно или более компьютерных запоминающих устройств, причем дополнительный модуль управления композицией и дополнительный модуль управления коллайдерами выполнены с возможностью выполнять операции для изменения ориентации и позиции дополнительной виртуальной камеры для того, чтобы поддерживать часть субъекта в целевой области, ассоциированной с дополнительной виртуальной камерой, причем виртуальная камера и дополнительная виртуальная камера содержат метакамеру, причем метакамера выполнена с возможностью выбирать либо виртуальную камеру, либо дополнительную виртуальную камеру на основе количественного показателя съемки части субъекта, захваченного посредством виртуальной камеры, и количественного показателя съемки части субъекта, захваченного посредством дополнительной виртуальной камеры.
12. Способ по п. 11, в котором количественный показатель съемки, захваченной посредством виртуальной камеры, или количественный показатель съемки, захваченной посредством дополнительной виртуальной камеры, определяется, по меньшей мере, посредством активности модуля управления коллайдерами, дополнительного модуля управления коллайдерами, модуля управления композицией или дополнительного модуля управления композицией, при этом активность включает в себя:
– величину сдвига, присваиваемую виртуальной камере и дополнительной виртуальной камере; и
– величину вращения, присваиваемую виртуальной камере и дополнительной виртуальной камере.
13. Энергонезависимый машиночитаемый носитель, сохраняющий набор инструкций, которые, при выполнении посредством одного или более процессоров, инструктируют одному или более процессорам выполнять операции для изменения ориентации виртуальной камеры для того, чтобы поддерживать часть субъекта в целевой зоне на экране виртуальной камеры, причем операции содержат:
– ассоциирование мягкой границы с целевой областью, причем мягкая граница представляет собой первую линейную границу на экране, которая заключает целевую область, причем мягкая граница ассоциирована с первым временем отслеживания для изменения ориентации виртуальной камеры;
– ассоциирование жесткой границы с целевой областью, причем жесткая граница представляет собой вторую линейную границу на экране, которая заключает область за пределами мягкой границы, причем жесткая граница ассоциирована со вторым временем отслеживания для изменения переориентации виртуальной камеры;
– на основе обнаружения того, что часть субъекта находится в местоположении, которое находится за пределами жесткой границы, ассоциированной с целевой областью, задание второго времени отслеживания равным нулю и выполнение изменения ориентации, чтобы возвращать часть субъекта на жесткую границу по существу сразу; и
– на основе обнаружения того, что часть субъекта находится в местоположении между мягкой границей и жесткой границей, определение первого времени отслеживания для изменения ориентации виртуальной камеры, определение первого времени отслеживания на основе величины разделения между частью субъекта и целевой областью и выполнение изменения ориентации виртуальной камеры для того, чтобы возвращать часть субъекта на мягкую границу за первое время отслеживания.
14. Энергонезависимый машиночитаемый носитель по п. 13, в котором выполнение изменения ориентации содержит:
– определение координат для части субъекта в координатном пространстве камеры;
– нахождение точки на мягкой границе около координат для части субъекта;
– вычисление первого вектора в координатном пространстве камеры, протягивающемся из начала координат камеры в координаты для части субъекта;
– вычисление второго вектора в координатном пространстве камеры, протягивающемся из начала координат камеры в точку на мягкой границе;
– определение угла между первым вектором и вторым вектором и использование угла для того, чтобы масштабировать время отслеживания;
– проецирование первого и второго векторов на горизонтальную ось камеры в качестве базиса, использование первого и второго векторов для того, чтобы вычислять кватернионное вращение вокруг горизонтальной оси, и вращение камеры вокруг горизонтальной оси с кватернионом; и
– проецирование первого и второго векторов на вертикальную ось камеры в качестве базиса, использование первого и второго векторов для того, чтобы вычислять кватернионное вращение вокруг вертикальной оси, и вращение камеры вокруг вертикальной оси с кватернионом.
15. Энергонезависимый машиночитаемый носитель по любому из пп. 13 или 14, дополнительно содержащий модуль управления коллайдерами, выполненный с возможностью перемещать виртуальную камеру вперед на целевом луче, ассоциированном с виртуальной камерой, чтобы избегать препятствия, которое вызывает скомпрометированность целевого луча, причем целевой луч протягивается из начала координат трехмерной камеры через целевую область на экране камеры в трехмерные координаты, ассоциированные с частью субъекта.
16. Энергонезависимый машиночитаемый носитель по п. 15, в котором модуль управления коллайдерами дополнительно выполнен с возможностью перемещать виртуальную камеру в обратном векторном направлении, ассоциированном с целевым лучом, на исходную высоту, ассоциированную с виртуальной камерой, до вызывания скомпрометированности целевого луча посредством препятствия; при этом перемещение включает в себя итеративное выполнение последовательности этапов, причем последовательность этапов включает в себя:
– отбрасывание отрицательного луча вдоль оси камеры, в направлении от части субъекта, до тех пор, пока отрицательный луч не сходится с горизонтальной плоскостью, заданной посредством исходной высоты;
– на основе невстречающегося препятствия вдоль отрицательного луча, перемещение виртуальной камеры вдоль отрицательного луча до тех пор, пока камера не находится на исходной высоте;
– на основе встречающегося препятствия, проецирование отрицательного луча на плоскость, заданную посредством нормали препятствия в точке, в которой отрицательный луч наталкивается на препятствие; и,
– задание нового направления луча в качестве проекции отрицательного луча на плоскость, заданную посредством нормали препятствия для препятствия; и,
– на основе нового направления луча, указывающего в направлении от горизонтальной плоскости, оставление виртуальной камеры в текущем месте;
– на основе нового направления луча, указывающего на горизонтальную плоскость, протягивание нового луча в новом направлении луча, с прекращением тогда, когда либо горизонтальная плоскость достигается, либо на второе препятствие наталкиваются, либо край ограничивающего прямоугольника препятствия достигается;
– на основе достижения третьего препятствия, повторение перемещения виртуальной камеры; и
– на основе достижения края ограничивающего прямоугольника, переопределение оси камеры в качестве направления из части субъекта в точку на пересечении нового луча и края ограничивающего прямоугольника и повторение перемещения виртуальной камеры.
17. Энергонезависимый машиночитаемый носитель по п. 15 или 16, дополнительно содержащий дополнительный модуль управления композицией и дополнительный модуль управления коллайдерами, включенные в одно или более компьютерных запоминающих устройств, причем дополнительный модуль управления композицией и дополнительный модуль управления коллайдерами выполнены с возможностью выполнять операции для изменения ориентации и позиции дополнительной виртуальной камеры для того, чтобы поддерживать часть субъекта в целевой области, ассоциированной с дополнительной виртуальной камерой, причем виртуальная камера и дополнительная виртуальная камера содержат метакамеру, причем метакамера выполнена с возможностью выбирать либо виртуальную камеру, либо дополнительную виртуальную камеру на основе количественного показателя съемки части субъекта, захваченного посредством виртуальной камеры, и количественного показателя съемки части субъекта, захваченного посредством дополнительной виртуальной камеры.
18. Машиночитаемый носитель, переносящий машиночитаемые инструкции, которые, при выполнении посредством одного или более процессоров, инструктируют одному или более процессорам осуществлять способ по любому из пп. 7–12.
US 20160078305 A1, 17.03.2016 | |||
US 20150287158 A1, 08.10.2015 | |||
US 8712103 B2, 29.04.2014 | |||
УСТРОЙСТВО ОБНАРУЖЕНИЯ ТРЕХМЕРНОГО ОБЪЕКТА И СПОСОБ ОБНАРУЖЕНИЯ ТРЕХМЕРНОГО ОБЪЕКТА | 2011 |
|
RU2540849C2 |
УСТРОЙСТВО ЗАХВАТА ИЗОБРАЖЕНИЯ, СЕРВЕР ОБЕСПЕЧЕНИЯ ДОПОЛНИТЕЛЬНОЙ ИНФОРМАЦИИ И СИСТЕМА ФИЛЬТРАЦИИ ДОПОЛНИТЕЛЬНОЙ ИНФОРМАЦИИ | 2008 |
|
RU2463663C2 |
Авторы
Даты
2021-04-01—Публикация
2018-03-16—Подача