;(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

Chaves não morreu? Deepfake traz personagem de volta à vida em comercial

DishLatino
Imagem: DishLatino

Barbara Mannara

Colaboração para Tilt, no Rio de Janeiro

25/03/2022 15h07

O icônico personagem Chaves reapareceu nas telas esta semana, emocionando fãs da produção mexicana. Mas não se trata de um remake nostálgico da série. A tecnologia deepfake foi a responsável por trazer de volta "à vida" o amado personagem, interpretado originalmente por Roberto Gómez Bolaños, falecido há oito anos.

O recurso super-realista foi aplicado no comercial "Icons", da DishLatino, um serviço de streaming em espanhol e inglês focado em famílias bilíngues que vivem nos Estados Unidos. Ele faz parte da campanha chamada "Latino Like You", anunciada na última terça-feira (23), para promover o orgulho destes povos.

chaves - DishLatino - DishLatino
Imagem: DishLatino

Rumores na internet inicialmente apontavam que a produção poderia ser um documentário sobre Chaves. Mas a plataforma sequer possui a série produzida pela Televisa em seu catálogo. Reviver o personagem foi uma maneira de homenagear as raízes e cultura latina.

"Na DishLatino nos sentimos afortunados por servir como um elo entre a comunidade hispânica e os elementos culturais que são importantes para nós, como nossa língua, nosso entretenimento e nossas tradições", contou Alfredo Rodríguez, vice-presidente do Centro Latino de Excelência da Dish Network.

Chaves "de volta"

O comercial apresenta lado a lado Chaves e Eugenio Derbez, um dos atores de comédia mexicanos mais conhecidos da atualidade. Foi filmado na Cidade do México, com direção de Matias Moltrasio. O vídeo, de cerca de um minuto, começa com Chaves dentro da TV, como em um episódio tradicional da série.

chaves - DishLatino - DishLatino
Imagem: DishLatino

Mas logo o personagem começa a interagir com Derbez, que está sentado no sofá:

- "Eugenio, continua me assistindo como quando era um menino?"

- "Chaves? Claro, você tem me acompanhado por toda a vida."

Aí vem a surpresa: Chaves sai correndo de dentro da tela para a vida real, em "carne e osso". E não poderia faltar sua fala mais esperada: "Isso, isso, isso".

chaves - DishLatino - DishLatino
Imagem: DishLatino

Para produzir o vídeo, não foi utilizado material gravado do ator Bolaños. Tudo foi criado do zero pela tecnologia. Mas, mesmo sendo um rosto digital, a presença do personagem emocionou as gerações que cresceram com a série.

Veja o comercial na íntegra (em espanhol):

"Fico espantado como, por meio da tecnologia, dois ícones da nossa cultura podem se reencontrar. Meu pai tinha grande iração pela coragem de Eugenio de fazer coisas novas. Eles fazem parte do longo caminho que a comunidade latina tem percorrido", disse Roberto Gómez Fernández, filho de Bolaños e diretor executivo do Grupo Chespirito. "Sinto uma enorme iração pelo trabalho do nosso povo, e me enche de orgulho fazer parte dele".

Conhecido como Chespirito, o ator faleceu em 2014 deixando uma legião de fãs saudosos.

Afinal, como foi possível fazer um Chaves tão realista?

Para entender melhor, o deepfake é um recurso avançado de inteligência artificial (IA) que permite recriar ou alterar digitalmente o rosto de uma pessoa. É possível modificar características faciais de forma realista, mesmo durante movimentos, com uma aplicação tridimensional em vídeos e fotos.

No caso do comercial "Icons", os efeitos especiais foram produzidos pela agência norte-americana Right Cut e pela inglesa Metaphysic. Os profissionais levaram mais de 1.000 horas — cerca de 41 dias — de trabalho para "fazer" o rosto de Chaves.

O mesmo tipo de recurso bombou na internet no ano ado, com vídeos divulgados no TikTok mostrando uma versão um tanto "fanfarrona" de Tom Cruise. O sósia, gerado digitalmente, foi uma criação do artista de efeitos visuais e inteligência artificial (IA) Chris Umé. O ator na montagem era, originalmente, o comediante Miles Fisher.

Mais recentemente, o presidente ucraniano Volodymyr Zelensky foi vítima de um deepfake que virou arma de guerra. Nele, Zelensky declarava rendição à Rússia e pedia para os soldados voltarem para suas casas. Mal feito, foi rapidamente desmascarado e removido das redes sociais.

* Com informações de do La Noticia