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

Figurino de Hagrid pesava 30 kg e tinha tubos de água para resfriamento

Robbie Coltrane com o dublê Martin Bayfield na fantasia que o deixava com 2,30 m de altura - Reprodução
Robbie Coltrane com o dublê Martin Bayfield na fantasia que o deixava com 2,30 m de altura Imagem: Reprodução

De Splash, em São Paulo

15/10/2022 04h00

O ator Robbie Coltrane, que morreu nesta semana aos 72 anos, tinha 1,85 m de altura, mas seu personagem em "Harry Potter" tinha 3,5 m. Como eram feitas as gravações para dar a impressão de que ele era o meio-gigante Hagrid?

A ilusão era feita com uma mistura de efeitos especiais, um dublê e um figurino de peso — literalmente! A fantasia pesava 30 kg e era tão quente que precisava de um sistema de resfriamento, com tubos cheios de água gelada.

A ideia de usar um dublê foi de Nick Dudman, responsável pela maquiagem de efeitos especiais na saga. Em uma entrevista para uma edição de colecionador dos filmes, ele explicou:

"No primeiro filme, me disseram: 'Robbie Coltrane vai ser o Hagrid, ótimo. Mas provavelmente vamos ter que inseri-lo digitalmente em cada cena, e vai ser uma das partes mais caras do filme'. Tinha muita preocupação. Então eu sugeri o uso de um dublê para as cenas em que ele está de costas e para as cenas das crianças, em que você só vê metade do corpo do Hagrid."

Eles contrataram Martin Bayfield, que tem 2,09 m de altura. Montar a fantasia não foi nada fácil: nas filmagens ele precisaria aparentar ter 1,40 m a mais do que tinha, mas a equipe não podia correr o risco de aumentá-lo a ponto de seu corpo parecer desproporcional.

Além disso, o diretor Chris Columbus impôs mais um desafio: ele não queria saber como a fantasia era feita para não quebrar a ilusão.

Com o figurino, Bayfield tinha 2,30 m de altura. O restante da ilusão era feito com truques de câmera, utilizando a perspectiva ou cenários menores do que o normal.

Martin Bayfield, dublê de Robbie Coltrane em "Harry Potter" - Reprodução - Reprodução
Martin Bayfield, dublê de Robbie Coltrane em "Harry Potter"
Imagem: Reprodução

Na mesma entrevista, Martin Bayfield relembra que a fantasia foi ficando mais sofisticada em cada filme:

"No começo, a cabeça era o que chamamos de cabeça morta, só uma mistura de fibra de vidro e silicone para que ficasse parecida com a cabeça do Hagrid. Depois, no segundo filme, fizemos um rosto animatrônico. Os olhos e a boca se moviam, e a cabeça começou a ganhar vida."

No terceiro filme, a cabeça do figurino já tinha uma tecnologia de reconhecimento de voz que fazia a boca se mexer conforme o dublê dizia as falas.

O figurino de Hagrid era resfriado com tubos de borracha com água gelada - Reprodução - Reprodução
O figurino de Hagrid era resfriado com tubos de borracha com água gelada
Imagem: Reprodução

Em alguns trechos dos filmes, como a cena final de "Harry Potter e a Pedra Filosofal", quem aparece é Martin Bayfield — e a reação de espanto das crianças com Hagrid é a reação verdadeira dos atores mirins ao verem o dublê na roupa pela primeira vez.

Nick Dudman conta que, além de desenvolver o figurino, eles também tiveram que adaptar o set de filmagens:

"Já que fizemos essa roupa enorme, também tivemos que fazer cadeiras especiais para ele se sentar, que são como réplicas gigantes de cadeiras de diretor. Precisamos garantir que ele consiga transitar pelos corredores e ar pelas portas. Precisamos de uma equipe para ajudá-lo o tempo todo. Temos uma equipe para ajudá-lo a vestir a roupa, e um engenheiro animatrônico para conectar todos os fios e operar o controle que move os olhos e a boca".