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

Maquiagens com Ilusão de ótica viralizam na web e dão nó na sua cabeça

Maquiadora Mimi Choi virou um sucesso nas redes sociais por criar ilusões de ótica super-reais  - Reprodução/Instagram
Maquiadora Mimi Choi virou um sucesso nas redes sociais por criar ilusões de ótica super-reais Imagem: Reprodução/Instagram

Nicole D'Almeida

Colaboração para Tilt

14/07/2020 16h17

Sem tempo, irmão

  • Chinesa trocou jardim de infância por maquiagens surrealistas
  • Ela descobriu seu jeito de fazer arte durante um Halloween
  • Trabalho de Choi foi uma das sensações do Met Gala do ano ado
  • Ela compartilha suas obras de arte com mais de 1,3 milhão de seguidores no Instagram

Se para você a maquiagem serve só para valorizar sua beleza natural, Mimi Choi vai fazer você rever seus conceitos. A profissional virou um sucesso nas redes sociais por criar ilusões de ótica super-reais em seu próprio corpo e no de outras pessoas.

Nascida em Macau, na China, e baseada em Vancouver, no Canadá, Choi nem sempre foi maquiadora. Antes de descobrir o universo dos pincéis, foi professora de pré-escola. Em entrevista ao "Bored Panda", a maquiadora contou que sentia que sua criatividade estava sendo desperdiçada e por isso decidiu largar as salas de aula e se aventurar no mundo da maquiagem.

Mimi Choi se matriculou, então, em uma faculdade de beleza local. Mas foi no Halloween que ela descobriu seu jeito próprio de fazer arte. "Queria fazer algo diferente em 31 de outubro, então dei uma olhada no Instagram e achei uma foto de uma mulher que parecia estar com a face partida", disse. A maquiagem fez o maior sucesso nas redes sociais.

O trabalho de Choi foi uma das sensações do Met Gala, baile famoso entre celebridades, no ano ado. Ela colocou "cinco olhos extras" no rosto do ator Ezra Miller.

Putting 's on Ezra Miller for Met Gala 2019 "Camp: Notes on Fashion" — Swipe for unseen #BTS! @themetgalaofficial @metmuseum ??? ??? This time last year, I had one of the most memorable career moments prepping Ezra for the Met with a signature illusion. I went into the job with the sole goals of delivering something that made Ezra feel special and making sure that the makeup would last for 24+ hours. Ezra and I had only talked on the phone for 15 minutes a week prior to the event — he said he loved the Kaleidoscope Eyes I painted on myself in 2018 but also trusted me to do whatever I felt would suit him best. We didn't have time for a makeup trial, and with an open mind and a spontaneous spirit, we came up with this look together at 3AM on the day of the event while bopping to music and eating chocolates. ??? ??? This year's Met Gala was supposed to happen today but has been postponed due to the pandemic. However, I know once everything opens up again, we will come back stronger, better and happier than ever before. This period is one that allows us to rejuvenate, recharge and reconsider what truly is the most important in our lives. It is a period that is necessary for growth. ????? ??? Makeup: me???????????? Makeup assist: @paulalanzador?????????????? Mask: @kmeffectsltd ???????? Hair: @samiknighthair ???????? Styling: @jasonrembert ?????????????? Nails: @naominailsnyc ?????????? Designer: @burberry by @riccardotisci17 ???

Uma publicação compartilhada por ???? ???? (@mimles) em

Choi compartilha suas obras de arte ilusionistas com mais de 1,3 milhão de seguidores no Instagram. Ela tira suas ideias de obras de arte surrealista e de visões que tem durante episódios de paralisia do sono.

Confira algumas de suas obras: