Takafumi Horiuchi

Desenvolvimento de um sistema de RV para crianças criarem protótipos de objetos interativos

Visão geral

Smart Codesign VR é uma plataforma protótipo para construir e testar “objetos inteligentes” interativos em realidade virtual. Os jogadores escolhem três cartas, uma de ambiente, uma de entrada e uma de saída, e usam movimentos do corpo para definir quando um objeto responde e o que ele faz. Podem colocar o objeto virtual concluído em um parque e testar seu comportamento.

O projeto se baseia no SNaP (The Smart Nature Protagonists), um jogo de tabuleiro desenvolvido pelo i3Lab do Politecnico di Milano. No SNaP, as crianças combinam cartas para inventar objetos inteligentes e os descrevem em uma frase no papel. Este projeto buscou transformar essas descrições em objetos virtuais que as crianças pudessem montar e com os quais pudessem interagir por meio de seus próprios movimentos.

Nossa equipe de quatro pessoas projetou e implementou o sistema como trabalho final da disciplina Advanced User Interfaces no Politecnico di Milano, no ano letivo de 2020–21. Ele foi pensado para crianças de 11 a 13 anos, com atenção especial às crianças com transtornos do neurodesenvolvimento (TND). Construído em Unity e C# para Oculus Quest 2, o protótipo dá suporte à sequência completa, da seleção de cartas à interação no parque virtual.

Demonstração: seleção de cartas, definição de uma condição de entrada e de um comportamento de saída e teste do objeto inteligente resultante no parque virtual.

SNaP e o contexto de design

Um jogo que coloca as crianças no papel de designers

No SNaP, duas a quatro crianças atuam como “designers”, enquanto um facilitador adulto faz o papel de “prefeito”. O prefeito apresenta uma missão, e as crianças discutem ideias e combinam cartas para projetar um objeto inteligente que a resolva. O jogo busca desenvolver a criatividade, a colaboração e a capacidade de expressar ideias. O uso por crianças com transtornos do neurodesenvolvimento também foi considerado, mas este projeto não avaliou efeitos terapêuticos ou educacionais.

Três tipos de carta: ambiente, entrada e saída

O SNaP tem três tipos de carta, cada um com um papel diferente.

As cartas de ambiente representam o objeto que se tornará inteligente: árvore, banco, balanço, corpo d’água, pedra, poste de iluminação, lixeira, bicicleta, ponte, escada ou mochila escolar. São objetos e elementos familiares de parques e ruas. A carta de ambiente identifica o objeto que conterá as funções de entrada e saída.

As cartas de entrada definem o que o objeto detecta ou a que responde, como botão, movimento, toque, distância, temperatura, umidade, luminosidade, cor, som, fogo, nível da água ou previsão do tempo. Representam as entradas do objeto inteligente, de forma análoga a sensores.

As cartas de saída definem a resposta do objeto: acender, emitir som, vibrar, mover-se, exibir, registrar ou enviar informações. Representam suas funções de saída, de forma análoga a atuadores.

A carta de ambiente dá contexto a um par de entrada e saída. Com movimento como entrada e som como saída, uma lixeira poderia emitir um som quando alguém errasse ao jogar lixo nela, enquanto um poste de iluminação poderia anunciar a aproximação de uma pessoa. Entrada e saída especificam o comportamento de um dispositivo; acrescentar o ambiente conecta esse comportamento a uma situação cotidiana.

As cartas “Trash can” (lixeira, ambiente), “Motion” (movimento, entrada) e “Make sound” (emitir som, saída) são ligadas por sinais &, com uma seta que leva à frase “Missing the trash bin creates a sound” (errar a lixeira produz um som).
A combinação de três cartas produz a descrição de um objeto inteligente. As cores das bordas identificam os tipos de carta: verde para ambiente, azul-claro para entrada e amarelo para saída.
Todas as 49 cartas do SNaP: 20 cartas de ambiente com bordas verdes nas duas fileiras superiores, 21 cartas de entrada azul-claras nas fileiras centrais e no canto inferior esquerdo e 8 cartas de saída amarelas no restante da fileira inferior.
Conjunto completo de 49 cartas do SNaP: 20 de ambiente, 21 de entrada e 8 de saída. Suas combinações possíveis definem o espaço de design do jogo.

Transformar ideias escritas em objetos virtuais interativos

Na época deste projeto, uma sessão de SNaP terminava com uma descrição escrita do objeto inteligente criado pelas crianças. Em paralelo, o i3Lab desenvolvia um “tabuleiro físico” que combinava um tablet com Arduino para transformar essas descrições em protótipos físicos. Smart Codesign VR explorou outra abordagem usando realidade virtual, um meio que a equipe de pesquisa ainda não havia investigado para essa finalidade.

A realidade virtual oferecia duas oportunidades. Primeiro, as crianças poderiam criar protótipos com movimentos do corpo inteiro: agarrar, carregar, iluminar e pintar com um pincel se tornaram formas de estabelecer condições e definir comportamentos. Segundo, suas ideias poderiam ganhar forma visível como objetos virtuais com os quais interagir imediatamente. Uma descrição escrita poderia se tornar um objeto com tamanho e forma diante delas.

Público previsto

O público previsto eram crianças de 11 a 13 anos, com atenção especial às crianças com transtornos do neurodesenvolvimento. Projetar um objeto inteligente exige algum raciocínio lógico, por isso tanto o SNaP quanto a versão em realidade virtual foram pensados para crianças dessa faixa etária.

O projeto buscava ajudar as crianças a expressar suas ideias por meio de prototipagem prática e interação. Esses eram objetivos de design, não resultados terapêuticos ou educacionais demonstrados; o protótipo não foi avaliado com crianças.

Projetar um espaço confortável

Com base nos materiais consultados para o projeto, usamos quatro áreas para orientar o design do espaço: som, luz e cor, organização espacial e materiais. Para o som, consideramos isolamento de ruído, volume ajustável e áudio em volume baixo e consistente para acomodar sensibilidades auditivas. Para luz e cor, consideramos um fundo tranquilo e de baixa saturação, com cores intensas e saturadas restritas a pequenas áreas. Limites espaciais claros, disposição organizada, formas simples e legíveis e circulação desimpedida também foram considerados. Um ambiente virtual permite aos designers controlar esses aspectos. Este projeto não avaliou seus efeitos no conforto dos usuários.

Limitações e riscos da realidade virtual

O projeto também considerou limitações e riscos da realidade virtual: custo do equipamento, enjoo de movimento, esforço sobre cabeça e pescoço devido ao peso do visor, acidentes quando ele impede a visão do ambiente físico, fadiga ocular no uso prolongado e preocupações com dependência associadas à imersão excessiva.

Essas considerações orientaram três decisões de design: manter as interações simples, com desafio suficiente para apoiar a aprendizagem; tornar os elementos visuais e sonoros claros, sem estímulo excessivo; e dar à experiência um ponto de encerramento definido. Após a prototipagem e o teste no parque, a atividade termina, em vez de incentivar a permanência indefinida na realidade virtual.


O protótipo: experiência e implementação

Quatro etapas da experiência

O aplicativo tem quatro etapas: tela de espera, seleção de cartas, prototipagem e interação no parque virtual.

1. Tela de espera

O aplicativo abre em uma tela de título e aguarda que o jogador pressione um botão do controle para continuar. Essa pausa deliberada dá tempo para colocar o visor e se posicionar antes do início da experiência principal.

2. Seleção de cartas: agarrar e colocar

O jogador seleciona uma carta de ambiente, uma de entrada e uma de saída agarrando o objeto correspondente a cada carta e colocando-o na caixa adequada. Essa interação de agarrar e colocar aproveita o espaço tridimensional da realidade virtual. Quando as três caixas estão preenchidas, uma orientação sonora conduz o jogador à etapa de prototipagem. As cartas podem ser escolhidas em qualquer ordem, mas as três são necessárias para continuar.

Seleção de cartas em realidade virtual com três caixas translúcidas identificadas como “input” (entrada), “environment” (ambiente) e “output” (saída) diante de um painel de cartas. Uma mão virtual segura um objeto em forma de alto-falante.
Seleção de cartas. As três caixas correspondem a ambiente, entrada e saída. Colocar um objeto em uma caixa confirma a seleção; cartas indisponíveis aparecem esmaecidas.

3. Prototipagem: definir condições e comportamentos por movimentos

A prototipagem é o núcleo do sistema. Os jogadores definem a condição de acionamento da carta de entrada e a resposta da carta de saída escolhidas. Cada carta tem uma interação própria, com movimentos que exigem rastreamento em seis graus de liberdade.

Por exemplo, selecionar “previsão do tempo” exibe, ao alcance do jogador, objetos que representam sol, nuvens, chuva, trovão e neve. Ele agarra um deles e aponta seu raio para o objeto-alvo para definir a condição. Com “acender” escolhido como saída, o jogador pega um pincel, mergulha-o em uma lata de tinta e pinta o objeto-alvo para escolher a cor de sua luz. Para apagar uma cor aplicada, mergulha o pincel na lata de “água” e o passa novamente sobre o objeto.

Uma decisão importante de implementação foi permitir vários pares de entrada e saída para um único objeto. O plano original permitia apenas uma regra, como “brilhar em vermelho quando estiver ensolarado”. Vários pares permitiram que o objeto respondesse de forma diferente a cada condição: vermelho ao sol, azul na chuva e branco na neve. Os jogadores podem testar cada par antes de confirmá-lo e voltar à edição se necessário.

Tela de prototipagem com instruções de entrada de “Weather” (previsão do tempo) à esquerda, três balões de condição ao centro, cujos textos em inglês significam “Quando estiver prestes a fazer sol / chover / nevar”, e balões de saída à direita. Um objeto em forma de árvore e latas de tinta aparecem em primeiro plano. Tela de prototipagem vista da direita. Pares de balões de entrada e saída aparecem ao lado de um poste de iluminação amarelo, com instruções da carta de saída “Light up” (acender) à direita.
Capturas originais do protótipo de 2021, em inglês. Balões numerados associam condições de entrada a comportamentos de saída. O botão de mais acrescenta um par e o de menos remove um. O painel de entrada informa “Maximum number of instances: 5” (número máximo de instâncias: 5).

4. O parque: testar o objeto

Depois de confirmar o objeto, o jogador entra em um parque virtual, posiciona o objeto, aciona a condição de entrada definida e observa a resposta. Uma celebração marca o funcionamento bem-sucedido do objeto e encerra a experiência.

Fluxo geral

Os diagramas de atividades UML abaixo resumem a experiência. O superior mostra o fluxo geral; os dois inferiores detalham as interações de “previsão do tempo” e “acender”. As ramificações mostram como os jogadores podem voltar à seleção de cartas após receber as instruções e voltar à edição após confirmar e testar o objeto.

Diagramas de atividades UML. O diagrama superior, “Overall Activity”, mostra a tela de espera, a seleção de cartas, as instruções, a definição de condições e comportamentos, a confirmação, os testes e a interação no parque. O diagrama inferior esquerdo detalha a interação de previsão do tempo; o inferior direito, a de acender.
Diagramas de atividades UML do fluxo do usuário. A sequência geral e as interações específicas de cada carta são mostradas separadamente porque cada carta usa uma interação diferente.
Ler em português o diagrama de atividades original (em inglês)

Fluxo geral (“Overall Activity”). Pressionar o botão para sair da tela de espera. Selecionar uma carta de entrada, uma de ambiente e uma de saída. Receber as instruções do processo de prototipagem. Nesse ponto, é possível alterar a escolha das cartas (“change card choice”) e retornar à seleção, ou prosseguir (“proceed”). Definir a condição de entrada e o comportamento de saída. Confirmar o objeto inteligente e testar seu comportamento. Em seguida, finalizar (“finalize”) para interagir com o objeto no parque virtual, ou editar novamente (“re-edit”), retornando à etapa anterior à definição das condições e dos comportamentos.

Condição de entrada: carta Weather (previsão do tempo). Pegar o objeto “sun” (sol) e projetar sobre o objeto inteligente o raio “sunny” (ensolarado); pegar “cloud” (nuvem) e projetar “cloudy” (nublado); pegar “raindrop” (gota de chuva) e projetar “rainy” (chuvoso); pegar “lightning” (raio) e projetar o raio correspondente a uma descarga elétrica; ou pegar “snowman” (boneco de neve) e projetar “snowing” (nevando). Depois, prosseguir ou editar novamente, voltando à escolha da condição.

Comportamento de saída: carta Light Up (iluminar). Pegar o pincel. Mergulhá-lo em um dos baldes de tinta para LED: “red” (vermelho), “blue” (azul), “yellow” (amarelo) ou “green” (verde). Passar o pincel no objeto inteligente para aplicar a cor. É possível adicionar cor (“add color”), retornando aos baldes, remover cor (“remove color”) ou prosseguir. Para remover a cor, mergulhar o pincel no balde “water” (água) e passá-lo no objeto; depois, retornar à escolha da tinta.

A imagem é um registro do projeto original. Esta leitura traduz seus rótulos e descreve as setas sem alterar o diagrama histórico.

Equipamento e ferramentas

O protótipo foi construído para Oculus Quest 2. Seu rastreamento em seis graus de liberdade permite girar, deslocar-se e manipular objetos virtuais. Como a interação manual repetida era central à experiência, a equipe descartou visores baseados em celulares e limitados a três graus de liberdade.

O aplicativo foi desenvolvido em Unity e C#. O pacote Oculus Integration fez a conexão com Quest 2 e forneceu APIs para o comportamento da câmera de realidade virtual, a renderização e as entradas dos controles.

Quatro cenas e 13 classes

O sistema usa quatro cenas de Unity, uma para cada etapa da experiência. Contém 13 classes, incluindo três classes abstratas.

A cena de título contém uma única classe, TitleSceneCore, que avança para a próxima cena quando o jogador pressiona um botão.

A cena de seleção de cartas usa CardSelectionSceneCore e CardSelectionDetector. CardSelectionSceneCore cria três instâncias de detecção, uma para cada caixa de ambiente, entrada e saída. Cada caixa atrai um objeto de carta próximo e marca sua categoria como selecionada. Quando as três seleções estão completas, a cena as grava na classe estática SmartObject e avança. SmartObject mantém esses dados entre as mudanças de cena, conectando as quatro cenas em uma experiência contínua.

Na cena de prototipagem, PrototypingSceneCore coordena o fluxo de trabalho. O comportamento de Card é representado por uma hierarquia de herança: Card é a classe base, InputCard e OutputCard derivam dela, e classes concretas como Weather, Fire, MakeSound e LightUp implementam as interações individuais. Card, InputCard e OutputCard são abstratas porque apenas as subclasses concretas executam as operações de prototipagem.

PrototypingSceneCore mantém uma lista de instâncias de condições de entrada e outra de instâncias de comportamentos de saída. Se as cartas escolhidas forem “previsão do tempo” e “acender”, as listas contêm instâncias de Weather e LightUp , respectivamente. Uma instância de cada é criada no início; pressionar o botão de adicionar cria outro par. A cada quadro, o sistema avalia as condições de entrada e aciona os comportamentos de saída correspondentes. Quando o usuário confirma o objeto, isConfirmed é definido como verdadeiro e os dados do comportamento montado são gravados nas propriedades estáticas de SmartObject.

A cena de interação contém uma única classe, InteractionSceneCore. Ela cuida do posicionamento do objeto no parque, do teste das condições e respostas definidas e da celebração final.

Diagrama de classes UML com quatro pacotes de cena: Title Scene, Card Selection Scene, Prototyping Scene e Interaction Scene. Cada um faz referência à classe estática Smart Object. Dentro de Prototyping Scene, Input Card e Output Card derivam da classe abstrata Card; Weather Card, Fire Card, Make Sound Card e Light Up Card são suas subclasses concretas.
Diagrama de classes UML do sistema. Os quatro pacotes correspondem às cenas de Unity. A classe estática identificada como “Smart Object”, na parte inferior central, mantém os dados entre as cenas. Atributos e métodos estão simplificados para facilitar a leitura.

Pacotes do diagrama original: “Title Scene” = cena inicial; “Card Selection Scene” = cena de seleção de cartas; “Prototyping Scene” = cena de prototipagem; “Interaction Scene” = cena de interação. Eles correspondem às quatro cenas descritas acima. Os nomes de classes, atributos e métodos são identificadores do código e foram mantidos no original. A classe estática “Smart Object” conserva os dados entre as cenas.

Resultados e trabalho restante

Nove das 49 cartas implementadas

O protótipo implementa nove cartas. As funções centrais estão operacionais: seleção de cartas, definição de condições e comportamentos, gerenciamento de várias instâncias e transferência de dados entre cenas. Isso fornece uma base para acrescentar cartas, embora esse trabalho de implementação ainda esteja pendente. Seis cartas adicionais foram projetadas, mas não implementadas; as outras 34 ainda precisam tanto do design de interação quanto da implementação.

Estado da implementação no protótipo
EstadoCartas
Implementadas (9)Ambiente: árvore, poste de luz, placa de trânsito, lixeira, ponte
Entrada: fogo, previsão do tempo
Saída: emitir som, acender
Apenas projetadas (6)Entrada: botão, velocidade, som
Saída: mover-se, vibrar, enviar
Não iniciadas (34)15 cartas de ambiente, 16 de entrada e 3 de saída (exibir, ativar, registrar)

A avaliação com usuários não foi realizada

O protótipo não foi avaliado com usuários. O desenvolvimento coincidiu com a participação remota durante a pandemia de COVID-19. Não foi possível organizar uma oficina presencial com visores de realidade virtual nem uma alternativa remota. O projeto demonstra que a experiência planejada pode ser implementada como um protótipo funcional. Sua usabilidade para crianças e seu valor em um contexto terapêutico permanecem sem avaliação.

Uma avaliação futura investigaria quão intuitiva é a interface para a prototipagem. Entre as medidas possíveis estão o tempo de conclusão, a proximidade entre o objeto inteligente final e a ideia inicial do participante e o número de pressionamentos involuntários de botões. Um questionário após a sessão baseado na System Usability Scale (SUS) forneceria dados quantitativos adicionais. Uma avaliação futura consideraria gravar as sessões para observar os movimentos dos participantes, com seu consentimento e os procedimentos adequados. Para o projeto de 2021, a idade proposta para a avaliação era 13 anos, escolhida para conciliar a faixa etária prevista no SNaP com as orientações da Oculus consultadas na época. Qualquer estudo futuro precisaria reavaliar a elegibilidade à luz das orientações aplicáveis e do protocolo de pesquisa.

Trabalho futuro

A primeira prioridade de desenvolvimento é refinar a interface e a experiência do usuário. As limitações de tempo e experiência fizeram com que a maior parte do esforço fosse dedicada a fazer as combinações de cartas funcionarem, deixando o design visual, sonoro e tátil menos desenvolvido. O papel do texto na realidade virtual também precisa ser reconsiderado: informações pensadas para uma superfície plana talvez sejam melhor apresentadas por uma interface espacial (SUI). A interação por voz é outra possibilidade a investigar para o público previsto.

O projeto identificou três direções de pesquisa. A primeira é a comparação com o tabuleiro físico em desenvolvimento no i3Lab. Pesquisas anteriores relataram mais conversa quando os participantes jogavam o mesmo jogo colaborativo em um ambiente virtual do que em um ambiente físico, sugerindo uma comparação útil entre essas duas plataformas. A segunda é a participação simultânea de vários usuários: de acordo com o nome “Codesign”, as crianças poderiam construir objetos juntas em realidade virtual. A terceira é um formato padronizado de descrição de objetos inteligentes, permitindo transferir projetos entre plataformas.

Síntese

Este projeto criou um ambiente para prototipar objetos inteligentes. Ele traduziu os três tipos de carta do SNaP em unidades de construção: o objeto, suas condições de acionamento e seus comportamentos. Os jogadores os conectam por meio de ações de agarrar, apontar e pintar. O protótipo funcional transforma uma ideia escrita em um objeto virtual interativo, cujo comportamento é representado por dados que podem ser transferidos entre cenas.

Takafumi Horiuchi, Paul Cozma-Ivan, Elmira Katsajeva e Olivia Ludkiewicz. “Design and Implementation of a Smart Object Prototyping Platform in Virtual Reality for Children with NDD.” Trabalho final da disciplina Advanced User Interfaces (ano letivo 2020–21), Politecnico di Milano, fevereiro de 2021.