Estudo de caso – HoloTour

O HoloTour for Microsoft HoloLens fornece passeios pessoais imersivos em 3D de locais icônicos ao redor do mundo. Como os designers, artistas, produtores, designers de áudio e desenvolvedores que trabalham neste projeto descobriram, criar uma renderização 3D convincentemente real de um local conhecido requer uma mistura única de assistentes criativos e tecnológicos. Este estudo de caso percorrerá o processo de captura e criação do conteúdo usado para o HoloTour.

A tecnologia

Com o HoloTour, queríamos possibilitar que as pessoas visitassem alguns dos destinos mais incríveis do mundo, como as ruínas de Machu Picchu no Peru ou a atual Piazza Navona , na Itália, diretamente de suas próprias salas de estar. Nossa equipe fez dele o objetivo do HoloTour para "fazer você se sentir como se você realmente está lá". A experiência precisava ser mais do que apenas fotos ou vídeos. Aproveitando a tecnologia exclusiva de vídeo, rastreamento e áudio do HoloLens, acreditamos que poderíamos virtualmente transportá-lo para outro lugar. Precisaríamos capturar os pontos turísticos, sons e geometria tridimensional de cada local que visitamos e, em seguida, recriar isso em nosso aplicativo.

Para fazer isso, precisávamos de uma plataforma de câmera de 360° com captura de áudio direcional. Ele precisava capturar em resolução extremamente alta, para que a filmagem parecesse nítida quando reproduzida em um HoloLens e as câmeras precisariam ser posicionadas juntas para minimizar os artefatos de costura. Queríamos cobertura esférica completa, não apenas ao longo do horizonte, mas acima e abaixo de você também. A plataforma também precisava ser portátil para que pudéssemos levá-la por todo o mundo. Avaliamos as opções disponíveis fora da prateleira e percebemos que elas simplesmente não eram boas o suficiente para realizar nossa visão , seja por causa da resolução, custo ou tamanho. Se não pudéssemos encontrar uma plataforma de câmera que atendesse às nossas necessidades, teríamos que construir uma nós mesmos.

Construindo a plataforma

A primeira versão, feita de papelão, Velcro, fita adesiva e 14 câmeras GoPro, era algo que MacGyver teria se orgulhoso. Depois de revisar tudo, desde soluções de baixo nível até plataformas fabricadas personalizadas, as câmeras GoPro eram, em última análise, a melhor opção para nós porque eram pequenas, acessíveis e tinham armazenamento de memória fácil de usar. O pequeno fator forma foi especialmente importante porque nos permitiu colocar câmeras bastante próximas — quanto menor a distância entre as câmeras, menores serão os artefatos de costura. Nossa organização exclusiva da câmera nos permitiu obter cobertura de esfera completa mais sobreposição suficiente para alinhar câmeras de forma inteligente e suavizar alguns artefatos durante o processo de costura.

Aproveitar as funcionalidades de som espacial no HoloLens é fundamental para criar uma experiência imersiva convincentemente real. Usamos uma matriz de quatro microfones situada sob as câmeras no tripé, que capturaria o som da localização de nossa câmera em quatro direções, dando-nos informações suficientes para criar sons espaciais em nossas cenas.

Nossa plataforma de câmera 360° montada para filmar fora do Panteão.

Nossa plataforma de câmera 360° montada para filmar fora do Panteão.

Testamos nossa plataforma caseira levando-a até Rattlesnake Ridge perto de Seattle, capturando a paisagem no topo da caminhada. O resultado, embora significativamente menos polido do que os locais que você vê no HoloTour hoje, nos deu confiança de que nosso design de plataforma foi bom o suficiente para fazer você se sentir como se estivesse realmente lá.

Atualizamos nossa plataforma de Velcro e papelão para uma caixa de câmera impressa em 3D e compramos baterias externas para as câmeras GoPro para simplificar o gerenciamento de baterias. Então fizemos um teste mais extenso, viajando até São Francisco para criar um tour em miniatura pela costa da cidade e pela icônica ponte Golden Gate. Este equipamento de câmera é o que usamos para a maioria de nossas capturas dos locais que você visita no HoloTour.

A câmera de 360° filmando em Machu Picchu.

A câmera de 360° filmando em Machu Picchu.

Nos bastidores

Antes das filmagens, precisávamos descobrir quais locais queríamos incluir em nosso tour virtual. Roma foi o primeiro local que queríamos enviar e queríamos acertar, então decidimos fazer uma viagem de reconhecimento com antecedência. Enviamos uma equipe de seis pessoas, incluindo artistas, designers e produtores, para uma visita presencial aos sites que estávamos considerando. A viagem levou cerca de 9 dias – 2,5 para viagem, o resto para as filmagens. (Para Machu Picchu optamos por não fazer uma viagem de escoteiros, pesquisando com antecedência e reservando alguns dias de buffer para filmagens.)

Enquanto estava em Roma, a equipe tirou fotos de cada área e observou fatos interessantes, bem como considerações práticas, como o quão difícil é viajar para cada lugar e como seria difícil filmar por causa de multidões ou restrições. Pode parecer férias, mas é muito trabalho. Os dias começaram cedo pela manhã e iam sem parar até a noite. Todas as noites, imagens eram carregadas para a equipe em Seattle revisar.

Nossa equipe de captura em Roma.

Nossa equipe de captura em Roma.

Depois que a viagem de escoteiros foi concluída, um plano final foi feito para as filmagens reais. Isso exigia uma lista detalhada de onde iríamos filmar, em que dia e em que momento. Todos os dias no exterior é caro, então essas viagens precisavam ser eficientes. Reservamos guias e manipuladores em Roma para nos ajudar e usar totalmente todos os dias desde antes do nascer do sol até depois do pôr do sol. Precisamos obter a melhor filmagem possível para fazer você se sentir como se você realmente está lá.

Capturando o vídeo

Fazer algumas coisas simples durante a captura pode facilitar muito o pós-processamento. Por exemplo, sempre que você une imagens de várias câmeras, você acaba com artefatos visuais porque cada câmera tem uma exibição ligeiramente diferente. Quanto mais próximos forem os objetos da câmera, maior será a diferença entre os modos de exibição e maiores serão os artefatos de costura. Aqui está uma maneira fácil de visualizar o problema: mantenha o polegar na frente do rosto e olhe para ele com apenas um olho. Agora mude de olhos. Você verá que o polegar parece se mover em relação ao plano de fundo. Se você segurar o polegar mais longe do rosto e repetir o experimento, seu polegar parecerá se mover menos. Esse movimento aparente é semelhante ao problema de costura que enfrentamos: seus olhos, como nossas câmeras, não vêem exatamente a mesma imagem porque estão separados por um pouco de distância.

Como é muito mais fácil evitar os piores artefatos durante as filmagens do que corrigi-los no pós-processamento, tentamos manter as pessoas e as coisas longe da câmera na esperança de eliminar a necessidade de costurar objetos de close-up. Manter uma grande clareira em torno de nossa câmera foi provavelmente um dos maiores desafios que tivemos durante as filmagens e tivemos que ser criativos para fazê-lo funcionar. Trabalhar com guias locais foi uma grande ajuda no gerenciamento de multidões, mas também descobrimos que usar sinais — e às vezes pequenos cones ou sacos de feijão — para marcar nosso espaço de filmagem era razoavelmente eficaz, especialmente porque só precisávamos obter uma pequena quantidade de imagens em cada local. Muitas vezes, a melhor maneira de obter uma boa captura era chegar muito cedo pela manhã, antes que a maioria das pessoas aparecesse.

Algumas outras técnicas úteis de captura vêm diretamente das práticas cinematográficas tradicionais. Por exemplo, usamos uma correção de cor cartão em todas as nossas câmeras e capturamos fotos de referência de texturas e objetos que talvez precisemos mais tarde.

Um corte áspero de Machu Picchu mostrando a correção de cores cartão.

Um corte áspero de imagens do Panteão antes de costurar.

Processando o vídeo

Capturar conteúdo de 360° é apenas a primeira etapa– é necessário muito processamento para converter as imagens brutas da câmera que capturamos nos ativos finais que você vê no HoloTour. Quando voltamos para casa, precisávamos pegar o vídeo de 14 feeds de câmera diferentes e transformá-lo em um único vídeo contínuo com artefatos mínimos. Nossa equipe de arte usou várias ferramentas para combinar e polir as imagens capturadas e desenvolvemos um pipeline para otimizar o processamento o máximo possível. As imagens tiveram que ser costuradas, corrigidas por cores e, em seguida, compostas para remover elementos e artefatos distrativos ou para adicionar bolsões suplementares de vida e movimento, tudo com o objetivo de melhorar essa sensação de realmente estar lá.

Um corte áspero de imagens do Panteão antes de costurar.

Um corte áspero de imagens do Panteão antes de costurar.

Para unir os vídeos, usamos uma ferramenta chamada PTGui e a integramos ao pipeline de processamento. Como parte do pós-processamento, extraímos quadros ainda de nossos vídeos e encontramos um padrão de costura que parecia bom para um desses quadros. Em seguida, aplicamos esse padrão a um plug-in personalizado que escrevemos que permitia aos nossos artistas de vídeo ajustar e ajustar o padrão de costura diretamente enquanto compunha em After Effects.

Captura de tela de PTGui mostrando as imagens costuradas do Panteão.

Captura de tela de PTGui mostrando as imagens costuradas do Panteão.

Reprodução de vídeo

Após a conclusão do processamento das imagens, temos um vídeo contínuo, mas é extraordinariamente grande, em torno da resolução de 8K. A decodificação de vídeo é cara e há muito poucos computadores que podem lidar com um vídeo de 8K, então o próximo desafio foi encontrar uma maneira de reproduzir este vídeo no HoloLens. Desenvolvemos uma série de estratégias para evitar o custo da decodificação enquanto ainda fazia com que o usuário se sentisse como se estivesse exibindo todo o vídeo.

A otimização mais fácil é evitar a decodificação de partes do vídeo que não mudam muito. Escrevemos uma ferramenta para identificar áreas em cada cena que têm pouco ou nenhum movimento. Para essas regiões, mostramos uma imagem estática em vez de decodificar um vídeo de cada quadro. Para tornar isso possível, dividimos o vídeo maciço em partes muito menores.

Também garantimos que cada pixel que decodificamos fosse usado com mais eficiência. Experimentamos com técnicas de compactação para reduzir o tamanho do vídeo; dividimos as regiões de vídeo de acordo com os polígonos da geometria em que ela seria projetada; ajustamos UVs e reempacotamos os vídeos com base na quantidade de detalhes de polígonos diferentes incluídos. O resultado desse trabalho é que o que começou como um único vídeo de 8k se transformou em muitas partes que parecem quase ininteligíveis até serem reprojetadas corretamente na cena. Para um desenvolvedor de jogos que entende o mapeamento de textura e o empacotamento UV, isso provavelmente parecerá familiar.

Uma exibição completa do Panteão antes das otimizações.

Uma exibição completa do Panteão antes das otimizações.

A metade direita do Panteão, processada para reprodução de vídeo.

A metade direita do Panteão, processada para reprodução de vídeo.

Exemplo de uma única região de vídeo após a otimização e o empacotamento.

Exemplo de uma única região de vídeo após a otimização e o empacotamento.

Outro truque que usamos foi evitar a decodificação do vídeo que você não está exibindo ativamente. Enquanto estiver no HoloTour, você só poderá ver parte da cena completa em um determinado momento. Decodificaremos apenas vídeos dentro ou fora do seu campo de exibição (FOV). À medida que você gira a cabeça, começamos a reproduzir as regiões do vídeo que agora estão em seu FOV e paramos de reproduzir as que não estão mais dentro dele. A maioria das pessoas nem perceberá que isso está acontecendo, mas se você se virar rapidamente, verá que o vídeo leva um segundo para começar. Enquanto isso, você verá uma imagem estática que, em seguida, desaparece de volta para o vídeo quando estiver pronto.

Para fazer essa estratégia funcionar, desenvolvemos um amplo sistema de reprodução de vídeo. Otimizamos o código de reprodução de baixo nível para tornar a alternância de vídeo extremamente eficiente. Além disso, tivemos que codificar nossos vídeos de uma maneira especial para tornar possível mudar rapidamente para qualquer vídeo a qualquer momento. Esse pipeline de reprodução levou uma quantidade significativa de tempo de desenvolvimento, portanto, o implementamos em estágios. Começamos com um sistema mais simples que era menos eficiente, mas permitimos que designers e artistas trabalhassem na experiência, e lentamente melhoramos para um sistema de reprodução mais robusto que nos permitia enviar na barra de qualidade final. Esse sistema final tinha ferramentas personalizadas que criamos no Unity para configurar o vídeo dentro da cena e monitorar o mecanismo de reprodução.

Recriando objetos de espaço próximo em 3D

Os vídeos compõem a maior parte do que você vê no HoloTour, mas há uma série de objetos 3D que aparecem perto de você, como a pintura na Piazza Navona, a fonte fora do Panteão ou o balão de ar quente que você espera para cenas aéreas. Esses objetos 3D são importantes porque a percepção de profundidade humana é muito boa de perto, mas não muito boa longe. Podemos nos safar com o vídeo à distância, mas para permitir que os usuários andem em torno de seu espaço e sintam que eles estão realmente lá, objetos próximos precisam de profundidade. Essa técnica é semelhante ao tipo de coisa que você pode ver em um museu de história natural — imagine um diorama que tem paisagismo físico, plantas e espécimes animais em primeiro plano, mas recua em uma pintura fosca habilmente mascarada ao fundo.

Alguns objetos são simplesmente ativos 3D que criamos e adicionamos à cena para aprimorar a experiência. A pintura e o balão de ar quente se enquadram nesta categoria porque eles não estavam presentes quando filmamos. Semelhantes aos ativos do jogo, eles foram criados por um artista 3D em nossa equipe e texturizados adequadamente. Nós os colocamos em nossas cenas perto de onde você está, e o mecanismo de jogo pode renderizá-los para as duas exibições do HoloLens para que elas apareçam como um objeto 3D.

Outros ativos, como a fonte fora do Panteão, são objetos reais que existem nos locais onde estamos filmando vídeo, mas para tirar esses objetos do vídeo e para o 3D, temos que fazer várias coisas.

Primeiro, precisamos de informações adicionais sobre cada objeto. Enquanto estava no local para filmar, nossa equipe capturou muitas imagens de referência desses objetos para que tivéssemos imagens detalhadas suficientes para recriar com precisão as texturas. A equipe também realizou uma verificação de fotograma , que constrói um modelo 3D a partir de dezenas de imagens 2D, dando-nos um modelo aproximado do objeto em escala perfeita.

À medida que processamos nossas imagens, objetos que posteriormente serão substituídos por uma representação 3D são removidos do vídeo. O ativo 3D é baseado no modelo de fotograma, mas limpo e simplificado por nossos artistas. Para alguns objetos, podemos usar partes do vídeo, como a textura da água na fonte, mas a maior parte da fonte agora é um objeto 3D, que permite que os usuários percebam a profundidade e andem em torno dele em um espaço limitado na experiência. Ter objetos próximos ao espaço como esse aumenta muito a sensação de realismo e ajuda a aterrar os usuários na localização virtual.

Imagens do panteão com a fonte removida. Ele será substituído por um ativo 3D.

Imagens do panteão com a fonte removida. Ele será substituído por um ativo 3D.

Considerações finais

Obviamente, havia mais para criar esse conteúdo do que o que discutimos aqui. Há algumas cenas que gostamos de chamá-las de "perspectivas impossíveis", incluindo o passeio de balão de ar quente e a luta do gladiador no Coliseu, que adotou uma abordagem mais criativa. Abordaremos isso em um estudo de caso futuro.

Esperamos que compartilhar soluções para alguns dos maiores desafios que tivemos durante a produção seja útil para outros desenvolvedores e que você esteja inspirado a usar algumas dessas técnicas para criar suas próprias experiências imersivas para o HoloLens. (E se você fizer isso, compartilhe-o conosco no Fórum de Desenvolvimento de Aplicativos do HoloLens!)

Sobre os autores

David Haley David Haley é um desenvolvedor sênior que aprendeu mais sobre plataformas de câmera e reprodução de vídeo do que ele pensava ser possível trabalhando no HoloTour. Danny Askew Danny Askew é um artista de vídeo que garantiu que sua jornada por Roma fosse o mais impecável possível.
Jason Syltebo Jason Syltebo é um Designer de áudio que garantiu que você pudesse experimentar a paisagem sonora de todos os destinos visitados, mesmo quando você voltar no tempo. Travis Steiner Travis Steiner é um diretor de design que pesquisou e examinou locais, criou planos de viagem e dirigiu filmagens no local.

Confira também