Estudo de caso - Como olhar através dos buracos na sua realidade

Quando as pessoas pensam sobre realidade misturada e o que podem fazer com Microsoft HoloLens, elas geralmente se apegam a perguntas como "Quais objetos posso adicionar ao meu quarto?" ou "O que posso colocar em camadas em cima do meu espaço?" Gostaria de destacar outra área que você pode considerar , essencialmente um truque de mágica, usando a mesma tecnologia para examinar ou através de objetos físicos reais ao seu redor.

A tecnologia

Se você lutou contra alienígenas enquanto eles atravessavam suas paredes em RoboRaid, desbloqueavam um cofre de parede em Fragmentos, ou tiveram a sorte de ver o hangar infinito unsc na experiência halo 5 na E3 em 2015, então você viu do que estou falando. Dependendo da sua imaginação, esse truque visual pode ser usado para colocar buracos temporários em sua parede seca ou para esconder mundos sob um piso solto.

RoboRaid adiciona tubos tridimensionais e outras estruturas atrás de suas paredes, visíveis apenas através de buracos criados à medida que os invasores rompem.

RoboRaid adiciona tubos tridimensionais e outras estruturas atrás de suas paredes, visíveis apenas através de buracos criados à medida que os invasores rompem.

Usando um desses hologramas exclusivos no HoloLens, um aplicativo pode fornecer a ilusão de conteúdo atrás de suas paredes ou pelo chão da mesma forma que a realidade se apresenta através de uma janela real. Mova-se para a esquerda, e você pode ver o que está no lado direito. Aproxime-se, e você pode ver um pouco mais de tudo. A grande diferença é que buracos reais permitem que você passe, enquanto seu chão teimosamente não vai deixá-lo subir até esse conteúdo holográfico mágico. (Adicionarei uma tarefa à lista de pendências.)

Nos bastidores

Este truque é uma combinação de dois efeitos. Primeiro, o conteúdo holográfico é fixado no mundo usando "âncoras espaciais". Usar âncoras para tornar esse conteúdo "bloqueado pelo mundo" significa que o que você está olhando não se afasta visualmente dos objetos físicos próximos a ele, mesmo quando você se move ou o sistema de mapeamento espacial subjacente atualiza seu modelo 3D da sala.

Em segundo lugar, esse conteúdo holográfico é visualmente limitado a um espaço muito específico, para que você só possa ver através do buraco em sua realidade. Essa oclusão é necessária para exigir olhar através de um buraco lógico, janela ou porta, que vende o truque. Sem algo bloqueando a maior parte da vista, uma rachadura no espaço para uma dimensão jurássica secreta pode parecer um dinossauro mal colocado.

Esta não é uma captura de tela real, mas uma ilustração de como o submundo secreto do MR Basics 101 é exibido no HoloLens. O compartimento preto não aparece, mas você pode ver o conteúdo por meio de um buraco virtual. (Ao olhar através de um dispositivo real, o chão parece desaparecer ainda mais porque seus olhos se concentram a uma distância adicional como se ele não estivesse mesmo lá.)

Esta não é uma captura de tela real, mas uma ilustração de como o submundo secreto do MR Basics 101 é exibido no HoloLens. O compartimento preto não aparece, mas você pode ver o conteúdo por meio de um buraco virtual. (Ao olhar através de um dispositivo real, o chão parece desaparecer ainda mais porque seus olhos se concentram a uma distância adicional como se ele não estivesse mesmo lá.)

Conteúdo holográfico de bloqueio de mundo

No Unity, fazer com que o conteúdo holográfico permaneça bloqueado pelo mundo é tão fácil quanto adicionar um componente WorldAnchor:

myObject.AddComponent<WorldAnchor>();

O componente WorldAnchor ajustará constantemente a posição e a rotação de seu GameObject (e, portanto, qualquer outra coisa sob esse objeto na hierarquia) para mantê-lo estável em relação a objetos físicos próximos. Ao criar seu conteúdo, crie-o de forma que o pivô raiz do objeto seja centralizado nesse buraco virtual. (Se o pivô do objeto estiver no fundo da parede, seus pequenos ajustes na posição e rotação serão muito mais perceptíveis, e o orifício pode não parecer muito estável.)

Occluindo tudo, menos o buraco virtual

Há uma variedade de maneiras de bloquear seletivamente a vista para o que está escondido em suas paredes. O mais simples aproveita o fato de que o HoloLens usa uma exibição aditiva, o que significa que objetos totalmente pretos parecem invisíveis. Você pode fazer isso no Unity sem fazer nenhum sombreador especial ou truques materiais: basta criar um material preto e atribuí-lo a um objeto que armazena as caixas em seu conteúdo. Se você não quiser fazer a modelagem 3D, basta usar alguns objetos Quad padrão e sobrepô-los ligeiramente. Há várias desvantagens nessa abordagem, mas é a maneira mais rápida de fazer algo funcionar, e obter uma prova de conceito de baixa fidelidade funcionando é ótimo, mesmo que você suspeite que talvez queira refatorá-lo mais tarde.

Uma grande desvantagem para a abordagem acima da "caixa preta" é que ela não fotografa bem. Embora seu efeito possa parecer perfeito por meio da exibição do HoloLens, todas as capturas de tela que você fizer mostrarão um grande objeto preto em vez do que resta da parede ou do chão. O motivo disso é que o hardware físico e capturas de tela de hologramas compostos e realidade de maneira diferente. Vamos desviar por um momento para algumas matemáticas falsas...

Alerta matemático falso! Esses números e fórmulas servem para ilustrar um ponto, não para ser qualquer tipo de métrica precisa!

O que você vê por meio do HoloLens:

( Reality * darkening_amount ) + Holograms

O que você vê em capturas de tela e vídeo:

( Reality * ( 1 - hologram_alpha ) ) + Holograms * hologram_alpha

Em inglês: o que você vê por meio do HoloLens é uma combinação simples de realidade escureçada (como por meio de óculos de sol) e quaisquer hologramas que o aplicativo deseja mostrar. Mas quando você faz uma captura de tela, a imagem da câmera é combinada com os hologramas do aplicativo de acordo com o valor de transparência por pixel.

Uma maneira de contornar isso é alterar o material da "caixa preta" para gravar apenas no buffer de profundidade e classificar com todos os outros materiais opacos. Para obter um exemplo disso, marcar o arquivo WindowOcclusion.shader no MixedRealityToolkit no GitHub. As linhas relevantes são copiadas aqui:

"RenderType" = "Opaque"
"Queue" = "Geometry"
ColorMask 0

(Observe que a linha "Deslocamento 50, 100" é lidar com problemas não relacionados, portanto, provavelmente faria sentido deixar isso de fora.)

Implementar um material de oclusão invisível como esse permitirá que seu aplicativo desenhe uma caixa que parece correta na exibição e em capturas de tela de realidade misturada. Para pontos de bônus, você pode tentar melhorar ainda mais o desempenho dessa caixa fazendo coisas inteligentes para desenhar ainda menos pixels invisíveis, mas isso pode realmente entrar nas identificações e geralmente não será necessário.

Aqui está o submundo secreto do MR Basics 101 à medida que o Unity o desenha, exceto pelas partes externas da caixa de oclusão. Observe que o pivô para o submundo está no centro da caixa, o que ajuda a manter o buraco o mais estável possível em relação ao seu piso real.

Aqui está o submundo secreto do MR Basics 101 à medida que o Unity o desenha, exceto pelas partes externas da caixa de oclusão. Observe que o pivô para o submundo está no centro da caixa, o que ajuda a manter o buraco o mais estável possível em relação ao seu piso real.

Faça você mesmo

Tem um HoloLens e quer experimentar o efeito para si mesmo? A coisa mais fácil que você pode fazer (nenhuma codificação necessária) é instalar o aplicativo visualizador 3D gratuito e carregar o arquivo .fbx que forneci no GitHub para exibir um modelo de vaso de flores em sua sala. Carregue-o no HoloLens e você pode ver a ilusão no trabalho. Quando você está na frente do modelo, você só pode ver no pequeno buraco — todo o resto é invisível. Examine o modelo de qualquer outro lado e ele desaparece completamente. Use os controles de movimento, rotação e escala do Visualizador 3D para posicionar o orifício virtual em relação a qualquer superfície vertical que você possa pensar para gerar algumas ideias!

Exibir esse modelo em seu editor do Unity mostrará uma grande caixa preta ao redor do vaso de flores. No HoloLens, a caixa desaparece, dando lugar a um efeito de janela mágica.

Exibir esse modelo em seu editor do Unity mostrará uma grande caixa preta ao redor do vaso de flores. No HoloLens, a caixa desaparece, dando lugar a um efeito de janela mágica.

Se você quiser criar um aplicativo que usa essa técnica, marcar o tutorial do MR Basics 101 nos tutoriais do Realidade Misturada. O capítulo 7 termina com uma explosão no chão que revela um submundo escondido (como na foto acima). Quem disse que tutoriais tinham que ser chatos?

Aqui estão algumas ideias de onde você pode levar essa ideia a seguir:

  • Pense em maneiras de tornar o conteúdo dentro do buraco virtual interativo. Permitir que seus usuários tenham algum impacto além de suas paredes pode realmente melhorar a sensação de admiração que esse truque pode fornecer.
  • Pense em maneiras de ver através de objetos de volta para áreas conhecidas. Por exemplo, como você pode colocar um buraco holográfico em sua mesa de café e ver o chão abaixo dela?

Sobre o autor

Foto de Eric Rehmeyer Eric Rehmeyer
@Microsoft de Engenheiro de Software Sênior

Confira também