Caso prático - Olhar através de buracos na sua realidade

Quando as pessoas pensam na realidade mista e no que podem fazer com Microsoft HoloLens, normalmente mantêm perguntas como "Que objetos posso adicionar ao meu quarto?" ou "O que posso colocar em camadas sobre o meu espaço?" Gostaria de realçar outra área que pode considerar, essencialmente um truque de magia, utilizando a mesma tecnologia para analisar ou através de objetos físicos reais à sua volta.

A tecnologia

Se lutou contra alienígenas enquanto atravessam as suas paredes em RoboRaid, desbloqueou um cofre de parede em Fragmentos, ou teve a sorte de ver o hangar do UNSC Infinity na experiência Halo 5 na E3 em 2015, então viu do que estou a falar. Dependendo da sua imaginação, este truque visual pode ser usado para colocar buracos temporários na sua parede seca ou para esconder mundos debaixo de uma tábua solta.

RoboRaid adiciona tubos tridimensionais e outra estrutura atrás das suas paredes, visíveis apenas através de buracos criados à medida que os invasores atravessam.

RoboRaid adiciona tubos tridimensionais e outra estrutura atrás das suas paredes, visíveis apenas através de buracos criados à medida que os invasores atravessam.

Ao utilizar um destes hologramas exclusivos no HoloLens, uma aplicação pode fornecer a ilusão de conteúdo atrás das paredes ou através do seu chão da mesma forma que a realidade se apresenta através de uma janela real. Mova-se para a esquerda e pode ver o que estiver do lado direito. Aproxime-se e pode ver um pouco mais de tudo. A maior diferença é que os buracos reais permitem-lhe passar, enquanto o seu chão teimosamente não o deixa passar por esse conteúdo holográfico mágico. (Vou adicionar uma tarefa ao registo de tarefas pendentes.)

Nos bastidores

Este truque é uma combinação de dois efeitos. Primeiro, o conteúdo holográfico é afixado ao mundo com "âncoras espaciais". Utilizar âncoras para tornar esse conteúdo "protegido pelo mundo" significa que o que está a ver não se afasta visualmente dos objetos físicos perto do mesmo, mesmo à medida que se desloca ou o sistema de mapeamento espacial subjacente atualiza o modelo 3D da sua sala.

Em segundo lugar, esse conteúdo holográfico está visualmente limitado a um espaço muito específico, pelo que só pode ver através do buraco na 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 que bloqueie 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 ecrã real, mas uma ilustração do aspeto do submundo secreto do MR Basics 101 no HoloLens. O bastidor preto não aparece, mas pode ver conteúdo através de um buraco virtual. (Ao olhar através de um dispositivo real, o chão parece desaparecer ainda mais porque os seus olhos se concentram a uma distância adicional como se não estivesse lá.)

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

Conteúdo holográfico de bloqueio mundial

No Unity, fazer com que os conteúdos holográficos permaneçam protegidos pelo mundo é tão fácil como adicionar um componente WorldAnchor:

myObject.AddComponent<WorldAnchor>();

O componente WorldAnchor ajustará constantemente a posição e a rotação do 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 os seus conteúdos, crie-o de forma a que o pivô raiz do objeto esteja centrado neste buraco virtual. (Se o pivô do objeto estiver no fundo da parede, os ajustes ligeiros na posição e na rotação serão muito mais visíveis e o orifício poderá não parecer muito estável.)

Ocluindo tudo menos o buraco virtual

Existem várias formas de bloquear seletivamente a vista para o que está escondido nas suas paredes. O mais simples tira partido do facto de o HoloLens utilizar uma apresentação de aditivos, o que significa que os objetos totalmente pretos parecem invisíveis. Pode fazê-lo no Unity sem fazer qualquer sombreado especial ou truques materiais, basta criar um material preto e atribuí-lo a um objeto que se encontra no seu conteúdo. Se não quiser fazer modelação 3D, basta utilizar um punhado de objetos Quad predefinidos e sobrepô-los ligeiramente. Há uma série de desvantagens nesta abordagem, mas é a forma mais rápida de pôr algo a funcionar, e obter uma prova de baixa fidelidade de conceito a funcionar é ótimo, mesmo que suspeitar que poderá querer refatorizar mais tarde.

Uma grande desvantagem para a abordagem acima da "caixa preta" é que não fotografa bem. Embora o seu efeito possa parecer perfeito através da apresentação do HoloLens, quaisquer capturas de ecrã que efetuar mostrarão um objeto preto grande em vez do que resta da parede ou do chão. A razão para tal é que o hardware físico e capturas de ecrã hologramas compostos e a realidade de forma diferente. Vamos desviar por um momento para uma matemática falsa...

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

O que vê através do HoloLens:

( Reality * darkening_amount ) + Holograms

O que vê em capturas de ecrã e vídeo:

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

Em inglês: o que vê através do HoloLens é uma combinação simples de realidade escura (como através de óculos de sol) e quaisquer hologramas que a aplicação queira mostrar. Mas quando tira uma captura de ecrã, a imagem da câmara é misturada com os hologramas da aplicação de acordo com o valor de transparência por pixel.

Uma forma de contornar esta situação é alterar o material da "caixa preta" para escrever apenas na memória intermédia de profundidade e ordenar com todos os outros materiais opacos. Para obter um exemplo disto, consulte o ficheiro WindowOcclusion.shader no MixedRealityToolkit no GitHub. As linhas relevantes são copiadas aqui:

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

(Tenha em atenção que a linha "Offset 50, 100" é para lidar com problemas não relacionados, pelo que provavelmente faria sentido deixá-lo de fora.)

Implementar um material de oclusão invisível como este permitirá que a sua aplicação desenhe uma caixa que tenha um aspeto correto no ecrã e em capturas de ecrã de realidade mista. Para pontos de bónus, pode tentar melhorar ainda mais o desempenho dessa caixa ao fazer coisas inteligentes para desenhar ainda menos píxeis invisíveis, mas isso pode realmente entrar nas crias e normalmente não será necessário.

Aqui está o submundo secreto do MR Basics 101 à medida que o Unity o desenha, excepto para as partes exteriores da caixa de oclusão. Tenha em atenção que o pivô do 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, excepto para as partes exteriores da caixa de oclusão. Tenha em atenção que o pivô do 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-o por si mesmo

Tem um HoloLens e quer experimentar o efeito por si mesmo? A coisa mais fácil que pode fazer (sem codificação necessária) é instalar a aplicação 3D Viewer gratuita e, em seguida, carregar o ficheiro .fbx que indiquei no GitHub para ver um modelo de vaso de flores no seu quarto. Carregue-o no HoloLens e poderá ver a ilusão no trabalho. Quando está à frente do modelo, só pode ver o pequeno buraco— tudo o resto é invisível. Observe o modelo de qualquer outro lado e este desaparece completamente. Utilize os controlos de movimento, rotação e dimensionamento do Visualizador 3D para posicionar o orifício virtual em relação a qualquer superfície vertical que possa pensar para gerar algumas ideias!

Ver este modelo no seu editor do Unity mostrará uma caixa preta grande à volta do vaso de flores. No HoloLens, a caixa desaparece, dando lugar a um efeito de janela mágica.

Ver este modelo no seu editor do Unity mostrará uma caixa preta grande à volta do vaso de flores. No HoloLens, a caixa desaparece, dando lugar a um efeito de janela mágica.

Se quiser criar uma aplicação que utilize esta técnica, consulte o tutorial do MR Basics 101 nos tutoriais do Mixed Reality. O capítulo 7 termina com uma explosão no seu chão que revela um submundo escondido (como ilustrado acima). Quem disse que os tutoriais tinham de ser aborrecidos?

Seguem-se algumas ideias sobre onde pode levar esta ideia a seguir:

  • Pense em formas de tornar o conteúdo dentro do buraco virtual interativo. Permitir que os seus utilizadores tenham algum impacto além das paredes pode realmente melhorar a sensação de admiração que este truque pode proporcionar.
  • Pense em formas de ver através de objetos de volta a áreas conhecidas. Por exemplo, como pode colocar um buraco holográfico na sua mesa de café e ver o seu chão por baixo dela?

Acerca do autor

Imagem de Eric Rehmeyer Eric Rehmeyer
@Microsoft de Engenheiro de Software Sénior

Ver também