;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Como a Globo usou onça 3D, drones e vídeo 8k para recriar Pantanal

Cena da novela Pantanal (2022) - reprodução/Globo
Cena da novela Pantanal (2022) Imagem: reprodução/Globo

Marcella Duarte

Colaboração para Tilt, em São Paulo

08/04/2022 04h00Atualizada em 22/05/2022 16h49

A novela Pantanal até pode ter se inspirado em um sucesso do ado - mas, na hora de gravar, olhou para o futuro. A nova aposta da Rede Globo para o horário das 21h fez uso extensivo de novas tecnologias cinematográficas, como animais criados por computação gráfica, transmissão em 8K e filmagem com drones.

É um grande avanço em relação à primeira versão da novela, exibida pela antiga TV Manchete em 1990. Nela, todos os bichos eram reais e as tomadas aéreas eram mais raras, captadas com aeroplanos e balões.

Na trama, a tecnologia também avançou: antes os fazendeiros e peões se comunicavam via rádio; agora, usam as redes sociais.

Cena da novela Pantanal (2022) - Reprodução/Globo - Reprodução/Globo
Imagem: Reprodução/Globo

Uma sucuri entra em cena

A nova Pantanal ainda conta com alguns animais "de carne e osso" nos sets de gravação. Mas alguns deles foram reproduzidos por computação gráfica, com modelos 3D. Até agora, já apareceram em cena uma onça-pintada, uma enorme cobra sucuri e um boi "digitais".

"Eles foram estudados profundamente, e, para tê-los em cena, foi utilizada a rotoscopia, técnica que tem como referência uma imagem captada em vídeo, redesenhada quadro a quadro, resultando, então, na composição", explica a emissora.

Uma curiosidade: para uma cena de 8 segundos utilizando a técnica de rotoscopia para inserir um animal em um ambiente interno, são necessárias, em média, 48 horas de trabalho em efeitos visuais.

Além da rotoscopia, é preciso modelar o animal tridimensionalmente no computador, criando um "esqueleto" virtual com pontos de articulação que possam ser animados individualmente. Assim, ele pode "atuar" do jeito que a cena exige.

Cerca de dez espécies de aves também foram digitalizadas, para preencher os enormes ninhais nas árvores, nos planos mais abertos.

Cena da novela Pantanal (2022) - Reprodução/Rede Globo - Reprodução/Rede Globo
Imagem: Reprodução/Rede Globo

Controlar a chuva

A computação gráfica também foi aplicada para superar e reproduzir fenômenos naturais, como as mudanças climáticas. Na época da gravação da novela, o Pantanal estava ando por um grave período de seca. Os efeitos visuais, então, ficaram responsáveis por inserir as áreas alagadas, características da região,

Vários outros aspectos da natureza também foram realçados digitalmente, como o céu, as chuvas e até a vegetação.

Esses recursos também são úteis para preservar a segurança do elenco. Em algumas cenas, por exemplo, foram usadas técnicas de aproximação e de implementação para transportar imagens de animais reais, captadas no Pantanal, e inseri-las em cenários internos, ocupado por atores.

Cena da novela Pantanal (2022) - Reprodução/Globo - Reprodução/Globo
Imagem: Reprodução/Globo

Pantanal visto de cima

Logo nas primeiras cenas, belas imagens panorâmicas mostraram uma estrada de terra em meio ao verde da vegetação, o voo dos pássaros e o movimento das boiadas em câmera lenta.

Enquanto na primeira versão este tipo de cena foi gravada com cinegrafistas em pequenos aviões ou balões, no remake os takes aéreos foram feitos por modernos drones.

"Foram vários dias de gravação, e a quantidade de drones variou de acordo com as necessidades de cada cena", informou Globo a Tilt.

A emissora confirma que sua frota utiliza o mesmo modelo de drone - mas não revela qual. Antes das gravações, foram realizados diversos testes, "para garantir que a qualidade da câmera e do sensor desse modelo fossem compatíveis com o processo de finalização do material em 8K."

Cena da novela Pantanal (2022) - Reprodução/Globo - Reprodução/Globo
Imagem: Reprodução/Globo

Mais detalhes, mais beleza

O termo "8K" significa uma resolução de 7.680 por 4.320 pixels. É uma definição quatro vezes maior que a do padrão 4K e 16 vezes maior que a HD. Isso significa imagens muito mais nítidas, com riqueza de detalhes.

O primeiro capítulo, com 1h30 de duração, foi totalmente produzido em 8K, em um trabalho que levou cerca de sete meses. Somente para esse episódio, foram processados quase 15 TB de material bruto. Isso exigiu redes internas de fibra óptica com velocidade de 100 GB por segundo.

"Na captação, foram utilizados equipamentos em 8K, 6K e 4K. Mas, no processo de pós-produção, garantimos que todos os takes do primeiro capítulo estivessem em 8K", explicou a Centra de Comunicação da emissora.

A estreia foi transmitida pela plataforma de streaming Globoplay em 8K, inaugurando a utilização desse formato em novelas, e com áudio surround Dolby Atmos, que ou por um processo de mixagem. A intenção era levar uma experiência mais imersiva para os espectadores.

"A iniciativa da transmissão nessa qualidade de imagem abre portas para que a tecnologia seja amplamente adotada no futuro, à medida que os televisores com capacidade de leitura de 8K em a ter mais penetração nos domicílios brasileiros", aponta a emissora.

Vale lembrar que, para conferir o episódio em 8K e som Dolby Atmos, é preciso não apenas uma televisão compatível com essas configurações (de preferência, com tela a partir de 75 polegadas), mas também ter uma conexão de internet de boa qualidade (no mínimo, 30 MB por segundo). Assim, o vídeo pode rodar sem engasgos na qualidade máxima.