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

Ricardo Cavallini

OPINIÃO

Texto em que o autor apresenta e defende suas ideias e opiniões, a partir da interpretação de fatos e dados.

Metaverso: avatar e palco virtual podem ser destinos da sua próxima reunião

Uma das possibilidades de ambiente de reunião virtual proposta pela empresa Gather Town - Reprodução/ gather.town
Uma das possibilidades de ambiente de reunião virtual proposta pela empresa Gather Town Imagem: Reprodução/ gather.town

21/09/2021 04h00

Na pandemia, muita gente precisou aprender a fazer conferências e reuniões por vídeo. Apesar dessas soluções existirem há anos, ficou claro que elas não estavam maduras ainda.

Quando a maioria foi obrigada a ficar em casa a maior parte do tempo, praticamente tudo começou a ser feito a distância. Aulas, reuniões longas, palestras, oficinas, com muita gente, com pouca gente, painéis, shows etc.

Logo todos perceberam que a maior parte das ferramentas eram simples demais para atender necessidades básicas. Questões como "levantar a mão" para falar ou dividir grupos de discussão não eram bem resolvidas na maioria das soluções.

Com a grande demanda, Microsoft, Google e outras empresas colocaram muito esforço em suas soluções. A Zoom, uma startup com menos de 10 anos de vida, ou a ser sinônimo da categoria ("vamos fazer um zoom") e cresceu assustadoramente.

Em 2019, a empresa gerenciava cerca de 10 milhões de participantes por dia. No final de 2020 este número já batia os 350 milhões. Seu valor de mercado também mudou dos cerca de US$ 20 bi em 2019 para US$ 85 bi em 2021.

Isso dito, mesmo com todos esses avanços, as soluções ainda estão bem longe do ideal. O aumento de novas funções trouxe outros desafios de usabilidade e interface e muitas das funções novas ainda precisam de ajustes.

Porém, o fato de estarmos usando tanto este tipo de solução nos mostrou que precisamos de novas soluções. Por melhor que seja, ninguém aguenta ficar oito horas direto em videoconferência, entrando e saindo de reuniões.

O pós-pandemia também trará um cenário novo, com pessoas no escritório (ou na aula), pessoas a distância e times híbridos. Não se trata mais de ter uma boa solução de videoconferência, mas de repensar todo o modelo de trabalho e aula presenciais, remotos e híbridos.

O show de Travis Scott no Fortnite é um bom exemplo de experimentar formatos novos buscando o que cada ambiente tem de bom. Uma imersão e experiência bem mais profunda que uma live tradicional em vídeo.

Entre as novas soluções existem ambientes como a Gather Town, muito similar a jogos colaborativos. Para os mais antigos na rede, seu visual lembra um pouco o Habbo Hotel, plataforma que ainda existe, mas que fez grande sucesso 20 anos atrás.

Para usar, você cria seu avatar e anda nos ambientes como um jogo de plataforma. A diferença é que, quando você se aproxima de alguém, a conexão é realizada e as janelas de vídeo se abrem para vocês conversarem. Como se você estivesse fisicamente no trabalho e alguém chegasse perto de sua mesa para conversar.

Em outro ambiente, um palco com várias cadeiras e puffs na plateia funcionariam como uma palestra. Quer falar também? Suba no palco e fale para todos escutarem. Por simularem a lógica do ambiente físico, a interação fica mais simples.

Escrevendo aqui pode parecer meio confuso, mas é muito mais simples e intuitivo que o gerenciamento das soluções atuais.

Metaverso

A palavra metaverso começa a ganhar tração. Cunhada em 1992 no livro de ficção Snow Crash, de Neal Stephenson, ela se refere a convergência do ambiente real e virtual, onde pessoas compartilham espaços online usando avatares.

Como empresa líder no segmento de realidade virtual, o Facebook lançou em agosto a versão beta de sua conferência virtual. Para funcionar, o Oculus Horizon Workrooms precisa do óculos de realidade virtual da própria empresa, o Oculus Quest 2.

Como nem todo mundo tem o aparelho, a solução permite que pessoas usando soluções tradicionais apareçam em um telão do espaço virtual, e estas podem ver um vídeo do ambiente virtual, como se assistissem a um jogo.

Apesar de ser voltado para reuniões de trabalho, o Horizon pode ser a porta de entrada para virar a versão virtual do Facebook.

De olho nesta tendência, a Zoom anunciou agora em setembro que sua função de quadro branco estará ível dentro do Horizon, desta forma, em vez de usar o mouse para escrever na quadro, você usa sua própria mão.

Para Ricardo Laganaro, premiado diretor brasileiro e sócio do estúdio ARVORE Experiências Imersivas, este tipo de solução é bastante útil em algumas situações.

"Já usamos corriqueiramente em duas frentes. A primeira é mais específica para o nosso trabalho, que é prototipar experiências virtuais. Ter todos juntos trabalhando coletivamente no mundo que estamos criando é muito mais produtivo do que fazer em papel para depois ar para o ambiente virtual. A segunda frente é para reuniões. Nem sempre é o ideal, mas o som espacial e outras características do ambiente virtual torna o momento muito mais agradável, principalmente em tempos de pandemia onde todos ficaram distantes fisicamente por tanto tempo. Para nós, para muitas situações, é um ponto sem retorno", diz.

Obviamente, os óculos atuais precisam evoluir, ficar mais leves, mais confortáveis, sua bateria durar mais e mais íveis (financeiramente falando), mas esta evolução tecnológica é natural e pode demorar menos do que a maioria de nós imagina.

De qualquer forma, não precisamos de uma solução que resolva todas as necessidades e todas as interações possíveis. Precisamos de novas soluções. A videoconferência não matou o WhatsApp, assim como o metaverso não precisa matar as outras formas de interação.