Caso prático - HoloTour
O HoloTour para Microsoft HoloLens proporciona passeios pessoais 3D envolventes de localizações icónicas em todo o mundo. Como descobriram os designers, artistas, produtores, designers de áudio e programadores que trabalham neste projeto, criar uma composição 3D convincentemente real de uma localização conhecida requer uma mistura única de assistente criativo e tecnológico. Este caso de estudo irá explicar o processo de captura e criação do conteúdo utilizado para o HoloTour.
A tecnologia
Com o HoloTour, queríamos permitir que as pessoas visitassem alguns dos destinos mais incríveis do mundo, como as ruínas de Machu Picchu no Peru ou a Piazza Navona moderna em Itália, diretamente das suas próprias salas de estar. A nossa equipa fez dele o objetivo do HoloTour de "fazer-te sentir que estás mesmo lá". A experiência precisava de ser mais do que apenas imagens ou vídeos. Ao tirar partido da tecnologia exclusiva de visualização, controlo e áudio do HoloLens, acreditámos que poderíamos transportá-lo virtualmente para outro local. Teríamos de capturar as vistas, os sons e a geometria tridimensional de todos os locais que visitámos e, em seguida, recriar isso na nossa aplicação.
Para tal, precisávamos de uma câmara de 360° com captura de áudio direcional. Precisava de capturar em alta resolução, para que as imagens parecessem nítidas quando reproduzidas num HoloLens e as câmaras teriam de ser posicionadas juntas para minimizar a costura de artefactos. Queríamos cobertura esférica completa, não só ao longo do horizonte, mas também acima e abaixo de si. A plataforma também precisava de ser portátil para que pudéssemos levá-la por todo o mundo. Avaliámos as opções disponíveis fora da prateleira e percebemos que simplesmente não eram suficientemente boas para perceber a nossa visão, seja devido à resolução, ao custo ou ao tamanho. Se não conseguíamos encontrar uma câmara que satisfizesse as nossas necessidades, teríamos de construir uma nós mesmos.
Criar a plataforma
A primeira versão, feita a partir de papelão, velcro, fita adesiva e 14 câmaras GoPro, era algo de que o MacGyver se orgulharia. Depois de rever tudo, desde soluções de gama baixa a plataformas fabricadas personalizadas, as câmaras GoPro acabaram por ser a melhor opção para nós porque eram pequenas, acessíveis e tinham armazenamento de memória fácil de utilizar. O fator de forma pequena foi especialmente importante porque nos permitiu colocar câmaras bastante próximas, quanto menor for a distância entre as câmaras, menor será a costura dos artefactos. A nossa disposição exclusiva da câmara permitiu-nos obter cobertura total da esfera e sobreposição suficiente para alinhar câmaras de forma inteligente e suavizar alguns artefactos durante o processo de costura.
Tirar partido das capacidades de som espacial no HoloLens é fundamental para criar uma experiência envolvente convincentemente real. Utilizámos uma matriz de quatro microfones situada sob as câmaras do tripé, que captaria som da localização da nossa câmara em quatro direcções, dando-nos informações suficientes para criar sons espaciais nas nossas cenas.
A nossa câmara de 360° está preparada para filmar fora do Panteão.
Testámos a nossa plataforma caseira ao levá-la até Rattlesnake Ridge, perto de Seattle, capturando a paisagem no topo da caminhada. O resultado, embora significativamente menos polido do que as localizações que vê hoje no HoloTour, deu-nos confiança de que o nosso design de plataforma era bom o suficiente para te fazer sentir como se estivesses realmente lá.
Atualizámos a nossa plataforma de Velcro e cartão para uma câmara impressa em 3D e comprámos baterias externas para as câmaras GoPro para simplificar a gestão da bateria. Em seguida, fizemos um teste mais extenso, viajando até São Francisco para criar um passeio em miniatura pela costa da cidade e pela icónica ponte Golden Gate. Esta plataforma de câmara é o que utilizámos para a maioria das nossas capturas das localizações que visita no HoloTour.
A câmara de 360° filmando em Machu Picchu.
Nos bastidores
Antes das filmagens, precisávamos de descobrir quais os locais que queríamos incluir na nossa digressão virtual. Roma foi o primeiro local que pretendíamos enviar e queríamos acertar, então decidimos fazer uma viagem de scouting com antecedência. Enviámos uma equipa de seis pessoas, incluindo artistas, designers e produtores, para uma visita presencial aos sites que estávamos a considerar. A viagem demorou cerca de 9 dias – 2,5 para viagem, o resto para filmagens. (Para Machu Picchu optámos por não fazer uma viagem de escuteiros, pesquisando com antecedência e reservando alguns dias de memória intermédia para filmagens.)
Enquanto estava em Roma, a equipa tirou fotos de cada área e observou factos interessantes, bem como considerações práticas, como o quão difícil é viajar para cada local e como seria difícil filmar devido a multidões ou restrições. Isto pode parecer umas férias, mas é muito trabalho. Os dias começaram de manhã cedo e iam sem parar até à noite. Todas as noites, eram carregadas imagens para a equipa de Seattle rever.
A nossa equipa de captura em Roma.
Após a conclusão da viagem de escuteiros, foi feito um plano final para as filmagens reais. Isto exigia uma lista detalhada de onde íamos filmar, em que dia e a que horas. Todos os dias no exterior é caro, por isso estas viagens precisavam de ser eficientes. Reservamos guias e processadores em Roma para nos ajudar e totalmente usados todos os dias, desde antes do nascer do sol até depois do pôr-do-sol. Temos de obter as melhores imagens possíveis para te fazer sentir como se estivesses lá.
Capturar o vídeo
Fazer algumas tarefas simples durante a captura pode tornar o pós-processamento muito mais fácil. Por exemplo, sempre que coser imagens de várias câmaras, acaba com artefactos visuais porque cada câmara tem uma vista ligeiramente diferente. Quanto mais próximos forem os objetos da câmara, maior será a diferença entre as vistas e maior será a costura dos artefactos. Eis uma forma fácil de visualizar o problema: mantenha o polegar à frente do rosto e olhe-o apenas com um olho. Agora, mude de olhos. Verá que o polegar parece mover-se em relação ao fundo. Se mantiver o polegar mais afastado do rosto e repetir a experimentação, o polegar parecerá mover-se menos. Esse movimento aparente é semelhante ao problema de costura que enfrentamos: os seus olhos, como as nossas câmaras, não vêem exactamente a mesma imagem porque estão separados por uma pequena distância.
Como é muito mais fácil evitar os piores artefactos durante as filmagens do que corrigi-los no pós-processamento, tentámos manter as pessoas e as coisas longe da câmara na esperança de podermos eliminar a necessidade de coser objetos de grande plano. Manter uma grande clareira à volta da nossa câmara foi provavelmente um dos maiores desafios que tivemos durante as filmagens e tivemos de ser criativos para que funcionasse. Trabalhar com guias locais foi uma grande ajuda na gestão de multidões, mas também descobrimos que utilizar sinais e, por vezes, pequenos cones ou sacos de feijão, para marcar o nosso espaço de filmagem foi razoavelmente eficaz, especialmente porque só precisávamos de obter uma pequena quantidade de imagens em cada local. Muitas vezes, a melhor maneira de obter uma boa captura era chegar muito cedo de manhã, antes que a maioria das pessoas aparecesse.
Algumas outras técnicas de captura úteis vêm directamente das práticas cinematográficas tradicionais. Por exemplo, utilizámos um cartão de correção de cores em todas as nossas câmaras e capturamos fotografias de referência de texturas e objetos de que poderemos precisar mais tarde.
Um corte áspero de imagens do Panteão antes de coser.
Processar o vídeo
Capturar conteúdo de 360° é apenas o primeiro passo: é necessário muito processamento para converter as imagens de câmara não processadas capturadas nos recursos finais que vê no HoloTour. Quando voltámos para casa, precisávamos de tirar o vídeo de 14 feeds de câmara diferentes e transformá-lo num único vídeo contínuo com artefactos mínimos. A nossa equipa de arte utilizou 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 de ser costuradas em conjunto, a cor corrigida e, em seguida, compostas para remover elementos e artefactos distrativos ou para adicionar bolsos 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 coser.
Para coser os vídeos, utilizámos uma ferramenta chamada PTGui e integrámo-la no nosso pipeline de processamento. Como parte do pós-processamento, extraímos fotogramas dos nossos vídeos e encontrámos um padrão de costura que parecia bom para uma dessas molduras. Em seguida, aplicámos esse padrão a um plug-in personalizado que escrevemos que permitiu aos nossos artistas de vídeo ajustar e ajustar o padrão de costura diretamente enquanto composicionamos em Efeitos Após.
Captura de ecrã do PTGui a mostrar as imagens do Panteão costuradas.
Reproduzir vídeo
Após a conclusão do processamento das imagens, temos um vídeo totalmente integrado, mas é extraordinariamente grande— cerca de 8K de resolução. A descodificação de vídeo é dispendiosa e existem muito poucos computadores que conseguem lidar com um vídeo 8K, pelo que o próximo desafio foi encontrar uma forma de reproduzir este vídeo novamente no HoloLens. Desenvolvemos várias estratégias para evitar o custo da descodificação, fazendo com que o utilizador se sinta como se estivesse a ver todo o vídeo.
A otimização mais fácil é evitar a descodificaçã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 descodificar um vídeo em cada frame. Para tornar isto possível, dividimos o vídeo maciço em segmentos muito mais pequenos.
Também garantimos que todos os pixels que descodificámos eram utilizados de forma mais eficaz. Experimentámos técnicas de compressã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 seria projetado; ajustámos as UVs e reembalámos os vídeos com base na quantidade de detalhes incluídos em diferentes polígonos. O resultado deste trabalho é que o que começou como um único vídeo de 8k transformou-se em muitos segmentos que parecem quase ininteligíveis até serem corretamente reprotecionados em cena. Para um programador de jogos que compreende o mapeamento de texturas e as embalagens UV, isto provavelmente irá parecer familiar.
Uma vista completa do Panteão antes das otimizações.
A metade direita do Panteão, processada para reprodução de vídeo.
Exemplo de uma única região de vídeo após otimização e embalagem.
Outro truque que utilizámos foi evitar a descodificação de vídeo que não está a ver ativamente. Enquanto estiver no HoloTour, só pode ver parte da cena completa a qualquer momento. Apenas descodificamos vídeos dentro ou fora do seu campo de vista (FOV). À medida que roda a cabeça, começamos a reproduzir as regiões do vídeo que estão agora no seu FOV e paramos de reproduzir aquelas que já não estão dentro do mesmo. A maioria das pessoas nem repara que isto está a acontecer, mas se mudar rapidamente, verá que o vídeo demora um segundo a começar. Entretanto, verá uma imagem estática que, depois, volta a aparecer em vídeo assim que estiver pronto.
Para que esta estratégia funcione, desenvolvemos um extenso sistema de reprodução de vídeo. Otimizámos o código de reprodução de baixo nível para tornar a mudança de vídeo extremamente eficiente. Além disso, tivemos de codificar os nossos vídeos de uma forma especial para que fosse possível mudar rapidamente para qualquer vídeo em qualquer altura. Este pipeline de reprodução demorou uma quantidade significativa de tempo de desenvolvimento, pelo que o implementámos por fases. Começámos com um sistema mais simples, menos eficiente, mas permitimos que designers e artistas trabalhassem na experiência, e lentamente melhorámo-lo para um sistema de reprodução mais robusto que nos permitia enviar na barra de qualidade final. Este sistema final tinha ferramentas personalizadas que criámos no Unity para configurar o vídeo no local e monitorizar o motor de reprodução.
Recriar objetos quase espaciais em 3D
Os vídeos compõem a maior parte do que se vê no HoloTour, mas há uma série de objetos 3D que aparecem perto de si, como a pintura na Piazza Navona, a fonte fora do Panteão, ou o balão de ar quente que você está em cenas aéreas. Estes objetos 3D são importantes porque a percepção da profundidade humana é muito boa de perto, mas não muito boa longe. Podemos safar-nos com o vídeo à distância, mas para permitir que os utilizadores andem pelo seu espaço e sintam que estão realmente lá, os objetos próximos precisam de profundidade. Esta técnica é semelhante ao tipo de coisa que se pode ver num museu de história natural: imagine um diorama que tenha paisagismo físico, plantas e espécimes de animais em primeiro plano, mas recua para uma pintura mate inteligentemente mascarada ao fundo.
Alguns objetos são simplesmente recursos 3D que criámos e adicionámos à cena para melhorar a experiência. A pintura e o balão de ar quente caem nesta categoria porque não estavam presentes quando filmámos. À semelhança dos recursos do jogo, foram criados por um artista 3D na nossa equipa e texturizados adequadamente. Colocamo-los nas nossas cenas perto da sua posição e o motor de jogo pode compor os dois ecrãs do HoloLens para que apareçam como um objeto 3D.
Outros elementos, como a fonte fora do Panteão, são objetos reais que existem nos locais onde estamos a filmar vídeos, mas para tirar estes objetos do vídeo e para o 3D, temos de fazer várias coisas.
Primeiro, precisamos de informações adicionais sobre cada objeto. Enquanto estávamos no local para filmar, a nossa equipa captou muitas imagens de referência destes objetos para que tivéssemos imagens detalhadas suficientes para recriar com precisão as texturas. A equipa também realizou uma análise de fotogramametria , que constrói um modelo 3D a partir de dezenas de imagens 2D, dando-nos um modelo áspero do objeto à escala perfeita.
À medida que processamos as nossas imagens, os objetos que serão posteriormente substituídos por uma representação 3D são removidos do vídeo. O recurso 3D baseia-se no modelo de fotograma, mas limpo e simplificado pelos nossos artistas. Para alguns objetos, podemos utilizar partes do vídeo (como a textura da água na fonte), mas a maior parte da fonte é agora um objeto 3D, o que permite que os utilizadores percebam a profundidade e andem à sua volta num espaço limitado na experiência. Ter objetos quase espaciais como este aumenta consideravelmente a sensação de realismo e ajuda a colocar os utilizadores na localização virtual.
Imagens do panteão com a fonte removida. Será substituído por um recurso 3D.
Pensamentos finais
Obviamente, havia mais para criar este conteúdo do que aquilo que discutimos aqui. Há algumas cenas ( gostamos de as chamar de "perspetivas impossíveis" — incluindo o passeio de balão de ar quente e a luta de gladiadores no Coliseu, que tomou uma abordagem mais criativa. Abordaremos isto num futuro caso de estudo.
Esperamos que a partilha de soluções para alguns dos maiores desafios que tivemos durante a produção seja útil para outros programadores e que esteja inspirado a utilizar algumas destas técnicas para criar as suas próprias experiências envolventes para o HoloLens. (Se o fizer, certifique-se de que o partilha connosco no fórum de Desenvolvimento de Aplicações do HoloLens!)
Sobre os autores
David Haley é um Programador Sénior que aprendeu mais sobre plataformas de câmara e reprodução de vídeo do que pensava ser possível ao trabalhar no HoloTour. | Danny Askew é um artista de vídeo que se certificou de que a sua viagem por Roma era o mais impecável possível. | ||
Jason Syltebo é um audio Designer que se certificou de que podia experimentar a paisagem sonora de todos os destinos que visita, mesmo quando regressa no tempo. | Travis Steiner é um Diretor de Design que investigou e examinou localizações, criou planos de viagem e dirigiu filmagens no local. |