Compartilhar via


Captura de realidade misturada para desenvolvedores (DirectX)

Observação

Consulte Renderizar da câmera PV abaixo para obter diretrizes sobre uma nova funcionalidade MRC para HoloLens 2.

Antes de começar aqui, recomendamos que você dê uma olhada em nosso artigo de visão geral da captura de realidade misturada.

Renderizar da câmera PV (aceitação)

O HoloLens 2 adiciona a capacidade de um aplicativo imersivo renderizar da câmera PV enquanto a captura de realidade misturada está em execução. Para garantir que o aplicativo dê suporte à renderização adicional corretamente, o aplicativo precisa aceitar essa funcionalidade.

A renderização da câmera PV oferece as seguintes melhorias em relação à experiência padrão do MRC:

  • O alinhamento do holograma com seu ambiente físico e mãos para interações próximas deve ser preciso em todas as distâncias. Evite ter um deslocamento em distâncias diferentes do ponto de foco, como você pode ver no MRC padrão.
  • O olho direito no fone de ouvido não será comprometido, pois não será usado para renderizar os hologramas para a saída do MRC.

Há três etapas para habilitar a renderização da câmera PV:

  1. Habilitar o PhotoVideoCamera HolographicViewConfiguration
  2. Manipular a renderização adicional de HolographicCamera
  3. Verifique se os sombreadores e o código são renderizados corretamente a partir desta HolographicCamera adicional
Habilitar o PhotoVideoCamera HolographicViewConfiguration no DirectX

Para aceitar a renderização da câmera PV, um aplicativo simplesmente habilita o HolographicViewConfiguration do PhotoVideoCamera:

var display = Windows.Graphics.Holographic.HolographicDisplay.GetDefault();
var view = display.TryGetViewConfiguration(Windows.Graphics.Holographic.HolographicViewConfigurationKind.PhotoVideoCamera);
if (view != null)
{
    view.IsEnabled = true;
}
Manipular a renderização adicional de HolographicCamera no DirectX

Quando o aplicativo aceita a renderização da câmera PV e a captura de realidade misturada é iniciada:

  1. O evento CameraAdded do HolographicSpace será acionado. Esse evento poderá ser adiado se o aplicativo não puder lidar com a câmera no momento.
  2. Depois que o evento for concluído sem adiamentos pendentes, o HolographicCamera aparecerá na lista AddedCameras do próximo HolographicFrame.

Quando a captura de realidade misturada for interrompida (ou se o aplicativo desabilitar a configuração de exibição enquanto a captura de realidade misturada estiver em execução): o HolographicCamera aparecerá na próxima lista RemovedCameras do HolographicFrame e o evento CameraRemoved do HolographicSpace será acionado.

Uma propriedade ViewConfiguration foi adicionada a HolographicCamera para ajudar a identificar a configuração à qual uma câmera pertence.

Verificar se os sombreadores e o código dão suporte a câmeras adicionais

Execute uma captura de realidade misturada e verifique se há alinhamento incomum, conteúdo ausente ou problemas de desempenho. Atualize sombreadores e código conforme apropriado.

Se houver determinadas cenas que não podem dar suporte à renderização para uma câmera adicional, você poderá desabilitar o HolographicViewConfiguration do PhotoVideoCamera.

Desabilitando o MRC em seu aplicativo

Aplicativo 2D

Os aplicativos 2D podem optar por ter seu conteúdo visual obscurecido quando a captura de realidade misturada está em execução:

Aplicativo imersivo

Os aplicativos imersivos podem optar por ter seu conteúdo visual excluído da captura de realidade misturada:

  • Definindo IsContentProtectionEnabled de HolographicCameraRenderingParameter para desabilitar a captura de realidade misturada para seu quadro associado
  • Configurando IsHardwareContentProtectionEnabled da HolographicCamera para desabilitar a captura de realidade misturada para sua câmera holográfica associada

Teclado de senha

Com a Atualização de maio de 2019 do Windows 10, o conteúdo visual é excluído automaticamente da captura de realidade misturada quando uma senha ou teclado de PIN está visível.

Saber quando o MRC está ativo

A classe AppCapture pode ser usada por um aplicativo para saber quando a captura de realidade misturada do sistema está em execução (para áudio ou vídeo).

Observação

A API GetForCurrentView do AppCapture poderá retornar null se a captura de realidade misturada não estiver disponível no dispositivo. Também é importante cancelar o registro do evento CapturingChanged quando seu aplicativo for suspenso, caso contrário, o MRC poderá entrar em um estado bloqueado.

Integrando a funcionalidade do MRC de dentro do seu aplicativo

Seu aplicativo de realidade misturada pode iniciar a captura de foto ou vídeo do MRC de dentro do aplicativo, e o conteúdo capturado é disponibilizado para seu aplicativo sem ser armazenado no "Rolo da câmera" do dispositivo. Você pode criar um gravador MRC personalizado ou aproveitar a interface do usuário de captura de câmera integrada.

MRC com interface do usuário de câmera integrada

Os desenvolvedores podem usar a API da interface do usuário do Camera Capture para obter uma foto ou vídeo de realidade misturada capturado pelo usuário com apenas algumas linhas de código.

Essa API inicia a interface do usuário da câmera MRC interna, na qual os usuários podem tirar uma foto ou gravar um vídeo e retorna a captura resultante para seu aplicativo. Você pode criar um gravador de Captura de Realidade Misturada personalizado se precisar adicionar sua própria interface do usuário da câmera ou acesso de nível inferior para capturar fluxos.

MRC com captura de tela

Com a atualização de maio de 2021 do HoloLens 2 (Windows Holographic, versão 21H1 build 20346.1002), os desenvolvedores podem usar a API de captura de tela para solicitar um fluxo de quadros de vídeo de realidade misturada.

Criando um gravador MRC personalizado

Embora o usuário sempre possa disparar uma foto ou vídeo usando o serviço de captura MRC do sistema, um aplicativo pode querer criar um aplicativo de câmera personalizado que inclua hologramas no fluxo da câmera, assim como o MRC. Isso permite que o aplicativo inicie capturas da entrada do usuário, crie uma interface do usuário de gravação personalizada ou personalize as configurações do MRC, para citar alguns exemplos.

O HoloStudio adiciona uma câmera MRC personalizada usando efeitos MRC

O HoloStudio adiciona uma câmera MRC personalizada usando efeitos MRC

Outros aplicativos podem fazer isso usando as APIs de Captura de Mídia do Windows para controlar a Câmera e adicionar um efeito de Vídeo e Áudio MRC para incluir hologramas virtuais e áudio do aplicativo em fotos e vídeos.

Os aplicativos têm duas opções para adicionar o efeito:

Observação

O namespace Windows.Media.MixedRealityCapture não será reconhecido pelo Visual Studio, mas as cadeias de caracteres ainda são válidas.

Efeito de vídeo MRC (Windows.Media.MixedRealityCapture.MixedRealityCaptureVideoEffect)

Nome da propriedade Tipo Valor padrão Descrição
StreamType UINT32 (MediaStreamType) 1 (VideoRecord) Descreva para qual fluxo de captura esse efeito é usado. O áudio não está disponível.
HologramCompositionEnabled boolean TRUE Sinalizador para habilitar ou desabilitar hologramas na captura de vídeo.
RecordingIndicatorEnabled boolean TRUE Sinalizador para habilitar ou desabilitar o indicador de gravação na tela durante a captura do holograma.
VideoStabilizationEnabled boolean FALSE Sinalizador para habilitar ou desabilitar a estabilização de vídeo alimentada pelo rastreador do HoloLens.
VideoStabilizationBufferLength UINT32 0 Defina quantos quadros históricos são usados para estabilização de vídeo. 0 é 0 de latência e quase "livre" do ponto de vista de energia e desempenho. 15 é recomendado para a mais alta qualidade (ao custo de 15 quadros de latência e memória).
Coeficiente de Opacidade Global float 0.9 (HoloLens) 1.0 (headset imersivo) Defina o coeficiente de opacidade global do holograma no intervalo de 0,0 (totalmente transparente) a 1,0 (totalmente opaco).
BlankOnProtectedContent boolean FALSE Sinalize para habilitar ou desabilitar o retorno de um quadro vazio se houver um aplicativo UWP 2D mostrando conteúdo protegido. Se esse sinalizador for false e um aplicativo UWP 2D estiver mostrando conteúdo protegido, o aplicativo UWP 2D será substituído por uma textura de conteúdo protegido no fone de ouvido e na captura de realidade misturada.
Mostrar Malha Oculta boolean FALSE Sinalizador para habilitar ou desabilitar a exibição da malha de área oculta da câmera holográfica e do conteúdo vizinho.
Tamanho da saída Tamanho 0, 0 Defina o tamanho de saída desejado após o corte para estabilização de vídeo. Um tamanho de corte padrão será escolhido se 0 ou um tamanho de saída inválido for especificado.
Subtipo de saída String NV12 Defina o subtipo de saída desejado após a composição do holograma e/ou a estabilização de vídeo. Dá suporte a Nv12 e Argb32 MediaEncodingSubtypes.
PreferredHologramPerspective UINT32 Configuração Renderizar da câmera no Portal de Dispositivos do Windows Enumeração usada para indicar qual configuração de exibição de câmera holográfica deve ser capturada: 0 (Exibição) significa que o aplicativo não será solicitado a renderizar da câmera de foto/vídeo, 1 (PhotoVideoCamera) solicitará que o aplicativo renderize da câmera de foto/vídeo (se o aplicativo der suporte a isso). Com suporte apenas no HoloLens 2

Observação

Você pode alterar o valor padrão de PreferredHologramPerspective no Portal de Dispositivos Windows acessando a página Captura de Realidade Misturada e desmarcando Renderizar da Câmera. A configuração padrão é 1 (PhotoVideoCamera), mas pode ser desmarcada para defini-la como 0 (Exibição).

O valor padrão de PreferredHologramPerspective era 0 (Display) antes da atualização de junho de 2020 (Windows Holographic, versão 2004 build 19041.1106 e Windows Holographic, versão 1903 build 18362.1064).

O suporte para OutputSubtype foi adicionado com a atualização de maio de 2021 (Windows Holographic, versão 21H1 build 20346.1002).

Efeito de áudio MRC (Windows.Media.MixedRealityCapture.MixedRealityCaptureAudioEffect)

Nome da propriedade Tipo Valor padrão Descrição
Modo Mixer UINT32 2 (Microfone e áudio do sistema) Enumeração usada para indicar quais fontes de áudio devem ser usadas: 0 (somente áudio do microfone), 1 (somente áudio do sistema), 2 (áudio do microfone e do sistema)
Ganho de retorno float Configuração de ganho de áudio do aplicativo no Portal de Dispositivos do Windows Ganho para aplicar ao volume de áudio do sistema. Varia de 0,0 a 5,0. Com suporte apenas no HoloLens 2
Ganho de microfone float Configuração de ganho de áudio do microfone no Portal de dispositivos do Windows Ganho para aplicar ao volume do microfone. Varia de 0,0 a 5,0. Com suporte apenas no HoloLens 2

Observação

Você pode alterar o valor padrão de LoopbackGain ou MicrophoneGain no Portal de Dispositivos do Windows acessando a página Captura de Realidade Misturada e ajustando o controle deslizante ao lado de suas respectivas configurações. Ambas as configurações são padronizadas para 1,0, mas podem ser definidas para qualquer valor entre 0,0 e 5,0.

O uso do Portal de Dispositivos do Windows para configurar os valores de ganho padrão foi adicionado com a atualização de junho de 2020 (Windows Holographic, versão 2004 build 19041.1106 e Windows Holographic, versão 1903 build 18362.1064).

Limitações simultâneas do MRC

Você precisa estar ciente de certas limitações quando vários aplicativos estão acessando o MRC ao mesmo tempo.

Acesso à câmera de foto/vídeo

No HoloLens 1, o MRC falhará ao capturar uma foto ou capturar vídeo enquanto um processo estiver gravando vídeo ou tirando uma foto. O inverso também é verdadeiro: se o MRC estiver em execução, o aplicativo não conseguirá obter acesso à câmera.

Com o HoloLens 2, é possível compartilhar o acesso à câmera. Se você não precisar de controle direto da resolução ou da taxa de quadros, poderá inicializar MediaCapture usando a propriedade SharedMode com SharedReadOnly.

Acesso integrado à câmera de foto e vídeo MRC

Funcionalidade MRC integrada ao Windows 10 (via Cortana, Menu Iniciar, atalhos de hardware, Miracast, Portal de Dispositivos do Windows):

  • Será executado com ExclusiveControl por padrão

No entanto, o suporte foi adicionado ao subsistema MRC para operar em um modo compartilhado:

  • Se um aplicativo solicitar acesso ExclusiveControl à câmera de foto/vídeo, o MRC integrado interromperá automaticamente o uso da câmera de foto/vídeo para que a solicitação do aplicativo seja bem-sucedida
  • Se o MRC interno for iniciado enquanto um aplicativo tiver ExclusiveControl, o MRC interno será executado no modo SharedReadOnly

Essa funcionalidade de modo compartilhado tem certas restrições:

  • Foto via Cortana, atalhos de hardware ou Menu Iniciar: requer a atualização de abril de 2018 do Windows 10 (ou posterior)
  • Vídeo via Cortana, atalhos de hardware ou Menu Iniciar: requer a atualização de abril de 2018 do Windows 10 (ou posterior)
  • Streaming do MRC sobre Miracast: requer a atualização de outubro de 2018 do Windows 10 (ou posterior)
  • Streaming do MRC pelo Portal de Dispositivos do Windows ou por meio do aplicativo complementar do HoloLens: requer o HoloLens 2

Observação

A resolução e a taxa de quadros da interface do usuário da câmera MRC interna podem ser reduzidas de seus valores normais quando outro aplicativo estiver usando a câmera de foto/vídeo.

Acesso ao MRC para desenvolvedores

Recomendamos que você sempre solicite o controle exclusivo para a câmera ao usar o MRC. Isso garantirá que seu aplicativo tenha controle total das configurações da câmera, desde que você esteja ciente das limitações listadas acima.

Cuidado

Leia atentamente os comentários do SharingMode antes de continuar.

  • Configure sua câmera da maneira que você deseja
  • Inicie o aplicativo, capture quadros de vídeo com a API inicial e habilite o MRC

Cuidado

Se você iniciar o MRC antes de iniciar seu aplicativo, não podemos garantir que o recurso funcionará conforme o esperado.

Você pode encontrar um exemplo completo do processo acima no exemplo de rastreamento facial holográfico.

Observação

Antes da atualização de abril de 2018 do Windows 10, o gravador MRC personalizado de um aplicativo era mutuamente exclusivo com o MRC do sistema (captura de fotos, captura de vídeos ou streaming do Portal de Dispositivos do Windows).

Confira também