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

Artista cria "minimundos" em caixas de fósforos, tênis e mais objetos

Baianas em uma caixa de fósforo é exemplo de uma das delicadas e festivas obras de Willi de Carvalho - Arquivo pessoal
Baianas em uma caixa de fósforo é exemplo de uma das delicadas e festivas obras de Willi de Carvalho Imagem: Arquivo pessoal

Carol Scolforo

Colaboração para Nossa

23/06/2020 04h00

Will de Carvalho

Will de Carvalho

QUEM É

Willi de Carvalho é artista popular mineiro autodidata, criador de cenários que levam detalhes em miniaturas, usando materiais reciclados, cores e temas regionais.

"Já falaram muitas coisas sobre minha arte: que sou neobarroco, naïf, carnavalesco das miniaturas... acho que sou apenas um artista que recebe a arte", diz com simplicidade o mineiro Willi de Carvalho, baseado em Belo Horizonte.

Seu trabalho conta histórias da vida cotidiana brasileira, exalta os festejos e traz literatura com uma porção de detalhes incríveis. Quanto mais minúcias, melhor para ele - e para nós. "Já fiz uma arquibancada de circo com 80 bonecos. Cada um deles levou meia hora. As mulheres são difíceis, porque detalho bem cada uma delas", ri.

As obras carregam memória afetiva e uma dose de teatro - no ado, ele foi cenógrafo e antes de projetar os cenários, as criava em miniaturas. "Tudo começou em 1997, quando conheci Hélio Leite e fiquei encantado: ele fazia teatro dentro de uma caixa de fósforos. Cada caixinha contava uma história. Ele me incentivou a fazer como ele e gostei. A partir disso, desenvolvi coisas minhas e maiores em tamanho, sem imitá-lo", lembra.

Obras de Willi de Carvalho

Como nascem as criações

A arte de Willi pousa sobre papel paraná com diversos materiais. "Uso de tudo, até tela rasgada. Minha esposa, Clélia Lemos, encontra objetos interessantes na rua e me estimula a reutilizar. Misturo isso a pedrarias, fita colorida, papelão e papietagem".

Nas cenas criadas entram os temas regionais, que resgatam o sertão e se inspiram no folclore de Montes Claros, onde nasceu. "Já li três vezes Grande Sertão, Veredas. Comecei a compreender só na segunda vez. Fiz muitas coisas com base no livro de Guimarães Rosa".

Obras premiadas

Com o tempo, vieram as exposições e prêmios. E ainda o olhar maravilhado de estrangeiros, que levam sua arte para o exterior. Willi ganhou o mundo - recentemente teve uma obra leiloada ao lado de um quadro de Vik Muniz, em Nova York. Já a peça mais trabalhosa levou 15 dias para ser finalizada. Intitulada Festas Brasileiras, ganhou menção na Bienal de Arte Naif de Piracicaba, SP.

Com a pandemia, muitas de suas criações estão esperando um novo dono. No momento, ele dá vazão às encomendas.

"O pessoal gosta muito das festas populares brasileiras que faço. Fico muito feliz em ter colecionadores do meu trabalho", conta o autodidata.

No último ano, a escola de samba União da Ilha fez uma homenagem a sua arte. Willi, aos 54 anos, realizou um sonho e planeja os próximos, sem ficar parado. "Se aquele sertanejo que eu era no ado me visse alçando voo assim...Só me falta fazer um livro. Já estamos fazendo", ri.

Minha arte combina com...

Van Gogh

Amo amarelo e era a cor preferida de Van Gogh. Meu trabalho é estático, mas causa um movimento no olhar assim como elas.

Volpi

Gosto do conjunto da obra dele. Alfredo Volpi é muito mais que o artista das bandeirinhas.