Предшествующий уровень техники
[0001] Вычислительные устройства, в общем, включают в себя конвейеры визуализации графики для визуализации трехмерных моделей для отображения на двумерном дисплее.
Краткое описание сущности изобретения
[0002] Настоящее краткое описание сущности изобретения приведено, чтобы ввести в упрощенной форме подборку концепций, которые дополнительно описаны ниже в подробном описании. Настоящее краткое описание сущности изобретения не предназначается для идентификации ключевых признаков или существенных признаков заявленного изобретения и не предназначается, чтобы использоваться для ограничения объема заявленного изобретения. Более того, заявленное изобретение не ограничено реализациями, которые устраняют какие-либо или все недостатки, отмеченные в любой части настоящего раскрытия.
[0003] Раскрыты примеры, которые относятся к гибридному рендерингу. Один раскрытый пример обеспечивает вычислительное устройство, содержащее устройство обработки и устройство хранения, хранящее инструкции, исполняемые устройством обработки для исполнения в первом локальном процессе приложения, которое выводит цифровой контент для визуализации (рендеринга) и отображения. Инструкции исполняются, чтобы предоставлять, во второй локальный или удаленный процесс, информацию объекта касаемо объекта, подлежащего визуализации вторым локальным или удаленным процессом, принимать из второго локального или удаленного процесса визуализацию объекта, выводить на дисплей визуализацию объекта для отображения объекта, принимать действие, выполняемое с объектом, предоставлять, во второй локальный или удаленный процесс, обновленную информацию объекта на основе действия, выполняемого с объектом, принимать, из второго локального или удаленного процесса, обновленную визуализацию объекта и выводить на дисплей обновленную визуализацию объекта для отображения объекта.
[0004] Другой пример обеспечивает вычислительную систему, содержащую устройство обработки и устройство хранения, хранящее инструкции, исполняемые устройством обработки, чтобы принимать, от вычислительного устройства, информацию объекта касаемо объекта, подлежащего визуализации, на основе принятой информации объекта, визуализировать объект, предоставлять, на вычислительное устройство, визуализацию объекта, принимать, от вычислительного устройства, обновленную информацию объекта касаемо действия, выполняемого с объектом, визуализировать объект на основе принятой обновленной информации объекта касаемо действия, выполняемого с объектом, и предоставлять, на вычислительное устройство, обновленную визуализацию объекта.
[0005] Другой пример обеспечивает способ, реализуемый на вычислительном устройстве, причем способ содержит исполнение приложения, которое выводит цифровой контент для визуализации и отображения, во время исполнения приложения, идентификацию первого объекта цифрового контента, подлежащего визуализации удаленно, и также идентификацию второго объекта цифрового контента, подлежащего визуализации локально, предоставление, на удаленную вычислительную систему, информации объекта касаемо первого объекта, подлежащего визуализации удаленной вычислительной системой, прием, от удаленной вычислительной системы, визуализации первого объекта, локальную визуализацию второго объекта, чтобы сгенерировать визуализацию второго объекта, и компоновку визуализации первого объекта и визуализации второго объекта для отображения как составного кадра.
Краткое описание чертежей
[0006] Фиг. 1A и 1B изображают примерную среду использования, в которой вычислительное устройство компонует локально визуализируемый и удаленно визуализируемый цифровой контент для отображения как составного кадра.
[0007] Фиг. 2 является блок-схемой, иллюстрирующей примерную систему гибридного рендеринга.
[0008] Фиг. 3 является блок-схемой последовательности операций, иллюстрирующей примерный способ подготовки контента для визуализации.
[0009] Фиг. 4 является блок-схемой последовательности операций, иллюстрирующей примерный способ обновления отображения удаленно визуализируемого объекта на основе ввода, осуществляемого, чтобы манипулировать удаленно визуализируемым объектом.
[0010] Фиг. 5 является блок-схемой последовательности операций, иллюстрирующей примерный способ визуализации объекта на основе информации, принятой от вычислительного устройства.
[0011] Фиг. 6 является блок-схемой, иллюстрирующей примерную вычислительную систему.
Подробное описание
[0012] Аппаратные средства обработки на вычислительном устройстве могут ограничивать способности визуализации вычислительного устройства. Например, визуализация сложной модели может быть ограничена тактовой частотой, объемом доступной памяти, шириной полосы памяти и/или другой характеристикой процессора графики (GPU) или центрального процессора (CPU), локального для вычислительного устройства. В частности, высокомобильные устройства, такие как сотовые телефоны и непривязные наголовные устройства отображения (например, которые не соединены с другим вычислительным устройством посредством проводного соединения) могут не иметь достаточно мощности GPU и/или CPU для визуализации сложных сцен с приемлемыми рабочими характеристиками.
[0013] Различные подходы могут предприниматься, чтобы уменьшать такие проблемы. Например, вычислительное устройство может быть сконфигурировано, чтобы сокращать сложную модель, чтобы упростить модель для визуализации. Однако сокращение удаляет детали из модели, что может подвергать риску желательную визуальную точность модели. В качестве другого подхода, вместо сокращения модели вычислительное устройство может быть сконфигурировано, чтобы запускать приложение удаленно, так что удаленная вычислительная система высокой мощности визуализирует весь цифровой контент для приложения и переносит визуализируемые изображения (например, как видеопоток) на вычислительное устройство. Визуализируемые изображения могут включать в себя полную детализацию соответствующей модели. Однако такое решение переносит всю логику приложения на удаленную вычислительную систему. В результате, если вычислительное устройство теряет сетевую связность, вычислительное устройство может стать неспособным отображать удаленно визуализируемый контент, пока сетевое соединение не будет восстановлено. Дополнительно, сетевой перенос удаленно визуализируемого контента может быть слишком медленным для чувствительного к задержке контента, как в случае, когда отображаемой моделью манипулируют.
[0014] В дополнение к проблемам, описанным выше, удаленная визуализация всего контента для приложения налагает различные другие ограничения. Например, системы, которые визуализируют весь контент удаленно, могут не предоставлять функциональные возможности локальной визуализации, возможности ввода, аппаратный доступ и т.д. для клиентского устройства и, таким образом, не позволяют разработчикам приложения назначать контент для локальной визуализации, а не удаленной визуализации. Способность выполнять локальную визуализацию может быть релевантной, например, для разработчиков, которые желают использовать конкретный игровой механизм (движок) и/или структуру (фреймворк) пользовательского интерфейса для написания кода приложения для чувствительных к запаздыванию случаев использования (например, рисование, анимация или другой контент, коррелированный с объектом реального мира, и т.д.) и для приложений, сконфигурированных, чтобы запускаться оффлайн, которые интегрируют удаленно визуализируемый контент по требованию для конкретных случаев использования.
[0015] Соответственно, раскрыты примеры, которые могут обеспечивать функциональные возможности для клиентского вычислительного устройства посредством системы гибридного рендеринга, которая позволяет разработчикам приложения включать логику для генерации как удаленно визуализируемого контента, так и локально визуализируемого контента для компоновки в локально отображаемый образ. Например, более сложный контент, такой как модели компьютерного проектирования, может визуализироваться на удаленной вычислительной системе и передаваться потоком на клиентское устройство, исполняющее приложение, которое генерирует и/или отображает модели. Клиентское устройство может дополнять удаленно визуализируемый контент локально визуализируемым контентом, таким как облегченный, имеющий низкую задержку контент (например, элементы пользовательского интерфейса/пользовательского опыта, рисование, контент, коррелированный с объектом реального мира, таким как шарнирная рука (манипулятор), и т.д.). Клиентское устройство также может выполнять скорректированное по глубине смешение, чтобы обеспечивать надлежащие окклюзивные отношения между удаленно и локально визуализируемым контентом. Дополнительно, удаленная вычислительная система может представлять API графа удаленной сцены, который клиентское устройство может использовать, чтобы взаимодействовать с удаленно визуализируемым контентом, например, путем обновления материалов, манипулирования преобразованиями объекта, внесения нового контента в удаленную сцену и выполнения запросов рейкастинга (“бросания лучей”). Это может помочь оптимизировать способности обработки удаленной вычислительной системы без запуска всего приложения в облаке. Путем использования механизма вызова удаленной процедуры (RPC), чтобы взаимодействовать с удаленно визуализируемым контентом, система гибридного рендеринга обеспечивает управление клиентским устройством по элементам сцены (ориентация, положение, масштабирование, свойства материалов и т.д.), визуализируемой удаленно, и, таким образом, позволяет запускать всю логику приложения локально на клиентском устройстве. Дополнительно, модели, которые предназначены для удаленной визуализации, могут также визуализироваться локально (например, с использованием замещающего или сокращенного контента), даже если сетевая связность потеряна или недоступна.
[0016] Фиг. 1A изображает примерную среду 100 использования, в которой вычислительное устройство 102 обеспечивает способности взаимодействия с удаленно визуализируемым контентом и также дополняет удаленно визуализируемый контент локально визуализируемым контентом. В примере на фиг. 1A, вычислительное устройство 102 содержит устройство отображения смешанной реальности, сконфигурированное, чтобы соединять образ виртуальной реальности (например, голографический образ) с образом реального мира посредством прозрачного дисплея. В других примерах, вычислительное устройство 102 может содержать другое мобильное вычислительное устройство (устройство отображения виртуальной реальности, сотовый телефон, планшет и т.д.), ноутбук, персональный компьютер, игровую консоль или любое другое подходящее вычислительное устройство. Хотя в этом примере изображена жилая среда 100, примеры, описанные здесь, могут быть реализованы в любых других подходящих средах использования. Примеры других сред использования включают в себя другие внутренние пространства, такие как коммерческие пространства (например, офисы, школы, склады и т.д.), и внешние пространства (например, строительные площадки, парки и т.д.).
[0017] Возвращаясь к фиг. 1A, вычислительное устройство 102 отображает составной кадр, содержащий локально визуализируемую руку 104, удаленно визуализируемую собаку 106 и удаленно визуализируемую лампу 108. Перед визуализацией и отображением этих объектов, приложение, исполняемое на вычислительном устройстве 102, запрашивает загрузить модель сцены и идентифицирует в модели контент для локальной визуализации и контент для удаленной визуализации. Например, выбранное приложение, для которого вычислительное устройство 102 запрашивает загрузить модель, может включать в себя, для каждого объекта, условную логику (например, на основе ширины полосы сети, сложности объекта и т.д.) или абсолютную логику касаемо того, как визуализировать объект.
[0018] Для каждого объекта 106, 108, идентифицированного для удаленной визуализации, вычислительное устройство 102 предоставляет информацию объекта в систему 110 удаленного рендеринга через сеть 112. Информация объекта может содержать любую подходящую информацию касаемо объекта(ов) 106, 108, подлежащего удаленной визуализации. В некоторых примерах, информация объекта содержит трехмерную модель (например, высоко-полигональную (многогранную) ячейку, содержащую множество полигонов на отображаемый пиксел, модель на основе вокселов и т.д.), включающую в себя геометрию для каждого объекта 106, 108. Информация объекта также может содержать материал (например, текстуру) для каждого объекта 106, 108. Дополнительно, информация объекта также может содержать информацию сцены, описывающую местоположения и/или ориентации каждого объекта 106, 108 в пределах сцены, которая может быть абсолютной или относительной по отношению к другому объекту в сцене. В других примерах, информация объекта содержит запрос загрузить и/или обновить существующую модель, сохраненную системой 110 удаленной визуализации, например, модель, сохраненную во время разработки приложения.
[0019] Система 110 удаленного рендеринга может принимать информацию объекта (от вычислительного устройства 102 или другого устройства или процесса) до или во время исполнения приложения, для которого объект 106, 108 подлежит визуализации и отображению. Когда система 110 удаленного рендеринга принимает информацию объекта перед временем выполнения (прогона), система 110 удаленного рендеринга может сохранять информацию объекта для извлечения в течение времени выполнения, например, после приема запроса загрузить и/или обновить модель, содержащую информацию объекта. В любом случае, система 110 удаленного рендеринга сохраняет информацию, принятую от вычислительного устройства 102, в графе сцены или другой подходящей структуре данных, доступ к которой осуществляется вычислительным устройством 102.
[0020] Вычислительное устройство 102 может также предоставлять информацию касаемо воспринимаемой или предсказанной позы (рука, голова и т.д.) и/или направления взгляда пользователя 114 на систему удаленного рендеринга. В некоторых примерах, вычислительное устройство 102 может определять местоположение виртуальной камеры на основе воспринимаемой позы/взгляда и может предоставлять определенное положение виртуальной камеры на систему 110 удаленного рендеринга для ввода в конвейер визуализации. В других примерах, вычислительное устройство 102 может предоставлять данные датчика (например, необработанные или обработанные данные датчика) касаемо воспринимаемой позы/направления взгляда на систему 110 удаленного рендеринга, которые система 110 удаленного рендеринга может использовать, чтобы определять преобразование виртуальной камеры для визуализации. Система 110 удаленного рендеринга вводит информацию объекта и местоположение виртуальной камеры в конвейер визуализации и визуализирует каждый объект 106, 108. Для каждого объекта 106, 108, конвейер визуализации выводит визуализацию объекта, которая может принимать форму визуализируемых пикселов или любое другое подходящее представление каждого визуализируемого объекта. Визуализация объекта содержит буфер цвета и буфер глубины. Система 110 удаленного рендеринга тогда предоставляет буфер цвета и опционально буфер глубины (или другое представление данных глубины) на вычислительное устройство 102 как данные видео (например, поток сжатого видео).
[0021] Вычислительное устройство 102 может локально визуализировать руку 104, например, на основе воспринимаемого положения реальной руки в пределах поля обзора датчика изображения вычислительного устройства 102 и опционально на основе данных глубины, принятых от системы 110 удаленной визуализации. Таким образом, представление руки 104, визуализируемой локально, может визуализироваться ближе к реальному времени, чем объект, визуализируемый удаленно. Чтобы способствовать компенсации сетевого запаздывания, вычислительное устройство 102 может репроецировать визуализации, принятые от системы 110 удаленной визуализации. Это может содержать репроецирование буфера цвета и опционально буфера глубины визуализаций, принятых от системы 110 удаленной визуализации, например, на основе недавно полученных данных позы/взгляда. Любой другой подходящий процесс снижения запаздывания и стабилизации изображения может выполняться в дополнение или альтернативно репроецированию визуализаций, принятых от системы 110 удаленной визуализации.
[0022] Как описано более подробно ниже, вычислительное устройство 102 компонует визуализации собаки 106 и лампы 108 с визуализацией руки 104 для отображения как составного кадра. Чтобы способствовать стабилизации сцены и компенсации любого движения в течение времени между визуализацией локально визуализируемых объектов / репроецированием удаленно визуализируемых объектов и отображением составного изображения, вычислительное устройство может выполнять процесс репроецирования на поздней стадии (LSR) перед выводом составного кадра для отображения, как описано более подробно ниже.
[0023] Когда сцена визуализируется и отображается, пользователю может быть желательным взаимодействовать с отображаемым контентом. В примере на фиг. 1A, пользователь 114 может взаимодействовать с отображаемой лампой 108 (например, перемещать лампу, включать/выключать лампу и т.д.) и также может взаимодействовать с отображаемой собакой 106. По мере того, как пользователь 114 взаимодействует с удаленно визуализируемым объектом, вычислительное устройство 102 выполняет вызов на удаленный API касаемо действия, выполняемого с объектом, и принимает обновленную визуализацию от системы 110 удаленной визуализации, что может происходить на покадровой основе в некоторых примерах. На фиг. 1B, вычислительное устройство 102 предоставляет, на систему 110 удаленного рендеринга, ввод касаемо жеста 116 взмаха, выполняемого для управления отображением собаки 106. В ответ, вычислительное устройство принимает обновленную визуализацию собаки 106 от системы 110 удаленной визуализации и выводит обновленную визуализацию для отображения. Как показано на фиг. 1B, собака 106 визуализируется и отображается как встающая в ответ на ввод 116 жеста взмаха.
[0024] Фиг. 2 изображает примерную систему 200 гибридного рендеринга, содержащую вычислительное устройство 202 и систему 204 удаленного рендеринга. Примерные вычислительные устройства, подходящие для использования в качестве вычислительного устройства 202, включают в себя мобильные вычислительные устройства (устройства отображения дополненной реальности, устройства отображения виртуальной реальности, сотовые телефоны, планшеты и т.д.), портативные вычислительные устройства, настольные вычислительные устройства, игровые консоли и т.д. Система 204 удаленного рендеринга может содержать вторую вычислительную систему, имеющую любое количество и тип вычислительного устройства (устройств), имеющего достаточные функциональные возможности визуализации для реализации процессов гибридного рендеринга, описанных здесь. В некоторых примерах, система 204 удаленного рендеринга содержит один или более серверных компьютеров, таких как серверные компьютеры, хостируемые в облачной вычислительной среде. В других примерах, система 204 удаленного рендеринга содержит один или более серверных компьютеров, настольных компьютеров и/или другое вычислительное устройство (устройства), локальные для использования в среде вычислительного устройства 202.
[0025] Вычислительное устройство 202 содержит клиентское приложение 206, которое выводит цифровой контент для визуализации и отображения. Примеры клиентских приложений включают в себя приложения для игр, компьютерного проектирования/визуализации и инструкций/образования. Клиентское приложение 206 сконфигурировано, чтобы обеспечивать игровой движок 208 или другой движок рендеринга. Любой подходящий движок рендеринга может использоваться в качестве игрового движка 208, включая программное обеспечение первой и третьей стороны, которое существует независимо от сервиса удаленной визуализации. Термин “сервис удаленной визуализации”, как использовано здесь, относится к сервису, который использует удаленно хостируемый движок рендеринга, чтобы визуализировать пикселы для передачи на вычислительное клиентское устройство (например, вычислительное устройство 202) для локального отображения, и поддерживает гибридную визуализацию, как описано здесь.
[0026] Решение касаемо того, как визуализировать цифровой контент в клиентском приложении 206, является решением времени разработки, доступным разработчику приложения. Например, разработчик приложения может включать логику в узле графа сцены или другую структуру данных касаемо того, как визуализировать объект, представляемый узлом графа сцены. В некоторых примерах, клиентское приложение 206 может включать в себя условную логику для визуализации объекта (например, визуализировать объект удаленно, если сетевое запаздывание больше или равно порогу). Клиентское приложение 206 может также содержать абсолютную логику для визуализации объекта (например, локально визуализировать пользовательский интерфейс, удаленно визуализировать высокополигональную модель и т.д.). В любом примере, логика клиентского приложения 206 может использоваться, чтобы управлять как локально визуализируемой сценой, так и удаленно визуализируемой сценой.
[0027] Продолжая ссылаться на фиг. 2, клиентское приложение 206 также сконфигурировано, чтобы обеспечивать библиотеку 210 компонентов удаленной визуализации (RR), которая может быть разработана конкретно для игрового движка 208, используемого вычислительным устройством 202. Библиотека 210 компонентов RR сконфигурирована, чтобы взаимодействовать с библиотекой 212 клиента RR, которая служит как конечная точка стороны клиента сервиса удаленной визуализации. Как описано более подробно ниже, библиотека 212 клиента RR может быть реализована как облегченный API графа сцены стороны клиента, который переводит вызовы API в сообщения, которые отправляются на систему 204 удаленного рендеринга.
[0028] Система 204 удаленного рендеринга содержит библиотеку 214 сервера RR, которая служит как удаленная конечная точка сервиса удаленной визуализации. Библиотека 214 сервера RR сконфигурирована, чтобы принимать, посредством сети, информацию объекта и обновленную информацию объекта (например, обновления графа сцены) от библиотеки 212 клиента RR вычислительного устройства 202. Система 204 удаленного рендеринга может представлять, посредством библиотеки 214 сервера RR, облегченный API графа сцены для предоставления и обновления данных графа сцены между вычислительным устройством 202 и системой 204 удаленной визуализации. Данные графа сцены могут включать в себя, например, сетки, свойства материала (например, для затенения на физической основе и/или затенения по Фонгу), трехмерный текст, освещение, отображение тонов (тональная компрессия), преобразования узла и/или специфические для использования признаки (например, секущие плоскости). В некоторых примерах, данные графа сцены могут также кэшироваться на вычислительном устройстве 202, что может помочь вычислительному устройству 202 быстро осуществить доступ к данным графа сцены в течение времени выполнения, например, когда сетевое соединение с системой 204 удаленной визуализации недоступно.
[0029] Граф сцены может использоваться, например, чтобы предписывать системе 204 удаленного рендеринга загрузить конкретную сцену, информировать вычислительное устройство 202 о сцене кадра, загруженной системой 204 удаленной визуализации, позволять вычислительному устройству 202 управлять данными в удаленном графе сцены (например, задавать анимации/движения объекта), позволять вычислительному устройству 202 создавать новые узлы в удаленном графе сцены и манипулировать узлами и/или позволять вычислительному устройству 202 выполнять асинхронные запросы, такие как рейкастинг (бросание луча) в удаленный граф сцены, для исполнения системой 204 удаленной визуализации.
[0030] В некоторых примерах, граф сцены может сворачиваться в различные классы на основе инструментов/движка (например, игрового движка 208), используемых вычислительным устройством 202. Дополнительно, граф сцены API может проецироваться в целевые языки, такие как C, C# и JavaScript. Это может представлять возможности системы 204 удаленного рендеринга произвольным приложениям третьей стороны, независимо от игрового движка/движка рендеринга, который такие приложения используют. Система 204 удаленного рендеринга также может с выгодой использоваться в веб- и мобильных приложениях, в дополнение или альтернативно приложениям смешанной или виртуальной реальности.
[0031] Система 204 удаленного рендеринга дополнительно содержит сервис 216 дистанционного взаимодействия с приложением, сконфигурированный, чтобы обеспечивать ввод, такой как обновленная информация объекта (например, данные графа сцены), принятая от вычислительного устройства 202, на движок 218 рендеринга и обеспечивать визуализацию объекта на вычислительное устройство 202. Сервис 216 дистанционного взаимодействия с приложением может принимать форму программного обеспечения первой или третьей стороны, которое существует независимо от сервиса удаленной визуализации, в некоторых примерах. На основе принятой обновленной информации объекта, движок 218 рендеринга вводит обновленную информацию объекта в конвейер визуализации и визуализирует объект, чтобы генерировать визуализацию объекта. В некоторых примерах, конвейер визуализации может поддерживать пользовательские шейдеры.
[0032] Движок 218 рендеринга может быть реализован посредством одного или нескольких устройств обработки. В примере, показанном на фиг. 2, движок 218 рендеринга реализован посредством GPU 218a, сконфигурированного, чтобы визуализировать высокополигональный контент. Движок 218 рендеринга также может быть реализован посредством CPU (не показан), который обеспечивает задачи визуализации на GPU. Дополнительно, движок рендеринга может включать в себя другие устройства обработки, такие как другие GPU 218b, 218c в некоторых примерах. В других примерах, любое другое подходящее количество и/или тип устройств обработки могут использоваться, чтобы реализовывать движок 218 рендеринга, включая примеры, описанные ниже со ссылкой на фиг. 6. Будет понятно, что стандартный коммерческий движок может использоваться в качестве движка 218 рендеринга в некоторых примерах.
[0033] Система 200 гибридного рендеринга может реализовывать различные стратегии, чтобы обрабатывать большие графы сцен и выводить счетчик вызовов. Например, система 204 удаленного рендеринга может структурировать сетку или другую модель, так что данные материала и преобразования могут выводиться из буфера стороны GPU, а также может с выгодой использовать ориентированный на графику комплект API (такой как DirectX12 (DX12), доступный от Microsoft Corp., Redmond, WA) и непрямое выведение, чтобы способствовать снижению непроизводительных издержек на вызов вывода стороны CPU. Для клиентского приложения 206, ассоциированного с большим графом сцены, система 204 удаленного рендеринга может ссылаться на компактное представление графа сцены или может модифицировать архитектуру графа сцены, чтобы работать ориентированным на данные образом (например, система компонентов объекта). Дополнительно, чтобы способствовать обновлению потенциально значительных поднаборов графа сцены в течение времени выполнения, система 200 гибридного рендеринга может применять сжатие преобразования для сетевого переноса данных между вычислительным устройством 202 и системой 204 удаленной визуализации.
[0034] Сервис 216 дистанционного взаимодействия с приложением предоставляет визуализацию от движка 218 рендеринга на библиотеку 212 клиента RR как данные видео (например, поток сжатого видео), содержащие буфер цвета/кадра. В некоторых примерах, ограниченный Wi-Fi или другая ширина полосы сети может ограничивать объем данных буфера цвета/кадра, которые могут переноситься на вычислительное устройство 202. Таким образом, сервис 216 дистанционного взаимодействия с приложением может использовать стандарт сжатия видео, такой как H.265, для потоковой передачи буфера цвета на вычислительное устройство 202. Сервис 216 дистанционного взаимодействия с приложением также может выполнять потоковую передачу буфера глубины или другое представление данных глубины на вычислительное устройство 202, например, посредством высокоэффективного кодирования видео или заказного (настроенного) кодека, сконфигурированного, чтобы точно сжимать данные глубины.
[0035] В реализациях, которые передают/принимают сжатый буфер глубины, библиотека 212 клиента RR принимает и восстанавливает буфер глубины для удаленно визуализируемого контента. В некоторых примерах, вычислительное устройство 202 может реализовывать одну или более стратегий уменьшения запаздывания перед дополнением удаленно визуализируемого контента локально визуализируемым контентом. Например, при потреблении и использовании недавно полученной информации касаемо руки и отслеживания головы/взгляда на вычислительном устройстве 202, вычислительное устройство 202 может визуализировать изображение с использованием преобразования камеры, которое было использовано, чтобы визуализировать удаленно визуализируемое изображение. В качестве другого примера, вычислительное устройство 202 может эффективно использовать недавно полученные данные позы/взгляда, чтобы репроецировать буфер цвета и буфер глубины удаленно визуализируемого контента.
[0036] Система 200 гибридного рендеринга дополнительно может реализовывать различные другие стратегии уменьшения запаздывания. В качестве одного примера, система 204 удаленного рендеринга может уменьшать запаздывание путем выполнения цветовой субдискретизации на буфере цвета, чтобы уменьшить количество отправляемых данных. Система 204 удаленного рендеринга также может выполнять визуализацию множества GPU, такую как визуализацию множества GPU на основе мозаичного элемента и/или на основе геометрии/кластера. В примерном процессе визуализации множества GPU на основе геометрии/кластера, геометрия модели подразделяется на кластеры и распределяется по множеству GPU, и каждый GPU визуализирует свою соответственную назначенную геометрию и предоставляет буферы цвета и глубины по шине PCIe на главный GPU (например, 218a на фиг. 2), который выполняет объединение буферов со знанием глубины и кодирование видео. Визуализация с множеством GPU может способствовать поддержке больших сеток визуализации (например, 100M+ полигонов) на достаточных скоростях кадров (например, 60 Гц) и также может уменьшать запаздывание путем уменьшения всего времени визуализации. В качестве другого примера стратегий уменьшения запаздывания и ширины полосы, сервис 216 дистанционного взаимодействия с приложением может перемежать кодирование стереоизображений на 120 Гц или может кодировать дельту между репроецированным и исходным кадром для второго глаза, а не полным вторым изображением. Дополнительно, сама гибридный рендеринг может способствовать уменьшению запаздывания по сравнению с системой, которая визуализирует весь контент удаленно, так как по меньшей мере некоторый контент может визуализироваться локально на вычислительном устройстве 202, а не переноситься по сети.
[0037] Когда вычислительное устройство 202 подвергает декомпрессии буфер глубины, принятый от удаленной вычислительной системы 204 (в реализациях, которые передают/принимают сжатый буфер глубины), или иным образом выполняет любую необходимую обработку на принятой информации глубины, вычислительное устройство 202 может локально визуализировать объект при помощи буфера глубины или другой информации глубины, привязанной к конвейеру визуализации. Вычислительное устройство 202 компонует удаленно и локально визуализируемый контент для отображения как составной кадр посредством любого подходящего процесса объединения буфера кадров. В некоторых примерах, вычислительное устройство выполняет скорректированное по глубине смешение, чтобы обеспечить скорректированную по глубине композицию сцены. Скорректированное по глубине смешение может содержать, например, выполнение теста глубины (например, z-теста) на буфере глубины удаленно визуализируемого контента и буфере глубины локально визуализируемого контента и компоновку на основе теста глубины. Такое смешение может быть полезным во множестве сценариев, например, для функций рисования, “грифельных досок” на стороне клиента, текстовых аннотаций, визуализируемых локально для конкретной координаты глубины (например, чтобы сохранить разборчивость текста), и для функций прямого манипулирования и пользовательского интерфейса, где удаленно визуализируемый контент показывает скорректированные по глубине отношения относительно локально визуализируемого контента. В других примерах, локально визуализируемый контент находится в фиксированном положении относительно удаленно визуализируемого контента (например, пользовательский интерфейс, который находится поверх удаленно визуализируемого фона), и вычислительное устройство 202 может объединять соответственные кадры без теста глубины.
[0038] После компоновки локально и удаленно визуализируемого контента для отображения как составного кадра, вычислительное устройство 202 может выполнять процесс репроецирования поздней стадии, чтобы дополнительно стабилизировать составной кадр. В некоторых примерах, вычислительное устройство 202 может репроецировать только буфер цвета составного кадра. В других примерах, репроецирование также может выполняться на основе буфера глубины составного кадра. Репроецирование может выполняться на основе любой подходящей информации, такой как векторы движения, закодированные в потоке видео, или данные датчика движения из одного или более датчиков движения, находящихся на вычислительном устройстве 202. Вычислительное устройство 202 сконфигурировано, чтобы выводить составной кадр посредством дисплея 220, который может интегрироваться с вычислительным устройством 202 в общем корпусе или периферийном к вычислительному устройству 202. Любой подходящий дисплей может использоваться, включая прозрачные дисплеи (например, дисплеи на волноводной или призменной основе) и непрозрачные дисплеи.
[0039] В примерах на фиг. 1A-1B и 2, система удаленного рендеринга (соответственно 110 и 204) принимает информацию объекта и обновленную информацию объекта от одного вычислительного устройства (соответственно 102 и 202). В других примерах, система удаленного рендеринга может обслуживать множество вычислительных устройств, которые вносят вклад в ту же самую сцену. Например, система удаленного рендеринга может визуализировать граф сцены для пользователей отдельных устройств отображения дополненной реальности, где каждый пользователь может вносить обновления в один и тот же граф сцены. В более конкретном примере, система удаленного рендеринга может визуализировать одни и те же объекты в сцене из разных точек обзора для каждого пользователя на основе положение каждого пользователя в сцене. Дополнительно, в некоторых примерах, множество облачных серверов с сетевым доступом могут совместно визуализировать сцену.
[0040] Система 200 гибридного рендеринга, описанная здесь, может способствовать визуализации высокополигональных сцен (например, моделей компьютерного проектирования, конструкторской/технологической документации и т.д.), содержащих многочисленные отдельные объекты, на приемлемо высоких частотах кадров. Напротив, движки локального рендеринга, которые не поддерживают гибридный рендеринг, могут быть неспособны визуализировать на приемлемо высоких частотах кадров для таких приложений. Хотя на фиг. 2 показаны как отдельные вычислительные системы, в некоторых примерах, вычислительное устройство 202 само может также исполнять систему 204 удаленного рендеринга (например, работать на той же самой системе в разных процессах). В некоторых таких случаях, примеры гибридного рендеринга, описанные здесь, могут использоваться для локальных сценариев, реализуемых на вычислительном устройстве 202, таких как компоновка множества 3D приложений, выполняющихся при независимых фазе и частотах кадра.
[0041] В некоторых примерах, цифровой контент может подготавливаться для визуализации перед вводом в конвейер визуализации. Фиг. 3 изображает примерный способ 300, опционально выполняемый сервисом удаленной визуализации, который может способствовать подготовке цифрового контента для гибридного рендеринга. В некоторых примерах, способ 300 может быть реализован как сохраненные инструкции, исполняемые устройством обработки системы гибридного рендеринга, такой как система 200.
[0042] В 302, способ 300 содержит инициирование обработки файла. В некоторых примерах, клиентское устройство (например, вычислительное устройство 102 и/или 202) может выгружать цифровые объекты (например, как zip-архив, включающий в себя отдельные файлы, такие как модель, материалы и т.д.) в местоположение облачного хранения через API графа сцены, как описано выше. В некоторых примерах, это может выполняться через веб-сайт, построенного на API графа сцены. В других примерах, вычислительное устройство может локально инициировать обработку файла.
[0043] В 304, способ 300 содержит определение, является ли файл, выгруженный на этапе 302, новым файлом, путем определения, доступна ли кэшированная версия файла сервису удаленной визуализации. Если кэшированная версия файла доступна, то способ 300 переходит к 320. Если кэшированная версия файла недоступна, то способ 300 переходит к 306, где сервис удаленной визуализации определяет, содержит ли файл исходный файловый формат, считываемый движком рендеринга (например, движком 218 визуализации на фиг. 2). Если файловый формат является исходным файловым форматом, то способ 300 переходит к 314, где сервис удаленной визуализации выгружает файл в местоположение облачного хранения.
[0044] Если сервис удаленной визуализации определяет, в 306, что формат файла отличается от исходного файлового формата, то способ 300 переходит к 308, где файл выгружается в местоположение облачного хранения. В 310, способ 300 содержит конвертирование формата сохраненного файла в исходный файловый формат.
[0045] В 312, сервис удаленной визуализации помещает версию исходного файлового формата файла в местоположение хранения с сетевым доступом. Сервис удаленной визуализации обрабатывает файл в исходном файловом формате, в 316, чтобы конвертировать исходный файловый формат в файловый формат удаленной визуализации, такой как двоичный формат. В 318, сервис удаленной визуализации помещает версию файлового формата удаленной визуализации файла в хранилище и также возвращает идентификатор (ID) для выгруженного контента (например, ID уникальной модели), который может информировать клиентское устройство, что файл был выгружен надлежащим образом.
[0046] В 320, клиентское приложение отправляет вызов API (например, посредством библиотеки 212 клиента RR на фиг. 2), чтобы загрузить конкретную модель для визуализации. В 322, API удаленной визуализации (библиотека 214 сервера RR на фиг. 2) использует ID, возвращенный для конкретной модели, чтобы загружать и моделировать и инициировать конвейер визуализации.
[0047] Фиг. 4 иллюстрирует примерный способ 400 для реализации гибридного рендеринга. Способ 400 может быть реализован как сохраненные инструкции, исполняемые устройством обработки клиентского вычислительного устройства, такого как вычислительное устройство 102 и/или 202.
[0048] В 402, способ 400 содержит исполнение, в первом локальном процессе, приложения, которое выводит цифровой контент для визуализации и отображения. Во время исполнения приложения, способ 400 может содержать идентификацию первого объекта, подлежащего визуализации удаленно, и идентификацию второго объекта, подлежащего визуализации локально. Например, вычислительное устройство может идентифицировать, следует ли визуализировать объект локально или удаленно, на основе условной и/или абсолютной логики, созданной разработчиком приложения.
[0049] В 404, способ 400 содержит предоставление, во второй локальный или удаленный процесс, информации объекта касаемо объекта, подлежащего визуализации вторым локальным или удаленным процессом. Предоставление информации объекта может включать в себя предоставление трехмерной модели (например, высокополигональной сетки, модели на основе вокселов и т.д.), содержащей геометрию и материал для объекта, как указано в 406. Например, вычислительное устройство может обеспечивать модель для удаленной визуализации посредством API графа сцены, как описано на фиг. 3. Предоставление информации объекта также может содержать предоставление запроса обновить структуру данных для цифрового визуализируемого контента, как указано в 408. Например, вычислительное устройство может отправлять вызов API, чтобы взаимодействовать с удаленным графом сцены для конкретной модели, которая была выгружена ранее. Клиентское вычислительное устройство может также предоставлять любую другую подходящую информацию, используемую удаленной вычислительной системой, чтобы визуализировать объект, такую как данные позы/взгляда и/или определенное положение виртуальной камеры. В некоторых примерах, предоставление информации объекта может содержать предоставление информации объекта на удаленную вычислительную систему (например, систему 110, 204 удаленной визуализации), как указано в 409. В других примерах, предоставление информации объекта может содержать предоставление информации объекта во второй локальный процесс, который отличается от первого локального процесса.
[0050] В 410, способ 400 содержит прием, из второго локального или удаленного процесса, визуализации объекта. В некоторых примерах, прием визуализации объекта содержит прием данных видео, содержащих буфер цвета, как указано в 412. Такие данные видео могут также содержать представление глубины (например, буфер глубины или другие данные глубины), как указано в 414. Дополнительно, вычислительное устройство может принимать сжатые данные видео, которые могут способствовать снижению запаздывания. В других примерах, прием визуализации объекта может содержать прием любых других подходящих данных из второго локального или удаленного процесса.
[0051] В 416, способ 400 может содержать репроецирование визуализации объекта, например, посредством репроецирования принятого буфера цвета и/или буфера глубины (в 412 и 414, соответственно). Репроецирование визуализации объекта может способствовать снижению нестабильности (например, дрожания) изображения, вызванной запаздыванием.
[0052] В некоторых примерах, объект, визуализируемый удаленно, является первым объектом, и вычислительное устройство сконфигурировано, чтобы локально визуализировать один или более других объектов. В более конкретном примере, вычислительное устройство может быть сконфигурировано, чтобы локально визуализировать элемент графического пользовательского интерфейса, шарнирные руки и/или любой другой чувствительный к запаздыванию объект и дополнять первый объект локально визуализируемым контентом. Таким образом, в 418, способ 400 может содержать локальную визуализацию второго объекта, чтобы сгенерировать визуализацию второго объекта. Локально визуализируемый второй объект может содержать визуализацию на основе воспринятой или предсказанной позы головы, направления взгляда и/или позы руки, в некоторых примерах.
[0053] В 420, способ 400 содержит компоновку визуализации первого объекта и визуализации второго объекта для отображения как составного кадра. В некоторых примерах, компоновка содержит выполнение теста глубины на буфере глубины первого объекта и буфере глубины второго объекта и компоновку визуализации первого объекта и визуализации второго объекта на основе теста глубины, как указано в 422. В других примерах, компоновка содержит наложение визуализации второго объекта поверх визуализации первого объекта, тем самым дополняя удаленно визуализируемый контент локально визуализируемым контентом. В более конкретном примере, второй объект может содержать элемент пользовательского интерфейса, и компоновка может содержать наложение элемента пользовательского интерфейса поверх визуализации первого объекта.
[0054] В 424, способ 400 может содержать репроецирование буфера цвета и опционально буфера глубины составного кадра, что может способствовать дальнейшей стабилизации отображения составного кадра. Вычислительное устройство может выполнять такие репроецирования на основе любой подходящей информации, такой как информация глубины, векторы движения, закодированные в данных видео, принятых от удаленной вычислительной системы, или данные датчика движения от одного или нескольких датчиков движения, находящихся на вычислительном устройстве 202. В 426, способ 400 содержит вывод, на дисплей, визуализации объекта для отображения объекта.
[0055] В 428, способ 400 содержит прием действия (манипуляции), выполняемого с отображенным объектом, который был визуализирован удаленно. В некоторых примерах, прием действия может содержать прием ввода данных датчика (необработанных и/или обработанных), указывающих изменение или предсказанное изменение в позе головы и/или направлении взгляда пользователя вычислительного устройства, как указано в 430. В других примерах, прием действия может содержать прием пользовательского ввода, как указано в 432. Примеры пользовательских вводов, подходящих для манипулирования объектом, включают в себя вводы жестов, речевые вводы и нажатия на кнопки. В других примерах, прием действия, выполняемого с отображаемым объектом, может происходить из других источников, а не от пользовательского ввода или датчика, например, из анимации, ассоциированной с отображаемым объектом.
[0056] В 434, способ 400 содержит предоставление, во второй локальный или удаленный процесс, обновленной информации объекта на основе действия, выполняемого с объектом. В ответ, второй локальный или удаленный процесс визуализирует объект на основе принятой обновленной информации объекта и предоставляет, на вычислительное устройство, обновленную визуализацию объекта. Таким образом, способ 400 содержит, в 436, прием обновленной визуализации объекта из второго локального или удаленного процесса. В 438, способ 400 содержит вывод, на дисплей, обновленной визуализации объекта для отображения объекта. Хотя описано в контексте первого объекта, визуализируемого удаленно, и второго объекта, визуализируемого локально, будет понятно, что визуализируемая сцена может включать в себя множество удаленно визуализируемых объектов и/или множество локально визуализируемых объектов, которые обработаны и скомпонованы в соответствии с примерами, раскрытыми здесь.
[0057] Фиг. 5 иллюстрирует примерный способ 500 визуализации объекта на основе информации, принятой от клиентского вычислительного устройства. Способ 500 может быть реализован как сохраненные инструкции, исполняемые устройством обработки вычислительной системы, такой как система 110 и/или 204 удаленной визуализации, или локальные процессы, выполняющиеся независимо от процесса, который обеспечивает объект, подлежащий визуализации.
[0058] В 502, способ 500 содержит прием, от вычислительного устройства, информации объекта касаемо объекта, подлежащего визуализации. В некоторых примерах, прием информации объекта может содержать прием запроса загрузить цифровую модель, содержащую объект, как указано в 504. В других примерах, прием информации объекта может содержать прием вызова удаленного API для обновления ранее выгруженной структуры данных для объекта.
[0059] На основе принятой информации объекта, способ 500 содержит, в 506, визуализацию объекта. Визуализация объекта может выполняться с использованием любого подходящего конвейера визуализации. Как указано в 508, визуализация объекта может содержать визуализацию на основе информации, хранящейся в графе сцены для цифровой модели, где объект является узлом графа сцены.
[0060] В 510, способ 500 содержит предоставление, на вычислительное устройство, визуализации объекта. Предоставление визуализации объекта может содержать предоставление данных видео, содержащих по меньшей мере буфер цвета, как указано в 512. В более конкретном примере, данные видео могут содержать буфер цвета и представление глубины (например, буфер глубины). Дополнительно, в некоторых примерах, данные видео могут быть сжаты, как указано в 514.
[0061] В 516, способ 500 содержит прием, от вычислительного устройства, обновленной информации объекта касаемо действия, выполняемого с объектом. Прием обновленной информации объекта может содержать прием данных датчика (необработанных и/или обработанных), указывающих позу/взгляд пользователя вычислительного устройства, как указано в 518. Информация, указывающая позу/взгляд пользователя, может включать в себя положение виртуальной камеры, определенное клиентским вычислительным устройством, в некоторых примерах. Прием обновленной информации объекта может дополнительно или альтернативно содержать прием информации касаемо пользовательского ввода, чтобы манипулировать объектом, такого как ввод жеста, речевой ввод и/или нажатие кнопки. В таких случаях, пользовательский ввод может отправляться в необработанной или обработанной форме (например, как спецификация изменения, подлежащего выполнению в графе сцены на основе принятого пользовательского ввода). В других примерах, может приниматься любая другая подходящая информация, такая как информация касаемо анимации, ассоциированной с объектом.
[0062] Способ 500 дополнительно содержит, в 520, визуализацию объекта на основе принятой обновленной информации объекта. Когда обновленная информация объекта основана на позе/взгляде пользователя вычислительного устройства, визуализация объекта может содержать визуализацию на основе позы и/или взгляда, как указано в 522. Например, удаленная вычислительная система может визуализировать объект на основе определенного принятого положения виртуальной камеры. Когда обновленная информация объекта основана на пользовательском вводе в вычислительное устройство, визуализация объекта может содержать визуализацию на основе пользовательского ввода. В других примерах, удаленная вычислительная система может визуализировать объект на основе любой другой принятой информации. В 524, способ 500 содержит предоставление, на вычислительное устройство, обновленной визуализации объекта.
[0063] В некоторых примерах, способы и процессы, описанные здесь, могут быть привязаны к вычислительной системе одного или нескольких вычислительных устройств. В частности, такие способы и процессы могут быть реализованы как программа или сервис компьютерного приложения, прикладной программный интерфейс (API), библиотека и/или другой компьютерный программный продукт.
[0064] Фиг. 6 схематично показывает неограничивающий вариант осуществления вычислительной системы 600, которая может реализовывать один или более способов и процессов, описанных выше. Вычислительная система 600 показана в упрощенной форме. Вычислительная система 600 может принимать форму одного или более персональных компьютеров, серверных компьютеров, планшетов, компьютеров домашнего кинотеатра, сетевых вычислительных устройств, игровых устройств, мобильных вычислительных устройств (например, наголовное устройство отображения), мобильных устройств связи (например, смартфон) и/или других вычислительных устройств.
[0065] Вычислительное система 600 включает в себя машину 602 логики и машину 604 хранения. Вычислительная система 600 может опционально включать в себя подсистему 606 отображения, подсистему 608 ввода, подсистему 610 связи и/или другие компоненты, не показанные на фиг. 6.
[0066] Машина 602 логики включает в себя одно или более физических устройств, сконфигурированных, чтобы исполнять инструкции. Например, машина логики может быть сконфигурирована, чтобы исполнять инструкции, которые являются частью одного или более приложений, сервисов, программ, подпрограмм, библиотек, объектов, компонентов, структур данных или других логических структур. Такие инструкции могут быть реализованы, чтобы выполнять задачу, реализовывать тип данных, преобразовывать состояние одного или более компонентов, достигать технического эффекта или иным образом приходить к желательному результату.
[0067] Машина 602 логики может включать в себя один или более процессоров, сконфигурированных, чтобы исполнять инструкции программного обеспечения. Дополнительно или альтернативно, машина логики может включать в себя одну или более аппаратных или программно-аппаратных машин логики, сконфигурированных, чтобы исполнять инструкции аппаратных средств или программно-аппаратных средств. Такие процессоры могут быть реализованы как один или более CPU и/или GPU в различных примерах. Процессоры машины логики могут быть одноядерными или многоядерными, и инструкции, исполняемые на них, могут быть сконфигурированы для последовательной, параллельной и/или распределенной обработки. Отдельные компоненты машины логики опционально могут быть распределены среди двух или более отдельных устройств, которые могут быть расположены удаленно и/или сконфигурированы для координированной обработки. Аспекты машины логики могут виртуализироваться и исполняться удаленно доступными сетевыми вычислительными устройствами, сконфигурированными в облачной вычислительной конфигурации.
[0068] Машина 604 хранения включает в себя одно или более физических устройств, сконфигурированных, чтобы сохранять инструкции, исполняемые машиной логики для реализации способов и процессов, описанных здесь. Когда такие способы и процессы реализуются, состояние машины 604 хранения может преобразовываться, например, чтобы сохранять различные данные.
[0069] Машина 604 хранения может включать в себя съемные и/или встроенные устройства. Машина 604 хранения может включать в себя оптическую память (например, CD, DVD, HD-DVD, Blu-Ray Disc и т.д.), полупроводниковую память (например, RAM, EPROM, EEPROM и т.д.) и/или магнитную память (например, накопитель на жестком диске, накопитель на флоппи-диске, накопитель на ленте, MRAM и т.д.), среди прочего. Машина 604 хранения может включать в себя энергозависимые, энергонезависимые, динамические, статические устройств, устройства для чтения/записи, только для чтения, произвольного доступа, последовательного доступа, адресуемые местоположением, адресуемые файлом и/или контентно-адресуемые устройства.
[0070] Будет понятно, что машина 604 хранения включает в себя одно или более физических устройств. Однако, аспекты инструкций, описанных здесь, альтернативно могут распространяться посредством коммуникационного носителя (например, электромагнитного сигнала, оптического сигнала и т.д.), который не поддерживается физическим устройством в течение конечной длительности.
[0071] Аспекты машины 602 логики и машины 604 хранения могут быть интегрированы вместе в один или более компонентов аппаратной логики. Такие компоненты аппаратной логики могут включать в себя, например, программируемые вентильные матрицы (FPGA), программно-ориентированные и специализированные интегральные схемы (PASIC/ASIC), программно-ориентированные и специализированные стандартные продукты (PSSP/ASSP), систему на чипе (SOC) и устройства сложной программируемой логики (CPLD).
[0072] Термины “программа” и “движок” могут использоваться, чтобы описывать аспект вычислительной системы 600, реализованной, чтобы выполнять конкретную функцию. В некоторых случаях, программа или движок могут быть реализованы посредством машины 602 логики, исполняющей инструкции, сохраненные машиной 604 хранения. Будет понятно, что разные программы и/или движки могут реализовываться из одного и того же приложения, сервиса, кодового блока, объекта, библиотеки, подпрограммы, API, функции и т.д. Подобным же образом, одна и та же программа и/или движок могут быть реализованы разными приложениями, сервисами, кодовыми блоками, объектами, подпрограммами, API, функциями и т.д. Термины “программа” и “движок” могут включать в себя отдельные исполняемые файлы, файлы данных, библиотеки, драйверы, скрипты, записи базы данных и т.д. или их группы.
[0073] Будет понятно, что “сервис”, как использовано здесь, является прикладной программой, исполняемой по множеству сеансов пользователя. Сервис может быть доступен одному или более компонентам системы, программам и/или другим сервисам. В некоторых реализациях, сервис может выполняться на одном или более серверных вычислительных устройствах.
[0074] Подсистема 606 отображения, когда включена, может использоваться, чтобы представлять визуальное представление данных, хранимых машиной 604 хранения. Это визуальное представление может принимать форму графического пользовательского интерфейса (GUI). Так как описанные здесь способы и процессы изменяют данные, хранимые машиной хранения, и таким образом преобразуют состояние машины хранения, состояние подсистемы 606 отображения может подобным же образом преобразовываться, чтобы визуально представлять изменения в основных данных. Подсистема 606 отображения может включать в себя одно или более устройств отображения, использующих виртуально любой тип технологии. Такие устройства отображения могут комбинироваться с машиной 602 логики и/или машиной 604 хранения в совместно используемом корпусе, или такие устройства отображения могут представлять собой периферийные устройства отображения.
[0075] Подсистема 608 ввода, когда включена, может содержать или взаимодействовать с одним или более устройствами пользовательского ввода, такими как клавиатура, мышь, тачскрин или игровой контроллер. В некоторых вариантах осуществления, подсистема ввода может содержать или взаимодействовать с выбранными компонентами естественного пользовательского ввода (NUI). Такие компоненты могут быть интегрированными или периферийными, и трансдукция и/или обработка действий ввода может проводиться на или вне платы. Примерные компоненты NUI могут включать в себя микрофон для распознавания речи и/или голоса; инфракрасную, цветную, стереоскопическую камеру и/или камеру глубины для машинного зрения и/или распознавания жестов; устройство отслеживания головы, устройство отслеживания взгляда, акселерометр и/или гироскоп для обнаружения движения и/или распознавания намерения; а также компоненты восприятия электрического поля для оценки мозговой активности.
[0076] Подсистема 610 связи, когда включена, может быть сконфигурирована, чтобы коммуникативно соединять вычислительную систему 600 с одним или более другими вычислительными устройствами. Подсистема 610 связи может включать в себя устройства проводной и/или беспроводной связи, совместимые с одним или более разными протоколами связи. В качестве неограничивающих примеров, подсистема связи может быть сконфигурирована для связи посредством беспроводной телефонной сети или проводной или беспроводной локальной или глобальной сети. В некоторых вариантах осуществления, подсистема связи может позволять вычислительной системе 600 отправлять и/или принимать сообщения на и/или от других устройств посредством сети, такой как Интернет.
[0077] Другой пример обеспечивает вычислительное устройство, содержащее устройство обработки и устройство хранения, хранящее инструкции, исполняемые устройством обработки, чтобы исполнять в первом локальном процессе приложение, которое выводит цифровой контент для визуализации и отображения; во время исполнения приложения, предоставлять, во второй локальный или удаленный процесс, информацию объекта касаемо объекта, подлежащего визуализации вторым локальным или удаленным процессом; принимать, из второго локального или удаленного процесса, визуализацию объекта; выводить, на дисплей, визуализацию объекта для отображения объекта; принимать действие, выполняемое с объектом; предоставлять, во второй локальный или удаленный процесс, обновленную информацию объекта на основе действия, выполняемого с объектом; принимать, из второго локального или удаленного процесса, обновленную визуализацию объекта; и выводить, на дисплей, обновленную визуализацию объекта для отображения объекта. В таком примере, инструкции могут дополнительно или альтернативно исполняться, чтобы предоставлять информацию объекта путем обеспечения трехмерной модели, содержащей геометрию объекта. В таком примере, инструкции могут дополнительно или альтернативно исполняться, чтобы предоставлять информацию объекта путем предоставления запроса обновить структуру данных для цифрового визуализируемого контента. В таком примере, визуализация объекта может дополнительно или альтернативно содержать данные видео, содержащие буфер цвета. В таком примере, данные видео могут дополнительно или альтернативно содержать представление глубины. В таком примере, объект может дополнительно или альтернативно содержать первый объект, и инструкции могут дополнительно или альтернативно исполняться, чтобы локально визуализировать второй объект, чтобы генерировать визуализацию второго объекта, и компоновать визуализацию первого объекта и визуализацию второго объекта для отображения как составного кадра. В таком примере, визуализация объекта, принятая из второго локального или удаленного процесса, может дополнительно или альтернативно содержать первый буфер цвета, и инструкции могут дополнительно или альтернативно исполняться, чтобы, перед компоновкой визуализации первого объекта и визуализации второго объекта, выполнять репроецирование первого буфера цвета. В таком примере, инструкции могут дополнительно или альтернативно исполняться, чтобы, после компоновки визуализации первого объекта и визуализации второго объекта, выполнять репроецирование буфера цвета составного кадра. В таком примере, визуализация первого объекта, принятая из второго локального или удаленного процесса, может дополнительно или альтернативно содержать первые данные глубины, и визуализация второго объекта может дополнительно или альтернативно содержать вторые данные глубины, и инструкции могут дополнительно или альтернативно исполняться, чтобы компоновать визуализацию первого объекта и визуализацию второго объекта путем выполнения z-теста на первых данных глубины и вторых данных глубины и компоновки первого объекта и второго объекта на основе z-теста. В таком примере, инструкции могут дополнительно или альтернативно исполняться, чтобы принимать действие, выполняемое с объектом, путем приема данных датчика, указывающих изменение в позе головы и/или направлении взгляда, и/или путем приема пользовательского ввода, чтобы манипулировать объектом.
[0078] Другой пример обеспечивает вычислительную систему, содержащую устройство обработки и устройство хранения, хранящее инструкции, исполняемые устройством обработки, чтобы принимать, от вычислительного устройства, информацию объекта касаемо объекта, подлежащего визуализации; на основе принятой информации объекта, визуализировать объект, предоставлять, на вычислительное устройство, визуализацию объекта; принимать, от вычислительного устройства, обновленную информацию объекта касаемо действия, выполняемого с объектом; визуализировать объект на основе принятой обновленной информации объекта касаемо действия, выполняемого с объектом; и предоставлять, на вычислительное устройство, обновленную визуализацию объекта. В таком примере, инструкции могут дополнительно или альтернативно исполняться, чтобы предоставлять визуализацию объекта на вычислительное устройство путем предоставления данных видео, содержащих буфер цвета и буфер глубины. В таком примере, инструкции могут дополнительно или альтернативно исполняться, чтобы сжимать данные видео и чтобы предоставлять сжатые данные видео на вычислительное устройство. В таком примере, информация объекта может дополнительно или альтернативно содержать запрос загрузить цифровую модель, содержащую объект, и инструкции могут дополнительно или альтернативно исполняться, чтобы визуализировать объект на основе информации, хранящейся в графе сцены для цифровой модели. В таком примере, инструкции могут дополнительно или альтернативно исполняться, чтобы принимать обновленную информацию объекта путем приема данных датчика, указывающих позу пользователя вычислительного устройства, и инструкции могут дополнительно или альтернативно исполняться, чтобы визуализировать объект на основе позы пользователя.
[0079] Другой пример обеспечивает способ, реализуемый на вычислительном устройстве, причем способ содержит исполнение приложения, которое выводит цифровой контент для визуализации и отображения; во время исполнения приложения, идентификацию первого объекта цифрового контента, подлежащего визуализации удаленно, и также идентификацию второго объекта цифрового контента, подлежащего визуализации локально; предоставление, на удаленную вычислительную систему, информации объекта касаемо первого объекта, подлежащего визуализации удаленной вычислительной системы; прием, от удаленной вычислительной системы, визуализации первого объекта; локальной визуализации второго объекта, чтобы сгенерировать визуализацию второго объекта; и компоновку визуализации первого объекта и визуализации второго объекта для отображения как составного кадра. В таком примере, визуализация первого объекта может дополнительно или альтернативно содержать первый буфер цвета и первый буфер глубины, способ может дополнительно или альтернативно содержать, перед компоновкой визуализации первого объекта и визуализации второго объекта, выполнение репроецирования по меньшей мере первого буфера цвета. В таком примере, способ может дополнительно или альтернативно содержать, после компоновки визуализации первого объекта и визуализации второго объекта, выполнение репроецирования. В таком примере, выполнение репроецирования может дополнительно или альтернативно содержать выполнение репроецирования на основе позы головы пользователя. В таком примере, визуализация первого объекта может дополнительно или альтернативно содержать первые данные глубины, и визуализация второго объекта может дополнительно или альтернативно содержать вторые данные глубины, способ может дополнительно или альтернативно содержать выполнение теста глубины на первых данных глубины и вторых данных глубины и компоновку визуализации первого объекта и визуализации второго объекта на основе теста глубины.
[0080] Будет понятно, что конфигурации и/или подходы, описанные здесь, являются по своей природе естественными, и что эти конкретные варианты осуществления или примеры не должны рассматриваться в ограничивающем смысле, поскольку возможны многочисленные вариации. Конкретные порядки или способы, описанные здесь, могут представлять одну или более из любого количества стратегий обработки. Например, различные проиллюстрированные и/или описанные действия могут выполняться в проиллюстрированной и/или описанной последовательности, в других последовательностях, параллельно или могут опускаться. Подобным же образом, порядок вышеописанных процессов может изменяться.
[0081] Предмет настоящего раскрытия включает в себя все новые и неочевидные комбинации и подкомбинации различных процессов, систем и конфигураций и другие признаки, функции, действия и/или свойства, раскрытые здесь, а также любые и все их эквиваленты.
название | год | авторы | номер документа |
---|---|---|---|
ИЗБИРАТЕЛЬНОЕ ПРИМЕНЕНИЕ ОБРАБОТКИ РЕПРОЕКЦИИ НА ПОДОБЛАСТЯХ СЛОЯ ДЛЯ ОПТИМИЗАЦИИ МОЩНОСТИ РЕПРОЕКЦИИ ПОЗДНЕЙ СТАДИИ | 2018 |
|
RU2762123C2 |
СПОСОБ И СИСТЕМА УДАЛЕНИЯ НЕВИДИМЫХ ПОВЕРХНОСТЕЙ ТРЁХМЕРНОЙ СЦЕНЫ | 2017 |
|
RU2680355C1 |
СИСТЕМА И СПОСОБ ДЛЯ ДОПОЛНЕННОЙ И ВИРТУАЛЬНОЙ РЕАЛЬНОСТИ | 2012 |
|
RU2621633C2 |
СПОСОБ СОЗДАНИЯ СТЕРЕОСКОПИЧЕСКОГО ИНТЕРФЕЙСА ПОЛЬЗОВАТЕЛЯ КОМПЬЮТЕРА | 2013 |
|
RU2532866C1 |
ВИЗУАЛИЗАЦИЯ НЕСОВМЕСТИМОГО КОНТЕНТА В ПОЛЬЗОВАТЕЛЬСКОМ ИНТЕРФЕЙСЕ | 2011 |
|
RU2600546C2 |
ЯЗЫК РАЗМЕТКИ И ОБЪЕКТНАЯ МОДЕЛЬ ДЛЯ ВЕКТОРНОЙ ГРАФИКИ | 2003 |
|
RU2321892C2 |
ИНТЕРФЕЙС И СИСТЕМА ДЛЯ МАНИПУЛЯЦИИ ПИКТОГРАММАМИ АКТИВНЫХ ОКОН В АДМИНИСТРАТОРЕ ОКОН | 2005 |
|
RU2409833C2 |
ИНТЕРФЕЙС И СИСТЕМА ДЛЯ МАНИПУЛЯЦИИ ПИКТОГРАММАМИ АКТИВНЫХ ОКОН В АДМИНИСТРАТОРЕ ОКОН | 2005 |
|
RU2569802C2 |
МЕХАНИЗМЫ ОБЕСПЕЧЕНИЯ БЕЗОПАСНОСТИ НА ОСНОВЕ КАМЕРЫ ДЛЯ ПОЛЬЗОВАТЕЛЕЙ УСТАНОВЛЕННЫХ НА ГОЛОВЕ ДИСПЛЕЕВ | 2014 |
|
RU2661857C2 |
ОРИЕНТАЦИЯ И ВИЗУАЛИЗАЦИЯ ВИРТУАЛЬНОГО ОБЪЕКТА | 2014 |
|
RU2670784C9 |
Изобретение относится к области визуализации графики. Техническим результатом является повышение эффективности гибридного рендеринга, позволяющего генерировать как удаленно визуализируемый контент, так и локально визуализированный контент для компоновки в локально отображаемый образ в зависимости от величины сетевого запаздывания. Вычислительное устройство для визуализации цифрового контента содержит устройство обработки и устройство хранения, хранящее инструкции, исполняемые устройством обработки, чтобы исполнять в первом локальном процессе приложение, которое выводит цифровой контент для визуализации и отображения. При этом приложение содержит условную логику для определения того, визуализировать ли объект удаленно или локально, на основе порога сетевого запаздывания. Во время исполнения приложения предоставлять информацию объекта касаемо объекта, подлежащего визуализации вторым локальным или удаленным процессом, принимать визуализацию объекта, выводить визуализацию объекта для отображения объекта, принимать действие, выполняемое с объектом, предоставлять, обновленную информацию объекта, принимать обновленную визуализацию объекта и выводить обновленную визуализацию объекта для отображения объекта. 2 н. и 8 з.п. ф-лы, 7 ил.
1. Вычислительное устройство, выполненное с возможностью визуализации цифрового контента, при этом вычислительное устройство содержит:
устройство обработки и
устройство хранения, хранящее инструкции, исполняемые устройством обработки, чтобы:
исполнять в первом локальном процессе приложение, которое выводит цифровой контент, содержащий первый объект для визуализации и отображения первого объекта, причем визуализация содержит данные глубины для первого объекта, при этом приложение содержит условную логику, сконфигурированную для определения того, визуализировать ли объект удаленно или локально, на основе, по меньшей мере, порога сетевого запаздывания;
во время исполнения приложения, на основе условной логики предоставлять во второй локальный или удаленный процесс вычислительной системы информацию объекта касаемо второго объекта, который должен визуализироваться вторым локальным или удаленным процессом вычислительной системы;
принимать из второго локального или удаленного процесса вычислительной системы визуализацию второго объекта и данные глубины для второго объекта, при этом визуализация второго объекта, принимаемая из второго локального или удаленного процесса вычислительной системы, содержит первый буфер цвета;
выполнять репроекцию первого буфера цвета;
компоновать первый объект, в том виде как он визуализируется, и второй объект, в том виде как он визуализируется, для отображения в виде составного кадра посредством выполнения скорректированного по глубине смешения между первым объектом и вторым объектом на основе данных глубины для первого объекта и данных глубины для второго объекта;
выполнять репроекцию буфера цвета составного кадра;
выводить на дисплей составной кадр;
принимать действие, выполняемое в отношении второго объекта;
предоставлять во второй локальный или удаленный процесс вычислительной системы обновленную информацию объекта на основе действия, выполняемого в отношении второго объекта;
принимать из второго локального или удаленного процесса вычислительной системы обновленную визуализацию второго объекта; и
выводить на дисплей обновленную визуализацию второго объекта для отображения второго объекта.
2. Вычислительное устройство по п. 1, причем визуализация первого объекта, принятая из второго локального или удаленного процесса, содержит первые данные глубины, и визуализация второго объекта содержит вторые данные глубины, при этом инструкции исполняются, чтобы компоновать визуализацию первого объекта и визуализацию второго объекта путем выполнения z-теста на первых данных глубины и вторых данных глубины и компоновки первого объекта и второго объекта на основе z-теста.
3. Вычислительное устройство по п. 1, в котором инструкции исполняются, чтобы предоставлять информацию объекта путем обеспечения трехмерной модели, содержащей геометрию второго объекта.
4. Вычислительное устройство по п. 1, в котором инструкции исполняются, чтобы предоставлять информацию объекта путем подачи запроса обновить структуру данных для цифрового визуализируемого контента.
5. Вычислительное устройство по п. 1, причем визуализация одного или более из первого объекта и второго объекта содержит данные видео.
6. Вычислительное устройство по п. 5, причем данные видео дополнительно содержат представление глубины.
7. Вычислительное устройство по п. 1, в котором инструкции исполняются, чтобы принимать действие, выполняемое в отношении второго объекта, путем приема данных датчика, указывающих изменения в позе головы и/или направлении взгляда, и/или путем приема пользовательского ввода, чтобы манипулировать объектом.
8. Способ визуализации цифрового контента, реализуемый вычислительным устройством, причем способ содержит этапы, на которых:
исполняют приложение, которое выводит цифровой контент для визуализации и отображения, причем приложение содержит условную логику, сконфигурированную для определения того, визуализировать ли объект удаленно или локально, на основе, по меньшей мере, порога сетевого запаздывания;
во время исполнения приложения:
на основе условной логики идентифицируют первый объект цифрового контента, который должен визуализироваться удаленно, а также идентифицируют второй объект цифрового контента, который должен визуализироваться локально;
предоставляют в удаленную вычислительную систему информацию объекта касаемо первого объекта, который должен визуализироваться удаленной вычислительной системой;
принимают от удаленной вычислительной системы визуализацию первого объекта и данные глубины для первого объекта, причем визуализация первого объекта содержит первый буфер цвета;
выполняют репроекцию первого буфера цвета;
локально визуализируют второй объект, чтобы сгенерировать визуализацию второго объекта;
компонуют визуализацию первого объекта и визуализацию второго объекта для отображения в виде составного кадра посредством выполнения скорректированного по глубине смешения между первым объектом и вторым объектом на основе данных глубины для первого объекта и данных глубины для второго объекта;
выполняют репроекцию буфера цвета составного кадра; и
выводят составной кадр для отображения.
9. Способ по п. 8, в котором при выполнении репроецирования первого буфера цвета репроецирование выполняют на основе позы головы пользователя.
10. Способ по п. 8, в котором визуализация первого объекта содержит первые данные глубины, и визуализация второго объекта содержит вторые данные глубины, при этом способ дополнительно содержит этапы, на которых:
выполняют тест глубины на первых данных глубины и вторых данных глубины; и
компонуют визуализацию первого объекта и визуализацию второго объекта на основе теста глубины.
Автомобиль-сани, движущиеся на полозьях посредством устанавливающихся по высоте колес с шинами | 1924 |
|
SU2017A1 |
Способ получения цианистых соединений | 1924 |
|
SU2018A1 |
Токарный резец | 1924 |
|
SU2016A1 |
Автомобиль-сани, движущиеся на полозьях посредством устанавливающихся по высоте колес с шинами | 1924 |
|
SU2017A1 |
Многоступенчатая активно-реактивная турбина | 1924 |
|
SU2013A1 |
RU 2012125619 A, 27.12.2013 | |||
EA 201190195 A1, 30.05.2012. |
Авторы
Даты
2023-12-28—Публикация
2020-03-09—Подача