Partilhar via


Captura de realidade mista para desenvolvedores (DirectX)

Nota

Consulte Renderizar a partir da câmara fotovoltaica abaixo para obter orientações sobre uma nova capacidade MRC para HoloLens 2.

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

Renderizar a partir da câmara fotovoltaica (opt-in)

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

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

  • O alinhamento do holograma ao seu ambiente físico e às mãos para interações próximas deve ser preciso a 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 MRC.

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

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

Para optar pela renderização a partir da câmera fotovoltaica, um aplicativo simplesmente habilita o HolographicViewConfiguration da PhotoVideoCamera:

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

Quando o aplicativo opta por renderizar a partir da câmera fotovoltaica e a captura de realidade mista é iniciada:

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

Quando a captura de realidade mista parar (ou se o aplicativo desativar a configuração de visualização enquanto a captura de realidade mista estiver em execução): a 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 sombreadores e código suportam câmeras adicionais

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

Se houver determinadas cenas que não suportam renderização para uma câmera adicional, você pode desativar HolographicViewConfiguration do PhotoVideoCamera.

Desativando o MRC em seu aplicativo

Aplicação 2D

As aplicações 2D podem optar por ter o seu conteúdo visual obscurecido quando a captura de realidade mista está a ser executada por:

Aplicação imersiva

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

  • Definindo HolographicCameraRenderingParameter's IsContentProtectionEnabled para desativar a captura de realidade mista para seu quadro associado
  • Definindo IsHardwareContentProtectionEnabled da HolographicCamera para desativar a captura de realidade mista para sua câmera holográfica associada

Teclado com palavra-passe

Com a Atualização de maio de 2019 do Windows 10, o conteúdo visual é automaticamente excluído da captura de realidade mista quando uma senha ou pino de teclado 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 mista do sistema está em execução (para áudio ou vídeo).

Nota

A API GetForCurrentView do AppCapture pode retornar null se a captura de realidade mista 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 MRC a partir do seu aplicativo

Seu aplicativo de realidade mista pode iniciar a captura de fotos ou vídeos 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 da câmera integrada

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

Essa API inicia a interface do usuário da câmera MRC integrada, onde 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 mista 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 HoloLens 2 de maio de 2021 (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 mista.

Criando um gravador MRC personalizado

Embora o usuário sempre possa acionar 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 a partir 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.

HoloStudio adiciona uma câmera MRC personalizada usando efeitos MRC

HoloStudio adiciona uma câmera MRC personalizada usando efeitos MRC

Outros aplicativos podem fazer isso usando as APIs do Windows Media Capture para controlar a câmera e adicionar um efeito MRC Video and Audio para incluir hologramas virtuais e áudio do aplicativo em fotos e vídeos.

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

Nota

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 de Propriedade Type Valor Predefinido Description
StreamType UINT32 (MediaStreamType) 1 (VideoRecord) Descreva para qual fluxo de captura esse efeito é usado. O áudio não está disponível.
HologramCompositionEnabled boolean TRUE Sinalizar para ativar ou desativar hologramas na captura de vídeo.
RecordingIndicatorEnabled boolean TRUE Sinalizar para ativar ou desativar o indicador de gravação na tela durante a captura de holograma.
VideoStabilizationEnabled boolean FALSE Sinalizar para ativar ou desativar a estabilização de vídeo alimentada pelo rastreador HoloLens.
VideoStabilizationBufferLength UINT32 0 Defina quantos quadros históricos são usados para estabilização de vídeo. 0 é latência 0 e quase "livre" do ponto de vista de potência e desempenho. 15 é recomendado para a mais alta qualidade (ao custo de 15 quadros de latência e memória).
GlobalOpacityCoefficient flutuante 0.9 (HoloLens) 1.0 (Auricular 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 falso 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 mista.
ShowHiddenMesh boolean FALSE Sinalizar para ativar ou desativar a exibição da malha de área oculta da câmera holográfica e do conteúdo vizinho.
OutputSize 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 é 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 estabilização de vídeo. Suporta Nv12 e Argb32 MediaEncodingSubtypes.
PreferredHologramPerspective UINT32 Renderizar a partir da configuração da câmera no Portal de Dispositivos do Windows Enum usado para indicar qual configuração de visualização da câmera holográfica deve ser capturada: 0 (Display) significa que o aplicativo não será solicitado a renderizar a partir da câmera de foto/vídeo, 1 (PhotoVideoCamera) pedirá que o aplicativo renderize a partir da câmera de foto/vídeo (se o aplicativo suportar). Suportado apenas no HoloLens 2

Nota

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

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 de Propriedade Type Valor Predefinido Description
Modo Misturador UINT32 2 (Microfone e áudio do sistema) Enum usado 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)
LoopbackGain flutuante 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. Suportado apenas no HoloLens 2
MicrofoneGanho flutuante 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. Suportado apenas no HoloLens 2

Nota

Você pode alterar o valor padrão de LoopbackGain ou MicrophoneGain no Portal de Dispositivos do Windows acessando a página Captura de Realidade Mista e ajustando o controle deslizante ao lado de suas respetivas configurações. Ambas as configurações padrão como 1.0, mas podem ser definidas como qualquer valor entre 0.0 e 5.0.

O uso do Windows Device Portal 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âmara fotográfica/vídeo

No HoloLens 1, o MRC não conseguirá 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á acessar a câmera.

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

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

Funcionalidade MRC integrada no Windows 10 (via Cortana, Menu Iniciar, atalhos de hardware, Miracast, Windows Device Portal):

  • 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 integrado for iniciado enquanto um aplicativo tiver ExclusiveControl, o MRC integrado será executado no modo SharedReadOnly

Esta funcionalidade de modo partilhado 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 através da Cortana, atalhos de hardware ou Menu Iniciar: requer a Atualização de abril de 2018 do Windows 10 (ou posterior)
  • Streaming MRC sobre Miracast: requer a atualização de outubro de 2018 do Windows 10 (ou posterior)
  • Streaming MRC através do Windows Device Portal ou através da aplicação complementar HoloLens: Requer HoloLens 2

Nota

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

Acesso 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.

Atenção

Certifique-se de ler atentamente os comentários do SharingMode antes de continuar.

  • Configure a sua câmara da forma que pretende
  • Inicie o aplicativo, capture quadros de vídeo com a API de inicialização e habilite o MRC

Atenção

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

Você pode encontrar uma amostra completa do processo acima na amostra holográfica de rastreamento facial.

Nota

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).

Consulte também