BR112019019060A2 - método e sistema para colisão de câmera automatizada e preservação de composição - Google Patents

método e sistema para colisão de câmera automatizada e preservação de composição Download PDF

Info

Publication number
BR112019019060A2
BR112019019060A2 BR112019019060A BR112019019060A BR112019019060A2 BR 112019019060 A2 BR112019019060 A2 BR 112019019060A2 BR 112019019060 A BR112019019060 A BR 112019019060A BR 112019019060 A BR112019019060 A BR 112019019060A BR 112019019060 A2 BR112019019060 A2 BR 112019019060A2
Authority
BR
Brazil
Prior art keywords
camera
virtual camera
obstacle
target
module
Prior art date
Application number
BR112019019060A
Other languages
English (en)
Other versions
BR112019019060B1 (pt
Inventor
Myhill Adam
Labute Gregory
Original Assignee
Unity IPR ApS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Unity IPR ApS filed Critical Unity IPR ApS
Publication of BR112019019060A2 publication Critical patent/BR112019019060A2/pt
Publication of BR112019019060B1 publication Critical patent/BR112019019060B1/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/25Output arrangements for video game devices
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/52Controlling the output signals based on the game progress involving aspects of the displayed game scene
    • A63F13/525Changing parameters of virtual cameras
    • A63F13/5258Changing parameters of virtual cameras by dynamically adapting the position of the virtual camera to keep a game object or game character in its viewing frustum, e.g. for tracking a character or a ball
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/65Methods for processing data by generating or executing the game program for computing the condition of a game character
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/66Methods for processing data by generating or executing the game program for rendering three dimensional images
    • A63F2300/6653Methods for processing data by generating or executing the game program for rendering three dimensional images for altering the visibility of an object, e.g. preventing the occlusion of an object, partially hiding an object
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/66Methods for processing data by generating or executing the game program for rendering three dimensional images
    • A63F2300/6661Methods for processing data by generating or executing the game program for rendering three dimensional images for changing the position of the virtual camera
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/66Methods for processing data by generating or executing the game program for rendering three dimensional images
    • A63F2300/6661Methods for processing data by generating or executing the game program for rendering three dimensional images for changing the position of the virtual camera
    • A63F2300/6684Methods for processing data by generating or executing the game program for rendering three dimensional images for changing the position of the virtual camera by dynamically adapting its position to keep a game object in its viewing frustrum, e.g. for tracking a character or a ball
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/12Bounding box
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/21Collision detection, intersection

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computing Systems (AREA)
  • Studio Devices (AREA)
  • Processing Or Creating Images (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

são descritos aqui sistemas e métodos para colisores de câmeras e preservação da composição de fotos em um ambiente virtual 3d que impedem que uma câmera de procedimento virtual fique presa atrás de um objeto, ou penetre em um objeto durante a filmagem de um objeto, enquanto ao mesmo tempo também mantém a composição de tela do objeto na foto de câmera.

Description

MÉTODO E SISTEMA PARA COLISÃO DE CÂMERA AUTOMATIZADA E PRESERVAÇÃO DE COMPOSIÇÃO
REFERÊNCIA CRUZADA A PEDIDOS RELACIONADOS [001] Este pedido reivindica o beneficio do Pedido Provisório US N° 62/473,107, depositado em 17 de março de 20178, Pedido Provisório US N° 62/525,037, depositado em 26 de junho de 2017, e Pedido Provisório US N° 62/551,134, depositado em 28 de agosto de 2017, cada um dos quais é incorporado por referência aqui na sua totalidade.
CAMPO TÉCNICO [002] A presente divulgação refere-se ao campo de ferramentas de software para cinematografia automatizada.
ANTECEDENTES [003] No mundo da cinematografia virtual em 3D, existem câmeras de procedimento para gravar cenas com cenários variáveis. As câmeras de procedimento são programadas para se adaptarem de alguma maneira à cena e aos objetos nela contidos. Por exemplo, para filmar uma cena, a câmera de procedimento pode seguir um assunto através de um ambiente 3D, mantendo uma distância e orientação fixa em relação ao assunto. No entanto, com câmeras de procedimentos que capturam cenários variáveis (por exemplo, objeto em movimento, outros objetos 3D em movimento etc.), há muitos casos em que o objeto será ocultado da visão da câmera por algum objeto intermediário ou sair da composição de captura desejada. Em alguns casos, a câmera que segue o assunto pode ficar presa atrás de um objeto enquanto tenta segui-lo, ou pode penetrar no objeto para manter uma certa captura em relação ao assunto.
[004] Um exemplo de uso de câmera processual em que os
Petição 870190132090, de 12/12/2019, pág. 8/84
2/53 problemas acima podem se tornar significativos é na gravação e transmissão de videogames; em que um host que não joga assiste e transmite sua visão, juntamente com comentários, de um videogame on-line para vários jogadores em tempo real. Esses usuários que não jogam são chamados de hosts e sua transmissão é uma hospedagem do jogo. Muitos terceiros podem sintonizar e assistir aos jogos hospedados através de sites como o Twitch® e o YouTube®. Os anfitriões usam câmeras de procedimento para gravar o videogame e as dificuldades das câmeras de procedimento descritas acima levam a uma baixa qualidade cinematográfica (por exemplo, composição da cena, cortes de câmera e muito mais) e a uma fraca experiência do usuário para o público de videogame.
BREVE DESCRIÇÃO DOS DESENHOS [005] Outras características e vantagens da presente divulgação serão evidentes a partir da descrição detalhada a seguir, captura em combinação com os desenhos anexos, nos quais:
A Figura 1 é um esquema que ilustra um sistema de cinematografia de videogame incluindo um módulo colisor e um módulo de composição, de acordo com uma modalidade;
A Figura 2A é um esquema que ilustra uma captura de tela mostrando uma zona alvo de composição e suas zonas de contorno circundantes, de acordo com uma modalidade;
A Figura 2B é um esquema que ilustra uma captura de tela mostrando uma zona alvo de composição e suas zonas de contorno circundantes, de acordo com uma modalidade;
A Figura 3 é um esquema que mostra a composição de assunto, de acordo com uma modalidade;
A Figura 4 é um fluxograma que mostra um método de
Petição 870190132090, de 12/12/2019, pág. 9/84
3/53 composição, de acordo com uma modalidade;
A Figura 5 é um esquema mostrando picos de colisor em uma câmera, de acordo com uma modalidade;
A Figura 6A é um fluxograma que mostra um método colisor, de acordo com uma modalidade;
A Figura 6B é um fluxograma que mostra uma iniciação a um método colisor, de acordo com uma modalidade;
A Figura 6C é um fluxograma que mostra um método colisor, de acordo com uma modalidade;
A Figura 6D é um fluxograma que mostra um método colisor, de acordo com uma modalidade;
A Figura 6E é um diagrama esquemático de um ambiente virtual em que o módulo colisor move uma câmera para evitar um objeto, de acordo com uma modalidade;
A Figura 6F é um fluxograma que mostra um método colisor, de acordo com uma modalidade;
A Figura 6G é um diagrama esquemático de um ambiente virtual em que o módulo colisor move uma câmera para evitar um objeto, de acordo com uma modalidade;
As Figuras 7A, 7B e 7C são diagramas esquemáticos de uma tela de câmera em que um objeto ocluso se move pela tela e cobre um assunto;
A Figura 8A é uma captura de tela que ilustra um painel de interface de usuário para uma câmera acionada por estado;
A Figura 8B é uma captura de tela que ilustra uma lista suspensa dinamicamente preenchida de estados em um jogo;
A Figura 8C é uma captura de tela que ilustra o resultado do clique no botão da câmera;
A Figura 8D é uma captura de tela que ilustra como câmeras de estado podem ser combinadas;
Petição 870190132090, de 12/12/2019, pág. 10/84
4/53
A Figura 8E é uma captura de tela que ilustra uma lista definida pelo usuário de todas as câmeras que devem ser expostas à câmera acionada por estado com controles para a prioridade;
A Figura 8F é uma captura de tela que ilustra os controles da prioridade geral de um único sistema de câmera acionada por estado;
A Figura 9 é um diagrama de um exemplo de tela montada na cabeça (HMD) usado por um usuário;
A Figura 10 é um diagrama de blocos que ilustra uma arquitetura de software de exemplo, que pode ser usada em conjunto com várias arquiteturas de hardware aqui descritas; e
A Figura 11 é um diagrama de blocos que ilustra os componentes de uma máquina 900, de acordo com algumas modalidades de exemplo, configuradas para ler instruções de um meio legível por máquina (por exemplo, um meio de armazenamento legível por máquina) e executar qualquer uma ou mais das metodologias discutidas aqui.
[006] Deve-se notar que, ao longo dos desenhos anexos, características semelhantes são identificadas por números de referência semelhantes.
DESCRIÇÃO DETALHADA [007] A descrição e os desenhos a seguir são ilustrativos da divulgação e não devem ser interpretados como limitativos da divulgação. Inúmeros detalhes específicos são descritos para fornecer um entendimento completo da presente divulgação. No entanto, em certos casos, detalhes bem conhecidos dos versados na técnica não são descritos para evitar obscurecer a descrição da presente divulgação.
Petição 870190132090, de 12/12/2019, pág. 11/84
5/53 [008] São descritos aqui sistemas e métodos para colisores de câmeras e preservação da composição de tomadas em um ambiente virtual 3D que evitam que uma câmera de procedimento virtual fique presa atrás de um objeto ou penetre em um objeto ao filmar um assunto, mantendo ao mesmo tempo a composição da tela do assunto na captura da câmera.
[009] Terminologia: Ao longo da descrição aqui contida, o termo 'assunto' refere-se a um objeto no ambiente virtual 3D que é o principal assunto desejado de uma câmera virtual durante as filmagens (por exemplo, o assunto geralmente é o foco da câmera).
[0010] Voltando agora aos desenhos, sistemas e métodos para colisão de câmeras e preservação da composição, de acordo com modalidades da divulgação, são ilustrados. A Figura 1 é um diagrama de componentes de um dispositivo de cinematografia de videogame que inclui um dispositivo de mecanismo de jogo e periféricos associados. Na modalidade de exemplo, o dispositivo de cinematografia de videogame é um dispositivo de computação operado por um usuário. O usuário pode ser um jogador de um jogo multijogador online (por exemplo, um jogo de eSports) ou um host de transmissão (ou apenas host) que fornece várias funções de transmissão associadas ao videogame. O dispositivo de cinematografia de videogame inclui um ou mais dispositivos de exibição (por exemplo, monitores de computador convencionais, dispositivos vestíveis para RV, etc.) e um ou mais dispositivos de entrada (por exemplo, teclado, mouse, dispositivo apontador portátil, tela sensível ao toque e similares) . O dispositivo de cinematografia de videogame também inclui uma memória, uma ou mais unidades de processamento central (CPUs), uma ou
Petição 870190132090, de 12/12/2019, pág. 12/84
6/53 mais unidades de processamento gráfico (GPUs) e um ou mais adaptadores de rede (por exemplo, adaptadores de rede com ou sem fio que fornecem conectividade de rede usada para o videogame).
[0011] Na modalidade de exemplo, o dispositivo de cinematografia de videogame inclui um mecanismo de jogo (por exemplo, executado pela CPU ou GPU) que apresenta o videogame (ou simulação) ao usuário. O mecanismo de jogo inclui um módulo colisor e um módulo de composição que fornecem funcionalidade cinematográfica conforme descrito aqui. Cada um dos módulos de composição e colisor, bem como o mecanismo de jogo, incluem instruções executáveis por computador que residem na memória executada pela CPU ou GPU durante a operação. O mecanismo de jogo se comunica com os dispositivos de vídeo e também com outro hardware, como o(s) dispositivo(s) de entrada. O módulo de composição e o módulo colisor podem ser integrados diretamente no mecanismo de jogos ou podem ser implementados como um software externo (por exemplo, um plug-in ou outro software de processamento de vídeo independente).
[0012] De acordo com uma modalidade, o módulo de composição altera a orientação de uma câmera virtual para manter uma parte específica do assunto (referido aqui como alvo de assunto, ou simplesmente alvo) dentro de uma área específica na tela de câmera (referida aqui como a zona alvo). O método aqui descrito é um método preciso e de alto desempenho para manter a posição de um alvo no espaço de tela. O módulo de composição inclui velocidades de rastreamento com base no tempo, além de caixas delimitadoras na tela de câmera para definir a rapidez com que orientará
Petição 870190132090, de 12/12/2019, pág. 13/84
7/53 a câmera para posicionar o alvo na zona alvo desejada. 0 módulo de composição descrito neste documento controla a orientação da câmera, mas não precisa controlar a distância da câmera ao assunto e, portanto, pode ser usado com outros sistemas que controlam a posição da câmera (no espaço 3D absoluto ou na posição em relação a um assunto).
[0013] De acordo com muitas modalidades e mostrado na Figura 2A e na Figura 2B, é uma tela de câmera contendo contornos para o módulo de composição de captura. A composição do assunto é definida através da colocação do objeto no interior de uma área específica do espaço dimensional 2- da tela de câmara. A área específica é chamada de zona alvo. Durante a filmagem, o módulo de composição altera dinamicamente a orientação da câmera para manter o alvo dentro da zona alvo. Como visto na figura, a zona alvo na tela de câmera é definida por vários conjuntos de contornos. Quando visualizada, ela aparece como três regiões da tela: uma zona alvo que se encontra dentro de todos os contornos suaves, uma zona de contorno suave que ocupa o espaço entre os contornos suaves e os contornos rígidos e uma zona de contorno rígido que ocupa o espaço fora das zonas de contornos rígidos. Os contornos (e, portanto, a zona alvo) são definidos por um usuário ou podem ser escolhidos por um procedimento automatizado usando regras de cinematografia.
[0014] Em algumas modalidades, o assunto pode ser um assunto composto que inclui vários alvos, cada um dos quais pode se mover independentemente. Por exemplo, o assunto composto pode incluir dois ou mais jogadores em um time, ou um jogador e um local fixo ou outro objeto que não seja jogador. O módulo de composição pode usar a câmera para
Petição 870190132090, de 12/12/2019, pág. 14/84
8/53 rastrear o assunto composto, posicionando e orientando a câmera com base nos aspectos de localização e orientação do assunto composto ou de seus alvos (por exemplo, como um centro de cálculo do tipo de massa). 0 assunto composto pode ser usado como um grupo lógico e pode ser usado como um OlharPara, permitindo o uso do assunto composto como um alvo para visualização de outros usuários. Em algumas modalidades, a posição do assunto composto pode ser configurada para ser o centro de uma caixa delimitadora que inclui todos os alvos do assunto composto (por exemplo, computados a partir das posições e raios dos alvos do assunto composto).
[0015] Em algumas modalidades, cada alvo dentro do assunto composto pode receber um peso relativo que pode influenciar a posição e orientação da câmera em relação ao assunto composto. Por exemplo, a câmera pode ser inclinada em direção a um capitão da equipe ou a um membro da equipe liderando um grupo, ponderando o membro da equipe mais alto que outro, por exemplo, fazendo com que a câmera mude o centro do foco mais para o membro da equipe com maior peso. Em algumas modalidades, os pesos de cada alvo do assunto composto podem mudar dinamicamente com base em ações tomadas pelos alvos específicos. Por exemplo, se um membro da equipe estiver atirando em um inimigo enquanto um segundo estiver ocioso e procurando uma direção diferente, o membro ativo da equipe poderá ter um peso maior. Em algumas modalidades, a orientação média é a soma ponderada normalizada dos quaterniões representando as orientações dos alvos. Como tal, e por exemplo, as ações contemporâneas dos alvos podem fazer com que a câmera mude o centro do foco
Petição 870190132090, de 12/12/2019, pág. 15/84
9/53 mais para o membro ativo da equipe e a orientação da câmera para a orientação do membro ativo da equipe (por exemplo, mais para a direção de fogo do jogador ativo).
[0016] Em algumas modalidades, o módulo de composição pode enquadrar automaticamente dinamicamente o assunto composto com base em suas posições. Por exemplo, se os objetos se afastarem, o módulo de composição poderá ajustar o campo de visão ou a posição da câmera, de modo a incluir todos os alvos no assunto composto. Em algumas modalidades, o módulo de composição pode criar uma caixa delimitadora para o assunto composto com base na posição inicial da câmera e avaliar o espaço de tela que ocupa. Em algumas modalidades, as dimensões do espaço de tela podem ser especificadas por um usuário visualizador do assunto composto (por exemplo, nas dimensões de câmera horizontal e vertical). A câmera pode ajustar seu campo de visão para reenquadrar o assunto composto à medida que os alvos individuais se movem. Em algumas modalidades, o reenquadramento pode ser realizado movendo a câmera na direção ou fora do assunto composto (por exemplo, ao longo do eixo central da câmera). Em algumas modalidades, amortecimento pode ser aplicado à ação de reenquadramento, de modo que o reposicionamento da câmera ocorra durante um período de tempo, evitando assim transições irregulares.
[0017] A Figura 3 mostra um exemplo de composição de assunto com os contornos de zona alvo em que o assunto é um elefante e o alvo de assunto é o olho direito do elefante. A zona alvo no exemplo é uma área na parte superior direita da tela de câmera.
[0018] De acordo com uma modalidade, o comportamento do
Petição 870190132090, de 12/12/2019, pág. 16/84
10/53 módulo de composição quando o alvo está em cada uma dessas zonas é caracterizado como:
Zona alvo - Se o alvo estiver dentro da zona alvo, nenhuma orientação da câmera ocorrerá e o módulo de composição continuará monitorando a posição do alvo na tela de câmera.
Zona de contorno suave - Se for determinado que o alvo está entre um contorno suave e um contorno rígido, o módulo de composição orienta a câmera nas velocidades de rastreamento horizontal e vertical desejadas para movê-la para a zona alvo. As velocidades de rastreamento são definidas no espaço de tela.
Zona de contorno rígido - o alvo não é permitido estar além de qualquer das linhas de contorno rígidos. Um alvo além de uma das linhas de contorno rígido fará com que o módulo de composição oriente imediatamente a câmera até a borda do contorno rígido mais próximo do alvo. Não há atraso de tempo (por exemplo, a constante de tempo é zero) para esta ação, a câmera é movida imediatamente após a detecção de sua posição além do contorno.
[0019] Embora a Figura 2 e a Figura 3 mostrem o que parece ser o posicionamento simétrico dos contornos horizontal e vertical, esses contornos não precisam ser posicionados simetricamente, de modo que o tamanho das zonas possa ser assimétrico tanto na esquerda/direita quanto para cima/para baixo. Além disso, a Figura 2 e a figura 3 mostram o que parecem ser contornos lineares em ângulos retos, criando uma zona de alvo retangular, uma zona de contorno suave retangular e um contorno rígido retangular, conforme mostrado na Figura 2B, os contornos podem ser não lineares
Petição 870190132090, de 12/12/2019, pág. 17/84
11/53 e o formato das zonas pode ter qualquer formato.
[0020] O método de rastreamento descrito neste documento permite o rastreamento desacoplado ao longo do eixo vertical e horizontal do espaço de tela. Além disso, o método de rastreamento usa constantes de tempo para cada limite para determinar a quantidade de tempo que o módulo de composição pode usar para reorientar a câmera, de modo que o alvo se mova para a zona alvo. Com as 3 zonas descritas, o módulo de composição somente ajusta a câmera se detectar um desvio da composição desejada (ou seja, se o alvo estiver fora da zona alvo) . Além disso, a reorientação da câmera na zona de contorno suave é uma resposta graduada com base na quantidade de desvio do contorno. A velocidade da reorientação está relacionada à distância do limite da zona alvo. Essa abordagem permite uma sensação realista do movimento da câmera, pois quanto mais próximo o alvo estiver da zona alvo, mais lenta será a reação da câmera (e vice-versa) . Isso é semelhante aos movimentos das câmeras controladas pelos seres humanos.
[0021] Em uma modalidade de exemplo, o método usa cálculos de ponto flutuante de precisão única e produz resultados de alta qualidade. Devido ao uso de cálculos de ponto flutuante de precisão única, a carga computacional é reduzida em comparação com o cálculo com cálculos de ponto flutuante de precisão dupla. Isso é muito útil para situações em que a composição da captura deve ser feita em várias câmeras simultaneamente. Por exemplo, quando há várias câmeras em uma cena, a composição específica de cada câmera pode ser mantida simultaneamente usando esse método sem o uso de um computador de alta potência. Pelo mesmo motivo, o
Petição 870190132090, de 12/12/2019, pág. 18/84
12/53 método de composição descrito aqui também é muito prático para um dispositivo móvel em que o poder de computação pode ser menor que um computador de mesa/laptop. Para preservar a precisão do ponto flutuante usando apenas uma precisão, todos os cálculos são realizados no espaço de coordenadas da câmera (por exemplo, coordenadas locais em relação à câmera) . Além disso, em vez de usar ângulos de Euler e trigonometria para determinar a posição do assunto na tela e a orientação da câmera, todas as orientações e valores de rotação são calculados usando quaterniões e vetores de comprimento unitário.
[0022] De acordo com uma modalidade e mostrada na Figura 4, é um método de composição, em que a ordem de operações do módulo de composição para manter um alvo dentro da zona alvo é a seguinte para cada câmera:
[0023] Primeiro, o módulo de composição converte a posição de alvo das coordenadas do mundo 3D em coordenadas do espaço da câmera 3D. Em seguida, o módulo de composição converte as coordenadas da câmera 3D do alvo em uma posição de espaço da janela de visualização de câmera (por exemplo, posição da tela de câmera). O módulo de composição compara a posição de alvo no espaço de tela com a zona alvo selecionada. Se a zona alvo selecionada (por exemplo, região de contorno central) no espaço da janela de visualização não contiver o alvo, o módulo de composição deverá reajustar a orientação da câmera. No entanto, se o espaço da janela de visualização contiver o alvo, não será necessário nenhum ajuste da orientação da câmera e o módulo de composição poderá voltar à etapa 1 e monitorar a posição do alvo. Para reajustar a orientação da câmera, o módulo de composição
Petição 870190132090, de 12/12/2019, pág. 19/84
13/53 encontra o ponto na borda do contorno fornecido mais próximo do alvo, de modo que a câmera gire no caminho mais curto que coloca o alvo na zona alvo da composição desejada. 0 módulo de composição calcula dois vetores; primeiro, um vetor da origem de câmera para o alvo e, segundo, um vetor da origem da câmera para o ponto no contorno calculado na etapa anterior. Ambos os vetores são calculados em coordenadas da câmera. 0 módulo de composição projeta os dois vetores no eixo direito para usar como base para o rastreamento horizontal e projeta os dois vetores no eixo superior para usar como base para o rastreamento vertical. 0 módulo de composição determina o ângulo entre os dois vetores e usa o valor para escalar os valores de rastreamento constantes no tempo para movimento suave usando quaterniões.
[0024] O módulo de composição cria rotações de quaternião em torno do eixo direito e do eixo superior a partir dos ângulos calculados. O módulo de composição usa os quaterniões resultantes para girar a câmera na quantidade solicitada [0025] O módulo de composição aplica esse processo de rastreamento duas vezes, uma vez para o contorno de rastreamento rígido e novamente para o contorno de rastreamento flexível por atualização (o tempo de rastreamento para o contorno rígido é zero, o que significa instantâneo).
[0026] Observe também que o módulo compositor pode ser aplicado a um sistema com uma câmera estacionária e um assunto em movimento, um sistema com uma câmera em movimento e um assunto estacionário ou um sistema em que a câmera e o assunto estejam em movimento.
[0027] De acordo com uma modalidade e aqui descrito,
Petição 870190132090, de 12/12/2019, pág. 20/84
14/53 existe um sistema colisor (incorporado em parte dentro de um módulo colisor) pelo qual o módulo colisor move (por exemplo, altera a posição) uma câmera para evitar um objeto em um ambiente 3D em que o objeto está ocluindo a zona alvo da câmera. 0 sistema colisor pode usar o sistema de módulos de composição para manter a composição de uma captura (por exemplo, alterando a orientação da câmera) enquanto o sistema colisor move a posição da câmera para evitar o objeto de obstrução.
[0028] De acordo com uma modalidade e mostrada na Figura 5, o módulo colisor cria picos de colisor em uma câmera. Um pico de colisor é uma haste que se estende de uma câmera e se estende por uma distância. Uma câmera pode ter vários picos de colisor que se estendem em vários ângulos. O comprimento do pico de colisor e a direção em que ele se estende a partir da câmera podem ser definidos pelo usuário e podem ser diferentes para cada pico de colisor. Cada pico de colisor também pode ter um amortecimento ajustável. O amortecimento entra em vigor quando um pico de colisor é comprometido (ou seja, entra em contato com um objeto no ambiente 3D) e refere-se à velocidade com que o módulo colisor retorna a câmera para uma posição em que o pico de colisor não está mais comprometido (isto é, não está mais em contato com um objeto no ambiente 3D) . O amortecimento rígido move a câmera rapidamente de uma posição comprometida para uma posição não comprometida, enquanto o amortecimento suave move a câmera lentamente de uma posição comprometida de volta para uma posição não comprometida. O amortecimento do colisor retira parte da aspereza bruta das colisões entre a câmera e os objetos. Os picos de colisor podem ser feitos
Petição 870190132090, de 12/12/2019, pág. 21/84
15/53 mais do que o necessário com amortecimento e as colisões podem ser evitadas tão suavemente que o espectador não notaria. Sem amortecer, a câmera pode agir bastante quebradiça e pode parar/iniciar instantaneamente, etc.
[0029] O comportamento do sistema do módulo colisor depende do tipo de oclusão que ocorre entre a câmera, o objeto oclusivo e o objeto de uma captura. De acordo com uma modalidade e mostrada nas Figuras 6A-6G, o sistema colisor descrito neste documento responde a pelo menos dois tipos diferentes de oclusão. Um primeiro tipo de oclusão referese à posição do corpo da câmera em relação ao objeto oclusivo e ocorre mais especificamente quando o objeto está próximo o suficiente do corpo da câmera para comprometer um ou mais picos de colisor (isto é, fica dentro do comprimento do pico de colisor) . Quando um ou mais picos de colisor são comprometidos, o módulo colisor altera a posição da câmera para retornar os picos de colisor a uma situação não comprometida. Para fazer isso, o módulo colisor afasta a câmera do objeto oclusante ao longo da direção do pico comprometido do colisor. O pico de colisor comprometido pode ser considerado como uma direção do vetor no espaço virtual 3D. Por exemplo, se a câmera tiver um pico comprometido no lado esquerdo, o módulo colisor moverá a câmera para a direita (por exemplo, ao longo da direção do vetor do pico de colisor) até que o pico de colisor não seja mais comprometido pelo objeto. Em algumas modalidades, um pico de colisor é automaticamente incluído entre a câmera e o alvo e estende parte ou toda a distância a partir da câmera e do alvo, acionando desse modo a oclusão com base em um objeto intermediário. Se vários picos de colisor estiverem
Petição 870190132090, de 12/12/2019, pág. 22/84
16/53 comprometidos, o módulo colisor moverá a câmera para eliminar todos os picos comprometidos; em outras palavras, o módulo colisor moverá a câmera na direção da soma vetorial das várias direções do pico de colisor. De acordo com uma modalidade, o módulo colisor usará o módulo de composição para garantir que a visão composicional do assunto seja preservada enquanto a câmera estiver em movimento (por exemplo, enquanto corrige um pico comprometido). 0 módulo colisor ajusta a posição do corpo da câmera enquanto o módulo de composição ajusta simultaneamente a orientação da câmera para manter o objetivo da composição na zona alvo.
[0030] De acordo com uma modalidade, existe um segundo tipo de oclusão que envolve preservação de composição, em que a visão do assunto de dentro da zona alvo é ocluida por um objeto posicionado entre a câmera e o assunto. Nesta segunda situação, o módulo colisor projeta uma linha (chamada de 'raio de alvo') no ambiente 3D que se estende da origem da câmera ao alvo de assunto (por exemplo, um ponto no assunto) . Esse raio de alvo geralmente não passa pelo centro da tela, pois é ajustável com o módulo de composição da câmera através do alvo e da zona alvo (por exemplo, se o usuário decidir compor uma captura com a zona alvo na borda da tela). O raio de alvo pode ser pensado como um vetor no ambiente 3D.
[0031] De acordo com uma modalidade, quando o raio de alvo é comprometido (por exemplo, quando um objeto cruza com o raio de alvo), o módulo colisor move a câmera em direção ao assunto ao longo do raio de alvo (por exemplo, ao longo da direção do vetor do raio de alvo) até a câmera estar em uma posição em que não é mais ocluida pelo objeto e o raio
Petição 870190132090, de 12/12/2019, pág. 23/84
17/53 de alvo não é mais comprometido. Em algumas modalidades, esse movimento ocorre dentro de um único quadro (por exemplo, a câmera pula para a nova posição). Em outras palavras, a câmera é movida para frente pelo módulo colisor até obter uma imagem clara do assunto com a composição adequada (por exemplo, usando o módulo de composição para manter o alvo dentro da zona alvo à medida que a câmera se move) . De acordo com uma modalidade, o comprimento do raio de alvo pode ser menor que a distância da câmera ao assunto, de modo que termine antes de atingir o assunto alvo. Um raio de alvo que termina antes de atingir o alvo de assunto elimina a possibilidade de cruzar um objeto tão próximo ao objeto que ele não pôde ser desviado enquanto mantendo uma boa captura. 0 raio de alvo curto também elimina a possibilidade de permitir que o módulo colisor faça zoom na câmera tão perto do objeto que é impossível uma composição significativa (por exemplo, para evitar um close extremo). 0 comprimento do raio de alvo também pode ser definido de forma que sobressaia do alvo em questão e saia do outro Lado, permitindo a interseção do raio de alvo com objetos atrás do assunto.
[0032] De acordo com uma modalidade e mostrada no fluxograma da Figura 6D, o módulo colisor tenta preservar a altura da câmera original empurrando a câmera de volta à sua posição original antes que o raio de alvo seja comprometido. Em algumas modalidades, esse movimento ocorre dentro de um único quadro (por exemplo, a câmera salta para a nova posição determinada pelo método a seguir). Em outras modalidades, o método a seguir para empurrar a câmera de volta ocorre com menos frequência, o que pode auxiliar na redução da carga computacional. Para fazer isso, o módulo colisor lança um
Petição 870190132090, de 12/12/2019, pág. 24/84
18/53 raio (referido aqui como raio negativo) de volta ao longo do eixo de câmera, na direção negativa (por exemplo, longe do alvo), até que o raio negativo atinja o plano horizontal definido pela altura de câmera original. Se o plano da altura de câmera original puder ser atingido sem obstáculos, colocar a câmera no ponto em que o raio negativo cruza o plano da altura de câmera original e saia (por exemplo, vá para o ponto Ά' na Figura 6A). Se um obstáculo for encontrado, o módulo colisor executa as seguintes etapas: etapa 1, projetar o raio negativo no plano definido pelo obstáculo normal no ponto em que o raio negativo atingiu o obstáculo. Etapa 2, definir a nova direção de raio como a projeção do raio negativo no plano definido pelo obstáculo normal. Iniciar um caso especial para cantos internos (por exemplo, se o raio negativo atingir o obstáculo em um ponto ao longo de uma linha onde dois obstáculos se encontram), em seguida, tomar a projeção do raio negativo nessa linha de interseção como a nova direção de raio. Se a nova direção de raio não apontar para o plano da altura de câmera original, deixar a câmera aqui e sair do modo de tentar preservar a altura da câmera. Etapa 4, o módulo colisor estende o raio na nova direção de raio, parando quando o plano da altura de câmera original é atingido ou outro obstáculo é atingido ou a borda da caixa delimitadora do obstáculo atual é atingida. Se o plano da altura de câmera original for atingido, deixar a câmera neste ponto e sair (por exemplo, vá para o ponto Ά' na Figura 6A). Se um número máximo de iterações tiver sido atingido, deixar a câmera neste ponto e sair (por exemplo, vá para o ponto Ά' na Figura 6A) . Se outro obstáculo for atingido, iniciar uma nova iteração retornando à etapa 1
Petição 870190132090, de 12/12/2019, pág. 25/84
19/53 (por exemplo, vá para o ponto 'C na Figura 6D) . Se a borda da caixa delimitadora do obstáculo atual for atingida, redefinir o eixo de câmera como a direção do alvo até aqui e começar uma nova iteração para tentar preservar a altura de câmera original (por exemplo, vá para o ponto 'D' na Figura 6D).
[0033] De acordo com uma modalidade e mostrado na Figura 6E, é um diagrama esquemático de um ambiente virtual que mostra o movimento da câmera usando o método descrito na Figura 6D. Neste exemplo, em um primeiro quadro, a câmera está na posição 0 (pos 0) quando um obstáculo obscurece o raio de alvo. Antes de um segundo quadro ser simulado e desenhado, o módulo colisor move a câmera para a posição 1 (pos 1) para evitar obstáculos. No entanto, a posição 1 está muito mais próxima do alvo e não mantém a altura de câmera original ao mesmo tempo que evita o obstáculo. Consequentemente, o módulo colisor tenta mover a câmera de volta à posição original da câmera, mas essa posição é bloqueada pelo objeto. O módulo colisor empurra a câmera para cima da parede do objeto até atingir o topo do objeto na posição 2 (pos 2). O módulo colisor gira a câmera de modo que o eixo de câmera aponte novamente para o alvo e empurra a câmera de volta até que ela esteja no plano de altura de câmera original na posição 3 (pos 3) . Este movimento da posição 1 à posição 3 pode ser realizado dentro de um único quadro de vídeo padrão.
[0034] De acordo com uma modalidade e mostrada em um fluxograma na Figura 6F, o módulo colisor tenta preservar a distância original da câmera, empurrando a câmera de volta à sua posição original antes que o raio de alvo seja
Petição 870190132090, de 12/12/2019, pág. 26/84
20/53 comprometido. Em algumas modalidades, esse movimento acontece dentro de um único quadro (por exemplo, a câmera salta para a nova posição determinada pelo método a seguir). Em outras modalidades, o método a seguir para empurrar a câmera de volta ocorre com menos frequência, o que pode auxiliar na redução da carga computacional. Para fazer isso, o módulo colisor lança um raio (referido aqui como o raio negativo) de volta ao longo do eixo de câmera, na direção negativa (por exemplo, longe do alvo), até que o raio negativo atinja o plano vertical definido pela distância da câmera original do alvo. Se o plano da distância original da câmera puder ser atingido sem obstáculos, coloque a câmera no ponto em que o raio negativo cruza o plano da distância original da câmera e saia (por exemplo, vá para o ponto Ά' na Figura 6A) . Se um obstáculo for encontrado, o módulo colisor executa as seguintes etapas: etapa 1, projetar o raio negativo no plano definido pelo obstáculo normal no ponto em que o raio negativo atingiu o obstáculo. Etapa 2, definir a nova direção de raio como a projeção do raio negativo no plano definido pelo obstáculo normal. Iniciar um caso especial para cantos internos (por exemplo, se o raio negativo atingir o obstáculo em um ponto ao longo de uma linha onde dois obstáculos se encontram), em seguida, projetar o raio negativo nessa linha de interseção como a nova direção de raio. Se a nova direção de raio não apontar para o plano da distância original da câmera, deixar a câmera aqui e sair do modo de tentar preservar a distância da câmera. Etapa 4, o módulo colisor estende um raio na nova direção de raio, parando quando o plano da distância original da câmera é atingido ou outro obstáculo é atingido ou a borda
Petição 870190132090, de 12/12/2019, pág. 27/84
21/53 da caixa delimitadora do obstáculo atual é atingida. Se o plano da distância original da câmera for atingido, deixar a câmera neste ponto e sair (por exemplo, vá para o ponto Ά' na Figura 6A). Se um número máximo de iterações tiver sido atingido, deixar a câmera neste ponto e sair (por exemplo, vá para o ponto Ά' na Figura 6A) . Se outro obstáculo for atingido, iniciar uma nova iteração retornando à etapa 1 (por exemplo, vá para o ponto 'F' na Figura 6F). Se a borda da caixa delimitadora do obstáculo atual é atingida, então redefinir o eixo da câmera como a direção do alvo até aqui, e começar a nova iteração para tentar preservar a altura de câmera original (por exemplo, vá para o ponto 'G' na Figura 6F).
[0035] De acordo com uma modalidade e mostrado na Figura 6G, é um diagrama esquemático de um ambiente virtual que mostra o movimento da câmera usando o método descrito na Figura 6F. Neste exemplo, em um primeiro quadro, a câmera está na posição 0 (pos 0) quando um obstáculo obscurece o raio de alvo. Antes de um segundo quadro ser simulado e projetar, o módulo colisor move a câmera para a posição 1 (pos 1) para evitar obstáculos. No entanto, a posição 1 está muito mais próxima do alvo e não mantém a distância original da câmera em relação ao alvo, evitando o obstáculo. Consequentemente, o módulo colisor tenta mover a câmera de volta à posição original da câmera, mas é bloqueado pelo objeto. De acordo com o método, o módulo colisor empurra a câmera para cima da parede do objeto até atingir o topo do objeto na posição 2 (pos 2) . O módulo colisor gira a câmera de modo que o eixo de câmera aponte novamente para o alvo e empurra a câmera de volta até que
Petição 870190132090, de 12/12/2019, pág. 28/84
22/53 ela esteja no plano de distância original da câmera na posição 3 (pos 3). Esse movimento da posição 1 à posição 3 pode ocorrer em um único quadro de video padrão.
[0036] Como um exemplo da reação do módulo colisor à oclusão do objeto, as Figuras 7A, 7B e 7C mostram três cenários de oclusão em que um objeto oclusivo se move da esquerda para a direita na tela de câmera. Na Figura 7A, o objeto ocluso cobre apenas o lado esquerdo da tela e não oclui nenhuma parte do elefante. O módulo colisor não movería a câmera nesse caso. Na Figura 7B, o objeto ocluso cobre a maior parte da área da tela no lado esquerdo da tela e oclui uma grande parte do elefante, mas ainda não oclui o alvo em questão. Novamente, isso não faria o módulo colisor mover a câmera. No entanto, na Figura 7C, o objeto ocluso cobre grande parte da tela e, finalmente, cobre o alvo de assunto no canto superior direito da tela de câmera. Como o objeto oclusivo cobre o alvo do objeto, ele se cruza com o raio do alvo e faz com que o módulo colisor mova a câmera em direção ao objeto para ir além do objeto ocluso.
[0037] Em algumas modalidades, o módulo colisor pode utilizar uma distância minima de obstáculos ao determinar se e quando reagir com base na linha de visão ocluida. Alguns objetos oclusivos podem ser ignorados (por exemplo, nenhuma alteração na posição da câmera) com base na distância entre o obstáculo e a câmera. Por exemplo, objetos próximos podem ser ignorados se estiverem abaixo da distância mínima do obstáculo da câmera, pois é provável que passem rapidamente em primeiro plano. Em algumas modalidades, fatores adicionais podem ser usados ao determinar se é necessário reagir com base na linha de visão ocluida, como o tamanho do
Petição 870190132090, de 12/12/2019, pág. 29/84
23/53 objeto, a trajetória atual e a velocidade da câmera ou alvo, ou um tempo de oclusão calculado com base no objeto ocluido e a trajetória atual e a velocidade da câmera.
[0038] De acordo com uma modalidade, é forr lecido um
método para avaliação da captura de câmera usando o módulo
colisor e uma câmera especial aqui referida como uma meta
câmera. A meta câmera é uma câmera de alto nível q ue contém
uma pluralidade de sub-câmeras produzindo cada uma sub-
captura. Cada uma das sub-câmeras pode conter ou i usar um
módulo colisor. A meta câmera pode ser configurada . para que
cada sub-câmera possua qualquer tipo de sub-capt :ura (por
exemplo, elas não precisam seguir nenhum tipo de tema
cinematográfico). Por exemplo, uma sub-câmera pode ser
deslocada proceduralmente de um assunto Voltar 5 metros e
1 metro abaixo do rosto ou pode ser uma câmera . fixa no
mundo, ou pode ser uma câmera de olhar livre com qualquer
número restrições/relações posicionais e angulares entre a sub-câmera e o assunto.
[0039] Embora a meta câmera seja completamente aberta a qualquer tipo de configuração de sub-câmera, ela pode ser mais eficiente quando as sub-câneras são configuradas em temas, para que todas tenham algum tipo de similaridade conceituai. De acordo com uma modalidade, a meta câmera pode ser configurada para que todas as sub-câmeras tenham subcapturas que sejam variações em um único tipo conceituai de
captura de câmera (por exemplo, captura de cabeça, ? Câptülâ
larga, captura longa e similares) . Por exemplo, Unicà ΪΏΘυβ
câmera pode ser configurada como uma meta câmera de ' captura
de cabeça', de modo que cada uma das sub-capturas seja uma
variação da captura de cabeça de um assunto. Cada i uma da s
Petição 870190132090, de 12/12/2019, pág. 30/84
24/53 sub-câmeras de captura de cabeça teria parâmetros diferentes para criar diferentes variações de capturas de cabeça (por exemplo, ângulos diferentes, distâncias, campo de visão do assunto).
[0040] De acordo com uma modalidade, quando implementada
(por exemplo, em um programa de computador), a meta câmera
avaliará a qualidade : de captura de todas as sub-câmeras que
ema contém, as class: Lficará e fornecerá uma única sub-captura
com a classificai são de «qualidade mais alta. Mais
especificamente, quando uma meta câmera é acionada, ela ativa todas as sub-câmeras e executa rapidamente uma análise em cada uma delas para determinar a 'qualidade de captura’ e depois reproduzir apenas a sub-câmera de qualidade mais alta.
Isso acontece muito raoidamente com um atraso de no máximo
um quadro.
[0041] Em uma modalidade exemplar, a qualidade de captura pode ser determinada da seguinte maneira: Cada sub-câmera recebe primeiro uma pontuação perfeita. Após a inicialização
da sub-câmera (por exemplo, o módulo colisor para a sub-
câmera é ativado), a pontuação da sub-câmera é ajustada com base nas ações do módulo colisor para a sub-câmera. Uma pontuação é ajustada para baixo se o módulo colisor precisar
mover a sub-câmera (por exemplo, porque a sub-câmera está
impedida de ver o assunto ou tem algo no caminho da subcaptura). A quantidade do ajuste da pontuação depende de quanto a câmera foi movida pelo módulo colisor. Se a subcâmera não conseguir uma captura do objeto mesmo após o
movimento do módulo colisor, então a captura é considerada
uma falha (por exemplo, a pontuação pode ser ajustada para zero). Uma sub-câmera com uma pontuação alta (por exemplo,
Petição 870190132090, de 12/12/2019, pág. 31/84
25/53 perto da pontuação perfeita) terá se movido menos que uma sub-câmera com uma pontuação mais baixa. Uma sub-câmera que não foi movida pelo módulo colisor (por exemplo, uma captura perfeita) é classificada como a mais alta e mantém uma pontuação perfeita.
[0042] Em algumas modalidades, vários critérios são levados em consideração ao determinar a qualidade de captura. Esses critérios podem incluir, por exemplo, se o alvo é ocluido do ponto de vista da câmera (por exemplo, se o módulo colisor tiver que mover uma câmera), duração da oclusão (se houver) (por exemplo, quanto maior a duração, mais pobre a qualidade de captura), se a câmera foi deslocada de sua posição ideal (por exemplo, devido à resolução de colisão do módulo colisor), distância da câmera ao alvo (por exemplo, conforme descrito abaixo), composição de captura (por exemplo, se a captura está dentro limites), a importância do alvo no contexto do jogo (por exemplo, um alvo, como um jogador específico, pode ser classificado em importância pela lógica do jogo ou diretamente por um jogador do jogo) ou se as regras cinematográficas são respeitadas escolhendo uma captura em particular (por exemplo, regras cinematográficas podem ser aplicadas em várias capturas e, portanto, isso depende de uma ou mais capturas anteriores, como se a nova captura viola uma regra cinematográfica).
[0043] Em algumas modalidades, o módulo colisor pode utilizar tanto a prioridade quanto a qualidade de captura como fatores ao selecionar uma vista de sub-câmera específica. Por exemplo, a prioridade de captura pode incluir fatores como qual membro ou área da equipe está no campo de visão da sub-câmera (por exemplo, focar no jogador mais
Petição 870190132090, de 12/12/2019, pág. 32/84
26/53 eficaz ou em um local específico central do jogo) ou a natureza das ações atuais sendo tomadas pelos jogadores ou pelo jogo (por exemplo, concentrando-se em uma luta entre jogadores ou quando um jogador pega um objeto de interesse no jogo) . Como tal, a prioridade da captura pode ser ponderada junto com a qualidade de captura para selecionar uma visualização específica da sub-câmera. Em algumas modalidades, a randomização pode ser aplicada com base na qualidade de captura ou na prioridade de captura. Por exemplo, se várias sub-câmeras tiverem qualidade de captura com pontuação semelhante ou prioridade de captura, o módulo colisor poderá randomizer qual visualização de sub-câmera selecionar, fornecendo assim uma variedade de visualizações de câmera sem sacrificar necessariamente a qualidade ou a prioridade da foto.
[0044] Em algumas modalidades, o módulo colisor identifica uma distância alvo e avalia a qualidade de captura das várias sub-câmeras com base nessa distância alvo. Por exemplo, o usuário pode preferir uma visão de 20 jardas (18,288 metros) da ação. Assim, o módulo colisor pode selecionar sub-câmeras com base na distância alvo, ponderando as vistas das sub-câmeras cerca de 20 jardas (18,288 metros) acima daquelas mais distantes ou mais próximas. Em algumas modalidades, o módulo colisor pode utilizar um decaimento linear ao avaliar a distância alvo como um fator para a qualidade de captura (por exemplo, até alguns múltiplos pré-determinados da distância alvo).
[0045] Em algumas modalidades, um transpositor orbital é utilizado com uma câmera de acompanhamento no alvo. O módulo de composição pode adicionar controles adicionais para viés
Petição 870190132090, de 12/12/2019, pág. 33/84
27/53 de rumo, seguir com base no delta de posição, vetor ou rumo mundial, vários modos de mesclagem e controles de amo rt e c imento por eixo.
Um filtro gaussiano configurável pode ser usado para suavizar determinação velocidade.
Pode ser vantajoso destilar ou suavizar certos movimentos instantâneos (por exemplo, pequenos solavancos ou espasmos de um carro parando) e concentrar a vista da câmera nos movimentos mais importantes do alvo. Um filtro gaussiano passa-baixo pode ser utilizado para suavizar esses pequenos movimentos.
[0046] Em algumas moda 1 i da cie s , o módulo de composição
pode ajustar automatic amente o campo de visão cie uma câmera
com base na distância do assunto par a manter os objetos do
mesmo tamanho na tela. Por exempj -O, o módulo de composição
pode ajustar o campo de visão (por exemplo, de uma câmera a seguir) para manter o tamanho da cabeça de um alvo com um determinado tamanho. Dessa forma, o tamanho do objeto entre os cortes pode ser controlado mesmo quando as distâncias mudam ou quando os personagens se movem. Em algumas modalidades, o tamanho mundial da. cobertura de quadros pode ser configurado, juntamente com uma distância alvo. 0 módulo de composição pode ajustar o campo de visão dinamicamente para manter o tamanho na distância alvo. As configurações de amortecimento podem permitir o controle da tensão temporal da mudança.
[0047] Em algumas modalidades, o módulo de composição pode utilizar uma visão de câmera acionada por estado para fornecer a ligação sem código de câmeras e estados de animação. Um desenvolvedor pode acionar diferentes comportamentos de câmera para várias animações. Por
Petição 870190132090, de 12/12/2019, pág. 34/84
28/53 exemplo, uma câmera de mão pode ser acionada quando um personagem dispara. Quando um alvo de animação é definido (por exemplo, quando uma sequência de animação é definida como alvo pelo desenvolvedor), o módulo de composição varre uma máquina de estado de animação associada a esse alvo de animação, procurando estados hierárquicos e cria uma tabela com todos os estados (por exemplo, em todos os níveis hierárquicos).
módulo de composição associa câmeras virtuais específicas a cada estado. A associação pode ser feita por meio de uma interface de usuário que permite que cada estado seja conectado a uma câmera virtual específica ou a associação pode ser baseada em regras para que todos os estados de um determinado tipo sejam conectados a uma câmera virtual
Durante um jogo, quando um estado se torna ativo, a câmera virtual associada é ativada pelo módulo de composição. Se não houver uma câmera virtual associada a um estado específico, essa transição de estado será ignorada e a câmera ativa atual permanecerá. Em algumas modalidades, regras de mesclagem personalizadas podem ser fornecidas para as transições de câmera virtual.
[0048] Com essa funcionalidade entre a meta câmera, o módulo colisor e a avaliação de captura, é possível criar várias meta câmeras, cada uma contendo várias sub-câmeras, a fim de criar um sistema onde você sempre pode cortar com um bom ângulo de um assunto, não importa o que esteja acontecendo.
[0049] A Figura 8A é uma captura de tela que ilustra um painel de interface de usuário para uma câmera acionada por estado. Este painel permite ao usuário controlar a ligação entre um estado de animação e uma câmera virtual, bem como
Petição 870190132090, de 12/12/2019, pág. 35/84
29/53 a mistura entre as capturas.
[0050] A Figura 8B é uma captura de tela que ilustra uma lista suspensa dinamicamente preenchida de estados em um jogo (por exemplo, quando um usuário clica em um botão de estado). 0 usuário pode escolher qualquer estado disponível na lista.
[0051] A Figura 8C é uma captura de tela que ilustra o resultado do clique no botão da câmera. Clicar em Câmera mostra todas as câmeras da cena e permite ao usuário escolher qualquer câmera e vinculá-la a qualquer estado escolhido. Isso permite a vinculação de qualquer estado específico a qualquer câmera específica (por exemplo, sem codificação pelo usuário).
[0052] A Figura 8D é uma captura de tela que ilustra como as câmeras controladas pelo estado podem ser combinadas (por exemplo, de uma captura na câmera 1 a uma captura na câmera 2) . A mistura pode ser definida pelo usuário nessa interface de usuário usando um componente referido na figura como uma mistura personalizada.
[0053] A Figura 8E é uma captura de tela que ilustra uma lista definida pelo usuário de todas as câmeras que devem ser expostas à câmera acionada por estado (por exemplo, definindo quais câmeras são vistas pela câmera acionada por estado) com controles para a prioridade. Isso é referido na figura como filhos da câmera virtual. Isso permite que o usuário controle a prioridade de cada câmera e forneça melhor clareza.
[0054] A Figura 8F é uma captura de tela que ilustra os controles da prioridade geral de um único sistema de câmera acionada por estado. Em algumas modalidades, pode haver
Petição 870190132090, de 12/12/2019, pág. 36/84
30/53 muitos sistemas acionados por câmeras de estado trabalhando no mesmo jogo, cada um com uma prioridade em relação aos outros e com suas câmeras filhas tendo suas próprias prioridades em cada sistema de câmeras acionado por estado.
[0055] A Figura 9 é um diagrama de um exemplo de tela montado na cabeça (HMD) 1202, usado por um usuário (ou wearer) 1200. Na modalidade de exemplo, o usuário 1.200 (por exemplo, um desenvolvedor ou jogador de jogos) experimenta um ambiente de VR ou conteúdo de realidade aumentada (AR) (por exemplo, um ambiente de realidade mista) enquanto usa o HMD 1202. Na modalidade de exemplo, o dispositivo HMD 1202 pode incluir um visor opaco 1208 que pode obscurecer a visão do usuário 1200 do mundo real e que pode exibir um ambiente virtual completo para o usuário 1200. Em outras modalidades, o dispositivo HMD 1202 inclui um visor transparente ou semi-transparente (ou lente ou lentes) 108 através do qual o usuário 1200 visualiza seu entorno (também aqui referido também como o mundo real)Deve ser entendido que o visor 1208 é ilustrado na Figura 9 como transparente para fins de ilustração, mas, como descrito acima, o visor 1208 pode ser opaco em algumas modalidades.
[0056] Na modalidade de exemplo, o HMD 1202 também inclui um dispositivo de exibição 1218 que renderiza gráficos (por exemplo, objetos virtuais) no visor 1208. Como tal, o visor 1208 atua como uma tela ou superfície na qual a saída do dispositivo de exibição 1218 aparece e através da qual o usuário 1200 experimenta conteúdo virtual. Em algumas modalidades, o HMD 1202 pode apresentar duas projeções diferentes através do visor (por exemplo, uma para cada olho). O dispositivo de exibição 1218 é acionado ou
Petição 870190132090, de 12/12/2019, pág. 37/84
31/53 controlado por uma ou mais GPUs 1206 ou unidades de projeção holográfica (HPUs). A GPU 1206 processa aspectos da saída gráfica que ajuda a acelerar a renderização da saída através do dispositivo de exibição 1218.
[0057] Na modalidade de exemplo, o dispositivo HMD 1202 também inclui uma ou mais unidades de processamento central (CPUs) 1205 que podem executar algumas das operações e métodos aqui descritos. O dispositivo HMD 1202 também inclui um dispositivo de áudio 1212 (por exemplo, alto-falantes, não representados separadamente) que está configurado para apresentar saída de áudio para o usuário 1200 (por exemplo, através das orelhas 1216 do usuário 1200). Embora não seja mostrado separadamente, o dispositivo HMD 1202 também inclui adaptadores de rede com ou sem fio (por exemplo, Wi-Fi, Bluetooth, celular) que facilitam a comunicação entre o HMD e outros dispositivos de computação aqui descritos.
[0058] Em algumas modalidades, o dispositivo HMD 1202 inclui um dispositivo de câmera digital 1210. O dispositivo de câmera digital (ou apenas câmera) 1210 é um dispositivo de entrada de vídeo voltado para a frente que é orientado de modo a capturar pelo menos uma parte de um campo de visão (FOV) do usuário 1200. Em outras palavras, a câmera 1210 captura ou vê um ângulo de visão do mundo real com base na orientação do dispositivo HMD 1202 (por exemplo, semelhante ao que o usuário 1200 vê no FOV do usuário 1200 quando olha pelo visor 1208). Os dispositivos de câmera 1210 podem ser configurados para capturar vídeo digital do mundo real em torno do usuário 1200 (por exemplo, um campo de visão, uma visão periférica ou uma visão de 360° em torno do usuário 1200). Os dispositivos de câmera 1210 podem ser usados para
Petição 870190132090, de 12/12/2019, pág. 38/84
32/53 capturar vídeo digital do ambiente do mundo real ao redor do usuário 1200. Em algumas modalidades, a saída do dispositivo de câmera digital 1210 pode ser projetada no visor 1208 (por exemplo, em modalidades opacas do visor) e também pode incluir conteúdo virtual adicional (por exemplo, adicionado à saída da câmera). Em algumas modalidades, a câmera 1210 pode ser uma câmera de profundidade, ou o dispositivo HMD 1202 pode incluir um sensor de profundidade, capturando informações de profundidade para objetos dentro do FOV do usuário 1200 .
[0059] Em algumas modalidades, o dispositivo HMD 1202 pode incluir um ou mais sensores (não mostrados separadamente) ou pode ser acoplado em comunicação com ou sem fio com os sensores (por exemplo, via comunicação por campo de proximidade (NFC) com um dispositivo vestível por pulso também usado pelo usuário 1200) . Por exemplo, o HMD 1202 pode incluir sensores de movimento ou posição configurados para determinar uma posição ou orientação do HMD 1202 ou posição de objetos do mundo real próximos. Em algumas modalidades, o dispositivo HMD 1202 pode incluir um microfone para capturar entrada de áudio (por exemplo, vocais falados do usuário 1200) .
[0060] Em algumas modalidades, o HMD 1202 pode ser semelhante aos HMDs de realidade virtual, como o Oculus Rift™, o HTC Vive™, o Playstation VR™ e similares. Em algumas modalidades, o HMD 102 pode ser semelhante aos HMDs de realidade aumentada, como Google Glass®, Microsoft HoloLens®, Magic Leap™ HMD, Meta™ HMD e assim por diante. Em algumas modalidades, o HMD 1202 também pode incluir um ou mais sensores (não mostrados), como um receptor de sistema
Petição 870190132090, de 12/12/2019, pág. 39/84
33/53 de posicionamento global (GPS) (por exemplo, para determinar uma localização GPS do dispositivo de usuário 1202), sensores biométricos (por exemplo, para captura de dados biométricos do usuário 1200), sensores de movimento ou posição (por exemplo, para capturar dados de posição do usuário 1200 ou outros objetos), uma câmera de profundidade (por exemplo, usando LIDAR) ou um microfone de áudio (por exemplo, para capturar dados de som)Alguns sensores podem ser externos ao HMD 1202 e podem ser configurados para comunicação sem fio com o HMD 1202 (por exemplo, como usado no Microsoft Kinect®, Vive Tracker™, sensor Lidar do MIT ou detector de emoções sem fio do MIT).
[0061] Em algumas modalidades, o usuário 1200 pode conter um ou mais dispositivos de rastreamento manual (dispositivos de mão) (não mostrados separadamente na Figura 9) (por exemplo, um em cada mão). Os dispositivos de mão fornecem informações sobre a posição e orientação absoluta ou relativa das mãos de um usuário e, como tal, são capazes de capturar informações sobre gestos com as mãos. Os dispositivos portáteis podem ser configurados para operar diretamente com o HMD 1202 (por exemplo, via comunicação com ou sem fio). Em algumas modalidades, os dispositivos portáteis podem ser controladores manuais Oculus Touch™, rastreadores manuais HTC Vive™ ou controladores manuais Playstation VR™. Os dispositivos de mão também podem incluir um ou mais botões ou joysticks embutidos no dispositivo de mão. Em outras modalidades, o usuário 1200 pode usar um ou mais dispositivos de rastreamento de mãos vestiveis (por exemplo, luvas de rastreamento de movimento, não mostradas), como aqueles disponibilizados comercialmente pela Manus VR
Petição 870190132090, de 12/12/2019, pág. 40/84
34/53 (Holanda). Em ainda outras modalidades, o movimento das mãos do usuário 1200 pode ser rastreado sem, ou além dos, dispositivos de mão ou dispositivos de rastreamento de mãos vestíveis por meio de um sensor de posição das mãos (não mostrado, por exemplo, usando métodos ópticos para rastrear a posição e orientação das mãos do usuário), como, por exemplo, as disponibilizadas comercialmente pela Leap Motion, Inc. (uma empresa da Califórnia). Esses dispositivos de rastreamento de mãos (por exemplo, dispositivos portáteis) acompanham a posição de uma ou mais mãos do usuário durante a operação.
[0062] Durante a operação, na modalidade de exemplo, o HMD 1202 é montado na cabeça 1204 do usuário e sobre os dois olhos 1214 do usuário 1200, como mostrado na Figura 9. O usuário 1200 pode ser apresentado com um ambiente virtual ou um ambiente de realidade mista que pode ser experimentado através do HMD 1202 e dispositivos portáteis, conforme descrito aqui. Além disso, os sistemas aqui descritos (não mostrados separadamente na Figura 9) podem ser utilizados em conjunto com o HMD 1202, como aqui descrito. Por exemplo, o módulo de composição e o módulo colisor podem ser usados para controlar uma ou mais câmeras virtuais em um segundo ambiente virtual, em que a saída de uma ou mais câmeras virtuais é exibida para o usuário 1200 através de uma tela virtual dentro do ambiente virtual ou ambiente de realidade mista experimentado através do HMD 1202. A tela virtual pode estar flutuando no ambiente (por exemplo, fixa em relação ao movimento do usuário 1200) ou fixada a um objeto no ambiente virtual ou ambiente de realidade mista. Por exemplo, em um ambiente de realidade mista, a tela virtual pode ser uma
Petição 870190132090, de 12/12/2019, pág. 41/84
35/53 projeção virtual de realidade aumentada em uma parede do mundo real. Em um ambiente de realidade virtual, a tela virtual pode ser uma projeção virtual em uma parede virtual. 0 segundo ambiente virtual pode incluir qualquer ambiente virtual 3D em que uma câmera virtual possa operar (por exemplo, controlada por um módulo colisor e módulo de composição), incluindo um ambiente de videogame (ao vivo ou gravado), um ambiente de simulação 3D e um ambiente de filme em 3D. Assim, o usuário 1200 pode experimentar um ambiente de realidade mista sentado em um sofá em uma sala enquanto assiste a uma tela virtual projetada em uma parede perto do sofá e em que a tela virtual exibe um ambiente de videogame ao vivo (por exemplo, de um vídeo game on-line ao vivo para vários jogadores), em que a visão do ambiente de videogame ao vivo é vista através de uma ou mais câmeras virtuais no ambiente de videogame, controladas por um módulo colisor e módulo de composição.
[0063] Certas modalidades são descritas neste documento como incluindo lógica ou vários componentes, módulos ou mecanismos. Os módulos podem constituir módulos de software (por exemplo, código incorporado em um meio de armazenamento legível por máquina ou em um sinal de transmissão) ou módulos de hardware. Um módulo de hardware é uma unidade tangível capaz de executar determinadas operações e pode ser configurada ou organizada de uma certa maneira física. Em várias modalidades de exemplo, um ou mais sistemas de computador (por exemplo, um sistema de computador independente, um sistema de computador cliente ou um sistema de computador servidor) ou um ou mais módulos de hardware de um sistema de computador (por exemplo, um processador ou um
Petição 870190132090, de 12/12/2019, pág. 42/84
36/53 grupo de processadores) pode ser configurado pelo software (por exemplo, um aplicativo ou parte do aplicativo) como um módulo de hardware que opera para executar determinadas operações, conforme descrito aqui.
[0064] Em algumas modalidades, um módulo de hardware pode ser implementado mecanicamente, eletronicamente ou com qualquer combinação adequada dos mesmos. Por exemplo, um módulo de hardware pode incluir circuitos ou lógica dedicados configurados permanentemente para executar determinadas operações. Por exemplo, um módulo de hardware pode ser um processador de finalidade especial, como uma matriz de portas programáveis em campo (FPGA) ou um circuito integrado especifico de aplicação (ASIC). Um módulo de hardware também pode incluir lógica ou circuitos programáveis configurados temporariamente pelo software para executar determinadas operações. Por exemplo, um módulo de hardware pode incluir software abrangido por um processador de uso geral ou outro processador programável. Será apreciado que a decisão de implementar um módulo de hardware mecanicamente, em circuitos dedicados e configurados permanentemente ou em circuitos configurados temporariamente (por exemplo, configurados por software) pode ser conduzida por considerações de custo e tempo.
[0065] Por conseguinte, a frase módulo de hardware deve ser entendida como abrangendo uma entidade tangível, seja aquela que é fisicamente construída, permanentemente configurada (por exemplo, com fio) ou temporariamente configurada (por exemplo, programada) para operar de uma certa maneira ou para executar certas operações descritas aqui. Conforme usado aqui, módulo implementado por
Petição 870190132090, de 12/12/2019, pág. 43/84
37/53 hardware refere-se a um módulo de hardware. Considerando modalidades nas quais os módulos de hardware estão configurados temporariamente (por exemplo, programados), cada um dos módulos de hardware não precisa ser configurado ou instanciado em nenhuma instância no tempo. Por exemplo, onde um módulo de hardware compreende um processador de uso geral configurado pelo software para se tornar um processador de uso especial, o processador de uso geral pode ser configurado como respectivamente processadores de uso especial diferentes (por exemplo, compreendendo módulos de hardware diferentes) em momentos diferentes. 0 software pode, portanto, configurar um processador ou processadores específicos, por exemplo, para constituir um módulo de hardware específico em uma instância de tempo e para constituir um módulo de hardware diferente em uma instância de tempo diferente.
[0066] Os módulos de hardware podem fornecer informações e receber informações de outros módulos de hardware. Por conseguinte, os módulos de hardware descritos podem ser considerados como acoplados comunicativamente. Onde vários módulos de hardware existem contemporaneamente, as comunicações podem ser alcançadas através da transmissão de sinal (por exemplo, através de circuitos e barramentos apropriados) entre ou entre dois ou mais dos módulos de hardware. Nas modalidades em que vários módulos de hardware são configurados ou instanciados em momentos diferentes, as comunicações entre esses módulos de hardware podem ser alcançadas, por exemplo, através do armazenamento e recuperação de informações em estruturas de memória às quais os vários módulos de hardware têm acesso. Por exemplo, um
Petição 870190132090, de 12/12/2019, pág. 44/84
38/53 módulo de hardware pode executar uma operação e armazenar a saída dessa operação em um dispositivo de memória ao qual está acoplado comunicativamente. Um módulo de hardware adicional pode, posteriormente, acessar o dispositivo de memória para recuperar e processar a saída armazenada. Os módulos de hardware também podem iniciar a comunicação com dispositivos de entrada ou saída e podem operar com um recurso (por exemplo, uma coleção de informações).
[0067] As várias operações dos métodos de exemplo aqui descritos podem ser executadas, pelo menos parcialmente, por um ou mais processadores que estão configurados temporariamente (por exemplo, por software) ou permanentemente configurados para executar as operações relevantes. Sejam configurados temporária ou permanentemente, esses processadores podem constituir módulos implementados por processador que operam para executar uma ou mais operações ou funções aqui descritas. Conforme usado aqui, módulo implementado por processador refere-se a um módulo de hardware implementado usando um ou mais processadores.
[0068] Da mesma forma, os métodos aqui descritos podem ser pelo menos parcialmente implementados pelo processador, com um ou mais processadores sendo um exemplo de hardware. Por exemplo, pelo menos algumas das operações de um método podem ser executadas por um ou mais processadores ou módulos implementados por processador. Além disso, os um ou mais processadores também podem operar para suportar o desempenho das operações relevantes em um ambiente de computação em nuvem ou como um software como serviço (SaaS) . Por exemplo, pelo menos algumas das operações podem ser
Petição 870190132090, de 12/12/2019, pág. 45/84
39/53 executadas por um grupo de computadores (como exemplos de máquinas, incluindo processadores), sendo essas operações acessíveis por uma rede (por exemplo, a Internet) e por uma ou mais interfaces apropriadas (por exemplo, uma interface de programa de aplicativo (API)).
[0069] O desempenho de algumas operações pode ser distribuído entre os processadores, não apenas residindo em uma única máquina, mas implantado em várias máquinas. Em algumas modalidades de exemplo, os processadores ou módulos implementados por processador podem estar localizados em um único local geográfico (por exemplo, dentro de um ambiente doméstico, um ambiente de escritório ou uma fazenda de servidores). Em outras modalidades de exemplo, os processadores ou módulos implementados por processador podem ser distribuídos por vários locais geográficos.
[0070] A Figura 10 é um diagrama de blocos 800 que ilustra uma arquitetura de software de exemplo 802, que pode ser usada em conjunto com várias arquiteturas de hardware aqui descritas. A Figura 8 é um exemplo não limitativo de uma arquitetura de software e será apreciado que muitas outras arquiteturas podem ser implementadas para facilitar a funcionalidade aqui descrita. A arquitetura de software 802 pode ser executada em hardware como uma máquina 900 da Figura 11 que inclui, entre outras coisas, processadores 910, memória 930 e componentes de entrada/saída (I/O) 950. Uma camada de hardware representativa 804 é ilustrada e pode representar, por exemplo, a máquina 900 da Figura 11. A camada de hardware representativa 804 inclui uma unidade de processamento 806 com instruções executáveis associadas 808. As instruções executáveis 808 representam as
Petição 870190132090, de 12/12/2019, pág. 46/84
40/53 instruções executáveis da arquitetura de software 802, incluindo a implementação dos métodos, módulos e assim por diante aqui descritos. A camada de hardware 804 também inclui memória/armazenamento 810, que também inclui as instruções executáveis 808. A camada de hardware 804 também pode compreender outro hardware 812.
[0071] Na arquitetura de exemplo da Figura 8, a arquitetura de software 802 pode ser conceituada como uma pilha de camadas em que cada camada fornece funcionalidade especifica. Por exemplo, a arquitetura de software 802 pode incluir camadas como um sistema operacional 814, bibliotecas 816, estruturas ou middleware 818, aplicativos 820 e uma camada de apresentação 844. Operacionalmente, os aplicativos 820 e/ou outros componentes dentro das camadas podem chamar chamadas de interface de programação de aplicativos (API) 824 através da pilha de software e receber uma resposta como mensagens 826. As camadas ilustradas são de natureza representativa e nem todas as arquiteturas de software possuem todas as camadas. Por exemplo, alguns sistemas operacionais móveis ou para fins especiais podem não fornecer as estruturas/middleware 818, enquanto outros podem fornecer essa camada. Outras arquiteturas de software podem incluir camadas adicionais ou diferentes.
[0072] O sistema operacional 814 pode gerenciar recursos de hardware e fornecer serviços comuns. O sistema operacional 814 pode incluir, por exemplo, um kernel 828, serviços 830 e drivers 832. O kernel 828 pode atuar como uma camada de abstração entre o hardware e as outras camadas de software. Por exemplo, o kernel 828 pode ser responsável pelo gerenciamento de memória, gerenciamento de processador (por
Petição 870190132090, de 12/12/2019, pág. 47/84
41/53 exemplo, agendamento), gerenciamento de componentes, rede, configurações de segurança e assim por diante. Os serviços 830 podem fornecer outros serviços comuns para as outras camadas de software. Os drivers 832 podem ser responsáveis por controlar ou fazer interface com o hardware subjacente. Por exemplo, os drivers 832 podem incluir drivers de vídeo, drivers de câmera, drivers Bluetooth®, drivers de memória flash, drivers de comunicação serial (por exemplo, drivers Universal Serial Bus (USB)), drivers Wi-Fi®, drivers de áudio, drivers de gerenciamento de energia, e assim por diante, dependendo da configuração do hardware.
[0073] As bibliotecas 816 podem fornecer uma infraestrutura comum que pode ser usada pelos aplicativos 820 e/ou outros componentes e/ou camadas. As bibliotecas 816 normalmente fornecem funcionalidade que permite que outros módulos de software executem tarefas de uma maneira mais fácil do que a interface direta com a funcionalidade subjacente do sistema operacional 814 (por exemplo, kernel 828, serviços 830 e/ou drivers 832). As bibliotecas 816 podem incluir bibliotecas do sistema 834 (por exemplo, biblioteca padrão C) que podem fornecer funções como funções de alocação de memória, funções de manipulação de cadeias, funções matemáticas e similares. Além disso, as bibliotecas 816 podem incluir bibliotecas de API 836, como bibliotecas de mídia (por exemplo, bibliotecas para suportar a apresentação e manipulação de vários formatos de mídia, como MPEG4, H.264, MP3, AAC, AMR, JPG, PNG) , bibliotecas de gráficos (por exemplo, uma estrutura OpenGL que pode ser usada para renderizar conteúdo gráfico 2D e 3D em um monitor), bibliotecas de bancos de dados (por exemplo, SQLite que podem
Petição 870190132090, de 12/12/2019, pág. 48/84
42/53 fornecer várias funções de banco de dados relacionais), bibliotecas da Web (por exemplo, WebKit que podem fornecer funcionalidade de navegação na Web), e similar. As bibliotecas 816 também podem incluir uma grande variedade de outras bibliotecas 838 para fornecer muitas outras APIs para os aplicativos 820 e outros componentes/módulos de software.
[0074] As estruturas 818 (também conhecidas como middleware) fornecem uma infraestrutura comum de nível superior que pode ser usada pelos aplicativos 820 e/ou outros componentes/módulos de software. Por exemplo, as estruturas/middleware 818 podem fornecer várias funções da interface gráfica do usuário (GUI), gerenciamento de recursos de alto nível, serviços de localização de alto nível e assim por diante. As estruturas/middleware 818 podem fornecer um amplo espectro de outras APIs que podem ser utilizadas pelos aplicativos 820 e/ou outros componentes/módulos de software, alguns dos quais podem ser específicos para um sistema operacional ou plataforma específica.
[0075] Os aplicativos 820 incluem aplicativos embutidos 840 e/ou aplicativos de terceiros 842. Exemplos de aplicativos internos representativos 840 podem incluir, entre outros, um aplicativo de contatos, um aplicativo de navegador, um aplicativo de leitura de livros, um aplicativo de localização, um aplicativo de mídia, um aplicativo de mensagens e/ou um aplicativo de jogo. Aplicativos de terceiros 842 podem incluir qualquer aplicativo desenvolvido usando o SDK (kit de desenvolvimento de software) Android™ ou iOS™ por uma entidade que não seja o fornecedor da plataforma específica e pode ser um software móvel em
Petição 870190132090, de 12/12/2019, pág. 49/84
43/53 execução em um sistema operacional móvel como o iOS™, Android™, Windows® Phone ou outros sistemas operacionais móveis. Os aplicativos de terceiros 842 podem chamar as chamadas de API 824 fornecidas pelo sistema operacional móvel, como o sistema operacional 814, para facilitar a funcionalidade aqui descrita.
[0076] Os aplicativos 820 podem usar funções integradas do sistema operacional (por exemplo, kernel 828, serviços 830 e/ou drivers 832), bibliotecas 816 ou estruturas/middleware 818 para criar interfaces de usuário para interagir com os usuários do sistema. Alternativamente, ou adicionalmente, em alguns sistemas, as interações com um usuário podem ocorrer através de uma camada de apresentação, como a camada de apresentação 844. Nesses sistemas, a lógica do aplicativo/módulo pode ser separada dos aspectos do aplicativo/módulo que interagem com um usuário.
[0077] Algumas arquiteturas de software usam máquinas virtuais. No exemplo da Figura 8, isso é ilustrado por uma máquina virtual 848. A máquina virtual 848 cria um ambiente de software no qual aplicativos/módulos podem ser executados como se estivessem executando em uma máquina de hardware (como a máquina 900 da Figura 11, por exemplo) . A máquina virtual 848 é hospedada por um sistema operacional host (por exemplo, sistema operacional 814) e normalmente, embora nem sempre, tenha um monitor de máquina virtual 846, que gerencia a operação da máquina virtual 848 e a interface com o sistema operacional host (ou seja, sistema operacional 814) . Uma arquitetura de software é executada dentro da máquina virtual 848, como um sistema operacional (OS) 850, bibliotecas 852, estruturas 854, aplicativos 856 e/ou uma camada de
Petição 870190132090, de 12/12/2019, pág. 50/84
44/53 apresentação 858. Essas camadas da arquitetura de software em execução na máquina virtual 848 podem ser iguais às camadas correspondentes descritas anteriormente ou podem ser diferentes.
[0078] A Figura 11 é um diagrama de blocos que ilustra os componentes de uma máquina 900, de acordo com algumas modalidades de exemplo, configuradas para ler instruções de um meio legível por máquina (por exemplo, um meio de armazenamento legível por máquina) e executar qualquer uma ou mais das metodologias discutidas aqui. Em algumas modalidades, a máquina 110 é semelhante ao HMD 102. Especificamente, a Figura 11 mostra uma representação diagramática da máquina 900 na forma de exemplo de um sistema de computador, dentro do qual as instruções 916 (por exemplo, software, um programa, um aplicativo, um applet, um aplicativo ou outro código executável) fazem a máquina 900 executar qualquer uma ou mais das metodologias discutidas aqui pode ser executada. Como tal, as instruções 916 podem ser usadas para implementar módulos ou componentes descritos neste documento. As instruções transformam a máquina geral não programada em uma máquina específica programada para executar as funções descritas e ilustradas da maneira descrita. Em modalidades alternativas, a máquina 900 opera como um dispositivo independente ou pode ser acoplado (por exemplo, em rede) a outras máquinas. Em uma implantação em rede, a máquina 900 pode operar na capacidade de uma máquina servidor ou de uma máquina cliente em um ambiente de rede servidor-cliente ou como uma máquina ponto a ponto em um ambiente de rede ponto a ponto (ou distribuído) . A máquina 900 pode compreender, entre outros, um computador servidor,
Petição 870190132090, de 12/12/2019, pág. 51/84
45/53 um computador cliente, um computador pessoal (PC), um tablet, um laptop, um netbook, um decodificador (STB), um equipamento digital pessoal assistente (PDA), um sistema de mídia de entretenimento, um telefone celular, um telefone inteligente, um dispositivo móvel, um dispositivo vestível (por exemplo, um relógio inteligente), um dispositivo doméstico inteligente (por exemplo, um dispositivo inteligente), outros dispositivos inteligentes, um dispositivo da web, um roteador de rede, um comutador de rede, uma ponte de rede ou qualquer máquina capaz de executar as instruções 916, sequencialmente ou de outra forma, que especificam ações a serem executadas pela máquina 900. Além disso, embora apenas uma única máquina 900 seja ilustrada, o termo máquina também deve ser considerado para incluir uma coleção de máquinas que executam as instruções 916 individualmente ou em conjunto para executar qualquer uma ou mais das metodologias discutidas aqui.
[0079] A máquina 900 pode incluir os processadores 910, memória 930 e componentes de entrada/saída (I/O) 950, que podem ser configurados para se comunicarem entre si, como através de um barramento 902. Em uma modalidade exemplar, os processadores 910 (por exemplo, uma unidade de processamento central (CPU), um processador de Cálculo de Conjunto de Instruções Reduzidas (RISC), um processador de Cálculo de Conjunto de Instruções Complexas (CISC), uma Unidade de Processamento Gráfico (GPU), um Processador de Sinal Digital (DSP), um Circuito Integrado Específico de Aplicação (ASIC), um Circuito Integrado de Radiofrequência (RFIC), outro processador ou qualquer combinação adequada dos mesmos) podem incluir, por exemplo, um processador 912 e um
Petição 870190132090, de 12/12/2019, pág. 52/84
46/53 processador 914 que podem executar o instruções 916. 0 termo processador destina-se a incluir um processador com vários núcleos que pode compreender dois ou mais processadores independentes (às vezes chamados de núcleos) que podem executar instruções simultaneamente. Embora a Figura 11 mostre vários processadores, a máquina 900 pode incluir um único processador com um único núcleo, um único processador com múltiplos núcleos (por exemplo, um processador com múltiplos núcleos), múltiplos processadores com um único núcleo, múltiplos processadores com múltiplos núcleos ou qualquer combinação dos mesmos.
[0080] A memória/armazenamento 930 pode incluir uma memória, como uma memória principal 932, uma memória estática 934 ou outra memória e uma unidade de armazenamento 936, ambas acessíveis aos processadores 910, como através do barramento 902. A unidade de armazenamento 936 e a memória 932, 934 armazenam as instruções 916 que incorporam qualquer uma ou mais das metodologias ou funções aqui descritas. As instruções 916 também podem residir, total ou parcialmente, na memória 932, 934, na unidade de armazenamento 936, em pelo menos um dos processadores 910 (por exemplo, na memória cache do processador) ou em qualquer combinação adequada dos mesmos, durante a execução pela máquina 900. Por conseguinte, a memória 932, 934, a unidade de armazenamento 93 6 e a memória dos processadores 910 são exemplos de mídia legível por máquina 938.
[0081] Conforme usado neste documento, meio de armazenamento legível por máquina significa um dispositivo capaz de armazenar instruções e dados temporariamente ou permanentemente e pode incluir, entre outros, memória de
Petição 870190132090, de 12/12/2019, pág. 53/84
47/53 acesso aleatório (RAM), memória somente leitura (ROM), memória buffer, memória flash, mídia óptica, mídia magnética, memória cache, outros tipos de armazenamento (por exemplo, EEPROM) e/ou qualquer combinação adequada. 0 termo meio de armazenamento legível por máquina deve ser utilizado para incluir um único meio ou vários meios (por exemplo, um banco de dados centralizado ou distribuído ou caches e servidores associados) capazes de armazenar as instruções 916. 0 termo meio de armazenamento legível por máquina também deve ser considerado para incluir qualquer meio, ou combinação de vários meios, capaz de armazenar instruções (por exemplo, instruções 916) para execução por uma máquina (por exemplo, máquina 900), de modo que as instruções, quando executadas por um ou mais processadores da máquina 900 (por exemplo, processadores 910), fazem com que a máquina 900 execute uma ou mais das metodologias descritas aqui. Por conseguinte, um meio de armazenamento legível por máquina refere-se a um único aparelho ou dispositivo de armazenamento, bem como sistemas ou redes de armazenamento baseados em nuvem que incluem vários aparelhos ou dispositivos de armazenamento. O termo meio legível por máquina inclui um meio legível por máquina e um meio de transmissão, por exemplo, um sinal.
[0082] Os componentes de entrada/saída (I/O) 950 podem incluir uma grande variedade de componentes para receber entrada, fornecer saída, produzir saída, transmitir informações, transmitir informações, trocar informações, capturar medições e assim por diante. Os componentes específicos de entrada/saída (I/O) 950 que estão incluídos em uma máquina específica dependerão do tipo de máquina. Por
Petição 870190132090, de 12/12/2019, pág. 54/84
48/53 exemplo, máquinas portáteis, como telefones celulares, provavelmente incluirão um dispositivo de entrada por toque ou outros mecanismos de entrada, enquanto uma máquina servidor sem cabeçalho provavelmente não incluirá um dispositivo de entrada por toque. Será apreciado que os componentes de entrada/saída (I/O) 950 podem incluir muitos outros componentes que não são mostrados na Figura 11. Os componentes de entrada/saída (I/O) 950 são agrupados de acordo com a funcionalidade apenas para simplificar a discussão a seguir e o agrupamento não é de forma alguma limitativo. Em várias modalidades de exemplo, os componentes de entrada/saída (I/O) 950 podem incluir componentes de saída 952 e componentes de entrada 954. Os componentes de saída 952 podem incluir componentes visuais (por exemplo, uma tela como um painel de exibição de plasma (PDP), uma tela de diodo emissor de luz (LED), uma tela de cristal líquido (LCD), um projetor ou um tubo de raios catódicos (CRT))), componentes acústicos (por exemplo, alto-falantes), componentes hápticos (por exemplo, um motor vibratório, mecanismos de resistência), outros geradores de sinal e assim por diante. Os componentes de entrada 954 podem incluir componentes de entrada alfanuméricos (por exemplo, um teclado, uma tela de toque configurada para receber entrada alfanumérica, um teclado foto-óptico ou outros componentes de entrada alfanuméricos), componentes de entrada baseados em pontos (por exemplo, um mouse, um touchpad, um trackball, um joystick, um sensor de movimento ou outro instrumento apontador), componentes de entrada táteis (por exemplo, um botão físico, uma tela de toque que fornece localização e/ou força de toques ou gestos de toque ou outros componentes de
Petição 870190132090, de 12/12/2019, pág. 55/84
49/53 entrada táteis), áudio componentes de entrada (por exemplo, um microfone) e similares.
[0083] Em outras modalidades de exemplo, os componentes de entrada/saída (I/O) 950 podem incluir componentes biométricos 956, componentes de movimento 958, componentes ambientais 960 ou componentes de posição 962, entre uma ampla variedade de outros componentes. Por exemplo, os componentes biométricos 956 podem incluir componentes para detectar expressões (por exemplo, expressões das mãos, expressões faciais, expressões vocais, gestos corporais ou rastreamento ocular), medir biosinais (por exemplo, pressão arterial, frequência cardíaca, temperatura corporal, transpiração ou ondas cerebrais), identificar uma pessoa (por exemplo, identificação de voz, identificação da retina, identificação facial, identificação de impressões digitais ou identificação baseada em eletroencefalograma) e similares. Os componentes de movimento 958 podem incluir componentes do sensor de aceleração (por exemplo, acelerômetro), componentes do sensor de gravitação, componentes do sensor de rotação (por exemplo, giroscópio) e assim por diante. Os componentes ambientais 960 podem incluir, por exemplo, componentes de sensores de iluminação (por exemplo, fotômetro), componentes de sensores de temperatura (por exemplo, um ou mais termômetros que detectam a temperatura ambiente), componentes de sensores de umidade, componentes de sensores de pressão (por exemplo, barômetro), sensor acústico componentes (por exemplo, um ou mais microfones que detectam ruído de fundo), componentes de sensores de proximidade (por exemplo, sensores infravermelhos que detectam objetos próximos), sensores de gás (por exemplo,
Petição 870190132090, de 12/12/2019, pág. 56/84
50/53 sensores de detecção de gás para detectar concentrações de gases perigosos por segurança ou medir poluentes na atmosfera) ou outros componentes que possam fornecer indicações, medições ou sinais correspondentes a um ambiente físico circundante. Os componentes de posição 962 podem incluir componentes do sensor de localização (por exemplo, um componente receptor do Sistema de Posição Global (GPS)), componentes do sensor de altitude (por exemplo, altímetros ou barômetros que detectam a pressão do ar a partir da qual a altitude pode ser derivada), componentes do sensor de orientação (por exemplo, magnetômetros) e similares.
[0084] A comunicação pode ser implementada usando uma ampla variedade de tecnologias. Os componentes de entrada/saída (I/O) 950 podem incluir componentes de comunicação 964 operáveis para acoplar a máquina 900 a uma rede 980 ou dispositivos 970 através de um acoplamento 982 e um acoplamento 972, respectivamente. Por exemplo, os componentes de comunicação 964 podem incluir um componente de interface de rede ou outro dispositivo adequado para interagir com a rede 980. Em outros exemplos, os componentes de comunicação 964 podem incluir componentes de comunicação com fio, componentes de comunicação sem fio, componentes de comunicação celular, componentes de Comunicação por Campo de Proximidade (NFC), componentes Bluetooth® (por exemplo, Bluetooth® Low Energy), componentes Wi-Fi® e outros componentes de comunicação para fornecer comunicação através de outras modalidades. Os dispositivos 970 podem ser outra máquina ou qualquer um de uma ampla variedade de dispositivos periféricos (por exemplo, um dispositivo periférico acoplado via um Barramento Serial Universal (USB)).
Petição 870190132090, de 12/12/2019, pág. 57/84
51/53 [0085] Além disso, os componentes de comunicação 964 podem detectar identificadores ou incluir componentes operáveis para detectar identificadores. Por exemplo, os componentes de comunicação 964 podem incluir componentes do leitor de etiquetas de identificação por radiofrequência (RFID), componentes de detecção de etiquetas inteligentes NFC, componentes do leitor óptico (por exemplo, um sensor óptico para detectar códigos de barras unidimensionais, como código de barra de Código de Produto Universal (UPC), códigos de barras multidimensionais, como código de Resposta Rápida (QR) , código Asteca, Matriz de Dados, Dataglyph, Maxicode, PDF417, Código Ultra, código de barras UCC RSS-2D e outros códigos ópticos) ou componentes de detecção acústica (por exemplo, microfones para identificar sinais de áudio marcados). Além disso, uma variedade de informações pode ser derivada através dos componentes de comunicação 962, como localização via localização geográfica de Protocolo de Internet (IP), localização via triangulação de sinal Wi-Fi®, localização via detecção de um sinal de beacon NFC que pode indicar um local específico e assim por diante.
[0086] Em todo este Relatório Descritivo, instâncias plurais podem implementar componentes, operações ou estruturas descritas como uma única instância. Embora operações individuais de um ou mais métodos sejam ilustradas e descritas como operações separadas, uma ou mais operações individuais podem ser executadas simultaneamente e nada exige que as operações sejam executadas na ordem ilustrada. Estruturas e funcionalidades apresentadas como componentes separados em configurações de exemplo podem ser implementadas como uma estrutura ou componente
Petição 870190132090, de 12/12/2019, pág. 58/84
52/53 combinado. Da mesma forma, estruturas e funcionalidades apresentadas como um único componente podem ser implementadas como componentes separados. Essas e outras variações, modificações, adições e melhorias se enquadram no escopo do assunto aqui descrito.
[0087] As modalidades ilustradas neste documento são descritas em detalhes suficientes para permitir aos versados na técnica praticar os ensinamentos divulgados. Outras modalidades podem ser usadas e derivadas delas, de modo que substituições e alterações estruturais e lógicas possam ser feitas sem se afastar do escopo desta divulgação. A Descrição Detalhada, portanto, não deve ser captura em um sentido limitante, e o escopo de várias modalidades é definido apenas pelas reivindicações anexas, juntamente com toda a gama de equivalentes aos quais essas reivindicações têm direito.
[0088] Como usados aqui, o termo ou pode ser interpretado em um sentido inclusive ou exclusivo. Além disso, instâncias plurais podem ser fornecidas para recursos, operações ou estruturas descritas aqui como uma única instância. Além disso, os limites entre vários recursos, operações, módulos, mecanismos e repositórios de dados são um tanto arbitrários e operações especificas são ilustradas em um contexto de configurações ilustrativas especificas. Outras alocações de funcionalidade são previstas e podem cair dentro do escopo de várias modalidades da presente divulgação. Em geral, estruturas e funcionalidades apresentadas como recursos separados nas configurações de exemplo podem ser implementadas como uma estrutura ou recurso combinado. Da mesma forma, estruturas
Petição 870190132090, de 12/12/2019, pág. 59/84
53/53 e funcionalidades apresentadas como um único recurso podem ser implementadas como recursos separados. Essas e outras variações, modificações, adições e melhorias se enquadram no escopo das modalidades da presente divulgação, conforme representado pelas reivindicações anexas. 0 Relatório Descritivo e os Desenhos devem, portanto, ser considerados em um sentido ilustrativo e não restritivo.

Claims (10)

  1. REIVINDICAÇÕES
    1. Sistema, caracterizado pelo fato de que compreende:
    um ou mais processadores de computador;
    uma ou mais memórias de computador;
    um módulo de composição incorporado nas uma ou mais memórias de computador, o módulo de composição configurado para executar operações para alterar uma orientação de uma câmera virtual para manter uma parte de um objeto (subject) dentro de uma zona alvo em uma tela de câmera virtual, as operações compreendendo:
    associar um contorno suave com a zona alvo;
    associar um contorno rígido com a zona alvo; e com base na detecção de que a parte do objeto foi movida para um local entre o contorno suave e o contorno rígido, determinar um tempo de rastreamento para reorientar a câmera, a determinação do tempo de rastreamento com base na quantidade de um desvio do objeto a partir da zona alvo, e executar a alteração da orientação da câmera para trazer o objeto de volta à zona alvo durante o tempo de rastreamento.
  2. 2. Sistema, de acordo com a reivindicação 1, caracterizado pelo fato de que a detecção de que a parte do objeto se moveu para o local entre o contorno suave e o contorno rígido é realizada usando quaterniões, vetores de comprimento unitário, e cálculos de ponto flutuante de precisão única no espaço 2D em relação à câmera virtual.
  3. 3. Sistema, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que compreende ainda com base na detecção de que parte do objeto se moveu para um local que
    Petição 870190091348, de 13/09/2019, pág. 42/66
    2/10 está além do contorno rígido associado com a zona alvo, configurar a velocidade de rastreamento para zero, e
    realizar a alteração da orientação para trazer o objeto de volta para a borda do contorno rígido substancialmente imediatamente. 4. Sistema, de acordo com qualquer uma das
    reivindicações anteriores, caracterizado pelo fato de que compreende ainda um módulo colisor configurado para mover a câmera virtual para frente em um raio alvo associado com a câmera virtual para evitar um obstáculo que comprometa o raio alvo, o raio alvo se estendendo a partir da origem de câmera 3D através da zona alvo na tela de câmera para coordenadas 3D associadas à parte do objeto.
    5. Sistema, de acordo com a reivindicação 4, caracterizado pelo fato de que o módulo colisor é ainda configurado para mover a câmera virtual em uma direção
    vetorial inversa associada ao raio alvo para uma altura original associada à câmera virtual antes do obstáculo comprometer o raio alvo; em que c > movimento inclui a iteração sobre uma série de etapas , a série de etapas incluindo: lançar um raio negativo ao longo do eixo de câmera, em
    uma direção distante do alvo, até que o raio negativo encontre um plano horizontal definido pela altura original;
    com base no obstáculo ou em um segundo obstáculo sendo encontrado, projetar o raio negativo em um plano definido pelo obstáculo normal em um ponto em que o raio negativo atingiu o obstáculo ou o segundo obstáculo; e, definir uma nova direção de raio como uma projeção do raio negativo no plano definido pelo obstáculo normal do
    Petição 870190091348, de 13/09/2019, pág. 43/66
    3/10 obstáculo ou do segundo obstáculo; e, estender um novo raio na direção do novo raio, parando quando o plano horizontal é atingido ou um terceiro obstáculo é atingido ou uma borda de uma caixa delimitadora do terceiro obstáculo é atingida;
    com base no terceiro obstáculo atingido, repetir o movimento da câmera virtual; e
    com base na borda da caixa delimitadora atingida, redefinir o eixo de câmera como uma direção a partir do alvo para o local atual de câmera, e repetir o movimento da câmera virtual. 6. Sistema, de acordo com a reivindicação 4 ou 5,
    caracterizado pelo fato de que compreende ainda um módulo de composição adicional e um módulo colisor adicional incorporado à uma ou mais memórias de computador, o módulo de composição adicional e o módulo colisor adicional configurados para executar operações para alterar uma orientação e posição de uma câmera virtual adicional para manter a parte do objeto dentro de uma zona alvo associada à câmera virtual adicional, a câmera virtual e a câmera virtual adicional compreendendo uma meta câmera, a meta câmera configurada para selecionar a câmera virtual ou a câmera virtual adicional com base em uma pontuação de uma foto da parte do objeto capturada pela câmera virtual e em uma pontuação de uma foto da parte do objeto capturada pela câmera virtual adicional.
    7. Sistema, de acordo com a reivindicação 6, caracterizado pelo fato de que a pontuação da foto capturada pela câmera virtual ou a pontuação da foto capturada pela câmera virtual adicional é determinada pelo
    Petição 870190091348, de 13/09/2019, pág. 44/66
  4. 4/10 menos por uma atividade do módulo colisor, do módulo colisor adicional, do módulo de composição, ou do módulo de composição adicional; em que a atividade inclui:
    uma quantidade de deslocamento dada à câmera virtual e à câmera virtual adicional; e uma quantidade de rotação dada à câmera virtual e à câmera virtual adicional.
    8. Método, caracterizado pelo fato de que compreende:
    executar operações para alterar uma orientação de uma câmera virtual para manter uma parte de um objeto dentro de uma zona alvo em uma tela da câmera virtual, as operações compreendendo:
    associar um contorno suave com a zona alvo;
    associar um contorno rígido com a zona alvo; e com base na detecção de que a parte do objeto foi movida para um local entre o contorno suave e o contorno rígido, determinar um tempo de rastreamento para reorientar a câmera, a determinação do tempo de rastreamento com base na quantidade de um desvio do objeto a partir da zona alvo, e executar a alteração da orientação da câmera para trazer o objeto de volta à zona alvo durante o tempo de rastreamento.
    9. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que a detecção de que a parte do objeto se moveu para o local entre o contorno suave e o contorno rígido é realizada usando quaterniões, vetores de comprimento unitário, e cálculos de ponto flutuante de precisão única no espaço 2D em relação à câmera virtual.
    10. Método, de acordo com a reivindicação 8 ou 9,
    Petição 870190091348, de 13/09/2019, pág. 45/66
  5. 5/10 caracterizado pelo fato de que compreende ainda com base na detecção de que parte do objeto se moveu para um local que está além do contorno rígido associado com a zona alvo, configurar a velocidade de rastreamento para zero, e realizar a alteração do orientação para trazer o objeto de volta para a borda do contorno rígido substancialmente imediatamente.
    11. Método, de acordo com qualquer uma das reivindicações 8 a 10, caracterizado pelo fato de que compreende ainda um módulo colisor configurado para mover a câmera virtual para frente em um raio alvo associado com a câmera virtual para evitar um obstáculo que tenha comprometido o raio alvo, o raio alvo se estendendo a partir da origem de câmera 3D através da zona alvo na tela de câmera para coordenadas 3D associadas à parte do objeto.
    12. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que o módulo colisor é ainda configurado para mover a câmera virtual em uma direção vetorial inversa associada com o raio alvo para uma altura original associada com a câmera virtual antes do obstáculo
    comprometer o raio alvo; em que o movimento inclui a iteração sobre uma série de etapas, a série de etapas incluindo: lançar um raio negativo ao longo do eixo de câmera, em
    uma direção distante do alvo, até que o raio negativo encontre um plano horizontal definido pela altura original;
    com base no obstáculo ou em um segundo obstáculo sendo encontrado, projetar o raio negativo em um plano definido pelo obstáculo normal em um ponto onde o raio negativo atingiu o obstáculo ou o segundo obstáculo; e,
    Petição 870190091348, de 13/09/2019, pág. 46/66
  6. 6/10 definir uma nova direção de raio como uma projeção do raio negativo no plano definido pelo obstáculo normal do obstáculo ou do segundo obstáculo; e, estender um novo raio na direção do novo raio, parando quando o plano horizontal é atingido ou um terceiro obstáculo é atingido ou uma borda de uma caixa delimitadora do terceiro obstáculo é atingida;
    com base no terceiro obstáculo atingido, repetir o movimento da câmera virtual; e com base na borda da caixa delimitadora atingida, redefinir o eixo de câmera como uma direção a partir do alvo para o local atual de câmera, e repetir o movimento da câmera virtual.
    13. Método, de acordo com a reivindicação 11 ou 12, caracterizado pelo fato de que compreende ainda um módulo de composição adicional e um módulo colisor adicional incorporado à uma ou mais memórias de computador, o módulo de composição adicional e o módulo colisor adicional configurados para executar operações para alterar uma orientação e posição de uma câmera virtual adicional para manter a parte do objeto dentro de uma zona alvo associada à câmera virtual adicional, a câmera virtual e a câmera virtual adicional compreendendo uma meta câmera, a meta câmera configurada para selecionar a câmera virtual ou a câmera virtual adicional com base em uma pontuação de uma foto da parte do objeto capturada pela câmera virtual e em uma pontuação de uma foto da parte do objeto capturada pela câmera virtual adicional.
    14. Método, de acordo com a reivindicação 13, caracterizado pelo fato de que a pontuação da foto
    Petição 870190091348, de 13/09/2019, pág. 47/66
  7. 7/10 capturada pela câmera virtual ou a pontuação da foto capturada pela câmera virtual adicional é determinada pelo menos por uma atividade do módulo colisor, do módulo colisor adicional, do módulo de composição, ou do módulo de composição adicional; em que a atividade inclui:
    uma quantidade de deslocamento dada à câmera virtual e à câmera virtual adicional; e uma quantidade de rotação dada à câmera virtual e à câmera virtual adicional.
    15. Meio legível por máquina não transitório, caracterizado pelo fato de que armazena um conjunto de instruções que, quando executadas por um ou mais processadores, fazem com que um ou mais processadores executem operações para alterar a orientação de uma câmera virtual para manter uma parte de um objeto dentro de uma zona alvo em uma tela da câmera virtual, as operações compreendendo:
    associar um contorno suave com a zona alvo;
    associar um contorno rígido com a zona alvo; e com base na detecção de que a parte do objeto foi movida para um local entre o contorno suave e o contorno rígido, determinar um tempo de rastreamento para reorientar a câmera, a determinação do tempo de rastreamento com base na quantidade de um desvio do objeto a partir da zona alvo,
    e executar a alteração da orientação da câmera para trazer o objeto de volta à zona alvo durante o tempo de rastreamento. 16. Meio legível por máquina não transitório, de acordo com a reivindicação 15, caracterizado pelo fato de que a detecção de que a parte do objeto se moveu para o
    Petição 870190091348, de 13/09/2019, pág. 48/66
  8. 8/10 local entre o contorno suave e o contorno rígido é realizada usando quaterniões, vetores de comprimento unitário, e cálculos de ponto flutuante de precisão única no espaço 2D em relação à câmera virtual.
    17. Meio legível por máquina não transitório, de acordo com a reivindicação 15 ou 16, caracterizado pelo fato de que compreende ainda com base na detecção de que
    parte do objeto se moveu para um local que está além do contorno rígido associado com a zona alvo, configurar a velocidade de rastreamento para zero, e realizar a
    alteração da orientação para trazer o objeto de volta para a borda do contorno rígido substancialmente imediatamente.
    18. Meio legível por máquina não transitório, de acordo com qualquer uma das reivindicações 15 a 17, caracterizado pelo fato de que compreende ainda um módulo colisor configurado para mover a câmera virtual para frente em um raio alvo associado com a câmera virtual para evitar um obstáculo que tenha comprometido o raio alvo, o raio alvo se estendendo a partir da origem de câmera 3D através da zona alvo na tela de câmera para coordenadas 3D associadas à parte do objeto.
    19. Meio legível por máquina não transitório, de acordo com a reivindicação 18, caracterizado pelo fato de que o módulo colisor é ainda configurado para mover a câmera virtual em uma direção vetorial inversa associada com o raio alvo para uma altura original associada com a câmera virtual antes do obstáculo comprometer o raio alvo; em que o movimento inclui a iteração sobre uma série de etapas, a série de etapas incluindo:
    lançar um raio negativo ao longo do eixo de câmera, em
    Petição 870190091348, de 13/09/2019, pág. 49/66
  9. 9/10 uma direção distante do alvo, até que o raio negativo encontre um plano horizontal definido pela altura original;
    com base no obstáculo ou em um segundo obstáculo sendo encontrado, projetar o raio negativo em um plano definido pelo obstáculo normal em um ponto onde o raio negativo atingiu o obstáculo ou o segundo obstáculo; e, definir uma nova direção de raio como uma projeção do raio negativo no plano definido pelo obstáculo normal do obstáculo ou do segundo obstáculo; e, estender um novo raio na direção de novo raio, parando quando o plano horizontal é atingido ou um terceiro obstáculo é atingido ou uma borda de uma caixa delimitadora do terceiro obstáculo é atingida;
    com base no terceiro obstáculo atingido, repetir o movimento da câmera virtual; e com base na borda da caixa delimitadora atingida, redefinir o eixo de câmera como uma direção a partir do alvo para um local atual de câmera, e repetir o movimento da câmera virtual.
    20. Meio legível por máquina não transitório, de acordo com a reivindicação 18 ou 19, caracterizado pelo fato de que compreende ainda um módulo de composição adicional e um módulo colisor adicional incorporado à uma ou mais memórias de computador, o módulo de composição adicional e o módulo colisor adicional configurados para executar operações para alterar uma orientação e posição de uma câmera virtual adicional para manter a parte do objeto dentro de uma zona alvo associada à câmera virtual adicional, a câmera virtual e a câmera virtual adicional compreendendo uma meta câmera, a meta câmera configurada
    Petição 870190091348, de 13/09/2019, pág. 50/66
  10. 10/10 para selecionar a câmera virtual ou a câmera virtual adicional com base em uma pontuação de uma foto da parte do objeto capturada pela câmera virtual e em uma pontuação de uma foto da parte do objeto capturada pela câmera virtual adicional.
    21. Meio legível por máquina, caracterizado pelo fato de que carrega instruções legíveis por máquina, as quais, quando executadas por um ou mais processadores, fazem com que o um ou mais processadores executem o método, conforme definido em qualquer uma das reivindicações 8 a 14.
BR112019019060-0A 2017-03-17 2018-03-16 método e sistema para colisão de câmera automatizada e preservação de composição BR112019019060B1 (pt)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201762473107P 2017-03-17 2017-03-17
US62/473,107 2017-03-17
US201762525037P 2017-06-26 2017-06-26
US62/525,037 2017-06-26
US201762551134P 2017-08-28 2017-08-28
US62/551,134 2017-08-28
PCT/EP2018/056768 WO2018167319A1 (en) 2017-03-17 2018-03-16 Method and system for automated camera collision and composition preservation

Publications (2)

Publication Number Publication Date
BR112019019060A2 true BR112019019060A2 (pt) 2020-04-22
BR112019019060B1 BR112019019060B1 (pt) 2021-01-19

Family

ID=61750107

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112019019060-0A BR112019019060B1 (pt) 2017-03-17 2018-03-16 método e sistema para colisão de câmera automatizada e preservação de composição

Country Status (8)

Country Link
US (2) US20180276874A1 (pt)
EP (1) EP3596617A1 (pt)
JP (1) JP6967603B2 (pt)
CN (1) CN110431600A (pt)
BR (1) BR112019019060B1 (pt)
CA (1) CA3056269C (pt)
RU (1) RU2745828C1 (pt)
WO (1) WO2018167319A1 (pt)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11508116B2 (en) 2017-03-17 2022-11-22 Unity IPR ApS Method and system for automated camera collision and composition preservation

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9332285B1 (en) 2014-05-28 2016-05-03 Lucasfilm Entertainment Company Ltd. Switching modes of a media content item
CN108415639B (zh) * 2018-02-09 2022-02-25 腾讯科技(深圳)有限公司 视角调整方法、装置、电子装置及计算机可读存储介质
US10709979B2 (en) * 2018-06-11 2020-07-14 Nintendo Co., Ltd. Systems and methods for adjusting a stereoscopic effect
US10692271B1 (en) * 2018-12-13 2020-06-23 Advanced Micro Devices, Inc. Robust ray-triangle intersection
US10967267B2 (en) * 2019-08-06 2021-04-06 Roblox Corporation Changing a camera view in an electronic game
CN110689570B (zh) * 2019-09-29 2020-11-27 北京达佳互联信息技术有限公司 虚拟形象直播方法、装置、电子设备及存储介质
US11928789B2 (en) * 2019-12-19 2024-03-12 Zf Friedrichshafen Ag Vehicle vision system
CN111870963B (zh) * 2020-08-05 2023-10-27 网易(杭州)网络有限公司 游戏观战方法、装置和电子设备
CN114385299A (zh) * 2022-01-12 2022-04-22 北京字跳网络技术有限公司 页面显示控制方法、装置、移动终端及存储介质
CN115193038A (zh) * 2022-07-26 2022-10-18 北京字跳网络技术有限公司 一种交互控制方法、装置、电子设备及存储介质

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3311830B2 (ja) * 1993-09-20 2002-08-05 株式会社東芝 3次元動画作成装置
US6670957B2 (en) * 2000-01-21 2003-12-30 Sony Computer Entertainment Inc. Entertainment apparatus, storage medium and object display method
US7256817B2 (en) * 2000-10-26 2007-08-14 Fujinon Corporation Following device
JP4535604B2 (ja) * 2000-11-28 2010-09-01 株式会社バンダイナムコゲームス ゲームシステム及びプログラム
US6995788B2 (en) * 2001-10-10 2006-02-07 Sony Computer Entertainment America Inc. System and method for camera navigation
JP4366023B2 (ja) * 2001-03-16 2009-11-18 インターナショナル・ビジネス・マシーンズ・コーポレーション ビデオ・イメージの部分イメージ領域抽出方法、部分イメージ領域抽出システム、部分イメージ領域抽出のためのプログラム、抽出されたビデオ・イメージの配信方法およびコンテンツ作成方法
JP3843242B2 (ja) * 2002-02-28 2006-11-08 株式会社バンダイナムコゲームス プログラム、情報記憶媒体、およびゲーム装置
JP2003334382A (ja) * 2002-05-21 2003-11-25 Sega Corp ゲーム装置、画像処理装置及び画像処理方法
JP3795856B2 (ja) * 2002-12-09 2006-07-12 株式会社スクウェア・エニックス ビデオゲーム装置、ビデオゲームの進行制御方法、プログラム及び記録媒体
JP2004329463A (ja) * 2003-05-06 2004-11-25 Nintendo Co Ltd ゲーム装置および仮想カメラの制御プログラム
JP3813945B2 (ja) * 2003-05-07 2006-08-23 任天堂株式会社 ゲーム装置およびゲームプログラム
JP3700857B2 (ja) * 2004-03-03 2005-09-28 コナミ株式会社 ゲームプログラム及びゲーム装置
JP4412715B2 (ja) * 2004-05-07 2010-02-10 株式会社バンダイナムコゲームス プログラム、情報記憶媒体および画像生成システム
JP4123187B2 (ja) * 2004-05-13 2008-07-23 ソニー株式会社 アニメーション生成装置、アニメーション生成方法およびアニメーション生成プログラム
US7720580B2 (en) * 2004-12-23 2010-05-18 Donnelly Corporation Object detection system for vehicle
US9327191B2 (en) * 2006-05-08 2016-05-03 Nintendo Co., Ltd. Method and apparatus for enhanced virtual camera control within 3D video games or other computer graphics presentations providing intelligent automatic 3D-assist for third person viewpoints
US8277316B2 (en) * 2006-09-14 2012-10-02 Nintendo Co., Ltd. Method and apparatus for using a common pointing input to control 3D viewpoint and object targeting
EP2154481A4 (en) * 2007-05-31 2014-09-10 Panasonic Ip Corp America PICTURE RECORDING DEVICE, SERVER FOR PROVIDING ADDITIONAL INFORMATION AND SYSTEM FOR FILING SUPPLEMENTARY INFORMATION
JP4489800B2 (ja) * 2007-08-30 2010-06-23 株式会社スクウェア・エニックス 画像生成装置及び方法、並びにプログラム及び記録媒体
JP5390093B2 (ja) * 2007-12-21 2014-01-15 任天堂株式会社 ゲームプログラムおよびゲーム装置
JP4425963B2 (ja) * 2008-03-14 2010-03-03 株式会社コナミデジタルエンタテインメント 画像生成装置、画像生成方法、および、プログラム
US9248376B2 (en) * 2008-09-30 2016-02-02 Nintendo Co., Ltd. Computer-readable storage medium having stored game program therein, and game apparatus
US8253801B2 (en) * 2008-12-17 2012-08-28 Sony Computer Entertainment Inc. Correcting angle error in a tracking system
US9299184B2 (en) * 2009-04-07 2016-03-29 Sony Computer Entertainment America Llc Simulating performance of virtual camera
WO2011096252A1 (ja) * 2010-02-02 2011-08-11 コニカミノルタホールディングス株式会社 画像処理システム、画像処理方法、およびプログラム
JP2011215886A (ja) * 2010-03-31 2011-10-27 Namco Bandai Games Inc プログラム、情報記憶媒体、及び、画像生成装置
CN103080976B (zh) * 2010-08-19 2015-08-05 日产自动车株式会社 三维物体检测装置和三维物体检测方法
DE102010042063B4 (de) * 2010-10-06 2021-10-28 Robert Bosch Gmbh Verfahren und Vorrichtung zum Bestimmen von aufbereiteten Bilddaten über ein Umfeld eines Fahrzeugs
JP5143883B2 (ja) * 2010-11-12 2013-02-13 株式会社コナミデジタルエンタテインメント 画像処理装置、画像処理プログラム、及び画像処理方法
JP5714393B2 (ja) * 2011-04-13 2015-05-07 任天堂株式会社 情報処理プログラム、情報処理装置、情報処理方法及び情報処理システム
US9147122B2 (en) * 2012-05-31 2015-09-29 Qualcomm Incorporated Pose estimation based on peripheral information
JP5843721B2 (ja) * 2012-07-26 2016-01-13 任天堂株式会社 ゲームプログラム、ゲーム装置、ゲーム制御方法およびゲームシステム
JP2014235596A (ja) * 2013-06-03 2014-12-15 任天堂株式会社 情報処理プログラム、情報処理システム、情報処理装置、および情報処理方法
WO2015154004A1 (en) * 2014-04-05 2015-10-08 Sony Computer Entertainment America Llc Method for efficient re-rendering objects to vary viewports and under varying rendering and rasterization parameters
WO2016151925A1 (ja) * 2015-03-26 2016-09-29 富士フイルム株式会社 追尾制御装置、追尾制御方法、追尾制御プログラム、及び、自動追尾撮影システム
EP3285476A4 (en) * 2015-04-14 2018-09-19 Sony Corporation Image processing device, image processing method, and image processing system
JP6074525B1 (ja) * 2016-02-12 2017-02-01 株式会社コロプラ 仮想空間における視界領域調整方法、およびプログラム
US10148876B1 (en) * 2016-07-26 2018-12-04 360fly, Inc. Panoramic video cameras, camera systems, and methods that facilitate handling multiple video streams while tracking an object
US10688392B1 (en) * 2016-09-23 2020-06-23 Amazon Technologies, Inc. Reusable video game camera rig framework
JP6967603B2 (ja) 2017-03-17 2021-11-17 ユニティ アイピーアール エイピーエスUnity Ipr Aps 自動化されたカメラコリジョンおよび構図保存のための方法およびシステム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11508116B2 (en) 2017-03-17 2022-11-22 Unity IPR ApS Method and system for automated camera collision and composition preservation

Also Published As

Publication number Publication date
RU2745828C1 (ru) 2021-04-01
BR112019019060B1 (pt) 2021-01-19
CN110431600A (zh) 2019-11-08
JP6967603B2 (ja) 2021-11-17
US20180276874A1 (en) 2018-09-27
WO2018167319A1 (en) 2018-09-20
JP2020514920A (ja) 2020-05-21
US11508116B2 (en) 2022-11-22
CA3056269C (en) 2021-07-13
EP3596617A1 (en) 2020-01-22
CA3056269A1 (en) 2018-09-20
US20200357164A1 (en) 2020-11-12

Similar Documents

Publication Publication Date Title
RU2745828C1 (ru) Способ и система для автоматизированного предохранения от столкновений и сохранения композиции камеры
US10453175B2 (en) Separate time-warping for a scene and an object for display of virtual reality content
US10853991B1 (en) Multi-layered artificial reality controller pose tracking architecture having prioritized motion models
US9361732B2 (en) Transitions between body-locked and world-locked augmented reality
JP7008730B2 (ja) 画像に挿入される画像コンテンツについての影生成
CN112400202A (zh) 为在hmd环境中进行快速中央凹渲染利用预测和对gpu的后期更新做出的眼睛跟踪
US10504295B2 (en) Systems and methods for using sensing of real object position, trajectory, or attitude to enable user interaction with a virtual object
CN109923509B (zh) 虚拟现实中的对象的协同操纵
BR102017019134A2 (pt) Método, dispositivos e sistemas para zoom automático quando executando uma cena de realidade aumentada
US11232644B1 (en) Systems and methods for providing spatial awareness in virtual reality
KR20230017849A (ko) 증강 현실 안내
KR20210107741A (ko) 눈 추적 기능이 있는 헤드 마운트 디스플레이의 사용자 상호 작용
JP7222121B2 (ja) ストーリー内のオブジェクトの感情適合性を管理する方法およびシステム
US10846901B2 (en) Conversion of 2D diagrams to 3D rich immersive content
WO2017212999A1 (ja) 映像生成装置及び映像生成方法、及び映像生成プログラム
US20220365344A1 (en) Augmented reality gaming using virtual eyewear beams
De Schepper et al. A virtual reality-based multiplayer game using fine-grained localization
US20230259194A1 (en) Spatial Anchor Sharing for Multiple Virtual Reality Systems in Shared Real-World Environments

Legal Events

Date Code Title Description
B06A Patent application procedure suspended [chapter 6.1 patent gazette]
B15K Others concerning applications: alteration of classification

Free format text: A CLASSIFICACAO ANTERIOR ERA: G06F 17/00

Ipc: G06T 15/20 (2011.01), A63F 13/25 (2014.01), G06T 7

B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 16/03/2018, OBSERVADAS AS CONDICOES LEGAIS.