Mundo 3D de aprendizagem · Babylon.js

Um mundo 3D pra ensinar qualquer coisa.

Três estações, um mascote-guia e um World Tour de um minuto. Cada estação mostra uma ideia acontecendo. O primeiro mundo ensina três hábitos pra usar IA no dia a dia.

Banner do astra3dany: um mundo 3D pra ensinar qualquer coisa
O que é

Uma lição que a pessoa vê acontecer.

Não é um vídeo nem um slide: é um palco em miniatura no browser. O aluno passeia, clica num pedestal, vê a máquina funcionar e lê, ao lado, o que está acontecendo e o que lembrar.

🎬 World Tour ritmado

Um minuto guiado: chegar (3 s) → aproximar (3 s) → demonstrar (6 s) → segurar o resultado (5 s) em cada estação, com um card sincronizado à ação. Pausar, reiniciar, mudar a velocidade, sair.

🕹️ Exploração livre

Orbitar, aproximar, deslocar, resetar. Clicar num pedestal abre a estação, roda e repete a demonstração no seu ritmo. Teclado, mouse e toque.

🔁 Troque o assunto, mantenha a receita

Todo o texto e as estações vivem num único arquivo de configuração. Ensinar outra coisa é editar esse arquivo; a câmera, os cards e o tour continuam iguais.

Como funciona

Uma estação = um princípio = uma mudança visível.

Segue a receita do field guide Build a Learning World (Mark Kashef, Early AI Adopters): seis partes, ritmo de câmera fixo e um checklist de aceite. O mundo atual ensina três hábitos:

01 · O portão 02 · As gavetas 03 · A conferência Recap
01

Confirme antes de agir

Um pedido chega a um portão fechado e vai pra revisão. O segundo passa na checagem: o portão abre e a roda (a ação) gira. Peça pra IA confirmar antes de enviar, pagar, apagar.

02

Dê contexto onde a IA lê

Um card de instruções entra na gaveta do projeto e os dois colegas ficam conectados. Guarde as instruções num lugar só; todo mundo, e a IA, lê o mesmo.

03

Confira a fonte

O formato da resposta passa, mas a fonte diz 20 + 30 + 40. O total vira 90 e a data, sem fonte, fica em aberto. Resposta bem formatada não é resposta certa.

Pré-requisitos

Pra usar: só um browser. Pra editar: Node.

O site é 100% estático. Não há backend, chave de API, banco nem Blender envolvidos.

🌐 Browser com WebGL2

Chrome, Edge, Firefox ou Safari 15+. Não precisa de GPU dedicada, mas ajuda. Funciona no celular.

# abrir o mundo publicado
https://inematds.github.io/astra3dany/app/

🟢 Node.js 20+ e npm

Só pra rodar localmente ou trocar o assunto. Desenvolvido e testado com Node 24.

node -v   # v20 ou mais novo
npm -v

📦 Git

Pra clonar o repositório. As versões do Vite e do Babylon.js ficam travadas no package-lock.

git clone https://github.com/inematds/astra3dany.git
Guia de uso · passo a passo

Do zero ao seu próprio mundo.

Os passos 1 e 2 são pra quem só quer visitar. Do 3 em diante, pra quem quer rodar localmente ou ensinar outra coisa.

1

Faça o World Tour

Abra o mundo e clique no botão laranja World Tour. Em um minuto a câmera visita as três estações, roda cada demonstração e segura o resultado enquanto o card explica. No fim aparece o recap com os três hábitos.

https://inematds.github.io/astra3dany/app/   # Pausar/Retomar · Reiniciar · 0,75× · Sair (ou Esc)
2

Explore no seu ritmo

Clique num pedestal (ou nos botões 01/02/03). Ver de perto e rodar aproxima a câmera e roda a demonstração; Repetir roda de novo; Vista ampla recua. Fora do tour a câmera é livre:

AçãoMouseTecladoToque
Orbitararrastarsetasum dedo
Aproximar / afastarroda, botões + e −+ / −pinça
Deslocar (pan)shift + arrastar, botão direitodois dedos
Voltar ao enquadramentoResetRReset

Acrescente ?diagnostics à URL pra ver fps e resolução. O botão Reduzir movimento troca as animações de câmera por cortes secos (e respeita a preferência do sistema).

3

Rode localmente

Clone, instale as versões travadas e suba o servidor de desenvolvimento.

git clone https://github.com/inematds/astra3dany.git
cd astra3dany/game
npm ci            # Vite 8.2.2 + Babylon.js 9.25.0, exatamente como no lock
npm run dev       # http://127.0.0.1:43220
4

Troque o assunto

Edite game/src/mundo.config.js: título, intro, público, mascote e as três estações (nome, princípio, explicação, sequência, observações por segundo da demonstração, takeaway e poses de câmera). Todo texto do site vem daí.

// game/src/mundo.config.js — uma estação
{
  id: 'portao', demo: 'portao', x: -3,
  principio: 'Confirme antes de agir',
  titulo: 'Uma checagem que pode parar uma ação.',
  sequencia: ['Pedido', 'Checagem', 'Ação'],
  observacoes: [[1.5, 'O pedido se aproxima…'], [2.8, 'Checagem falhou…'], [6, 'Checagem passou…']],
  takeaway: 'Peça pra IA confirmar antes de agir: enviar, pagar, apagar.',
  camera: { wide: {…}, closeStart: {…}, closeEnd: {…} },
}

Precisa de uma mecânica nova? Crie um módulo em game/src/estacoes/ com { reset(), update(demoTime), foco, pick } e registre em DEMOS no main.js. Os três existentes servem de molde.

5

Teste e inspecione

Os testes leem o config e conferem duração, os 5 s de hold e as frases por fase. Depois olhe no browser: vista ampla, close-up, meio da demonstração e resultado, no desktop e no celular.

npm test          # 7 testes de timeline e legendas (node --test)
npm run build     # gera ../app/ (estático, caminhos relativos)
npm run preview   # http://127.0.0.1:43221 — inspecione o build que vai pro ar
6

Publique

Commite a pasta app/ e faça push. O GitHub Pages serve da raiz da branch main; o mesmo build roda em Vercel, Netlify ou Here.Now apontando pra app/.

git add app && git commit -m "build" && git push
# app:  https://inematds.github.io/astra3dany/app/
# guia: https://inematds.github.io/astra3dany/guia/
Exemplos

O que aparece na tela.

Capturas da inspeção (desktop 1280 px e celular 390 px). O relatório completo está em evidence/revisao.md no repositório.

Visão geral do palco com os três pedestais e o mascote Any
Visão geral: três pedestais numerados, o mascote Any e o painel de introdução com a rota das estações.
Close-up da estação do portão durante a demonstração
Estação 01 no modo explorar: o pedido barrado na bandeja de revisão, o segundo pedido passando e a legenda sincronizada.
World Tour na estação da conferência com o card ao lado
World Tour na estação 03: a cena é renderizada ao lado do card, que mostra o takeaway e os valores conferidos.
Layout de celular com a cena em cima e o card embaixo
No celular o tour põe a cena em cima e o card embaixo; nada cobre a demonstração.
Limites conhecidos

O que ainda não faz.

Pra você não descobrir na hora errada.

🤖 Mascote em código

Blender não estava disponível na máquina de build, então o Any é gerado proceduralmente. Um GLB feito no Blender pode ser plugado pelo config (pernas Perna1..4 ganham o andar).

📦 Bundle de ~5,8 MB

1,2 MB comprimido, por causa do Babylon.js. A primeira carga em 4G leva alguns segundos; ainda não há code-splitting.

📱 Testado só em headless

Desktop e celular foram inspecionados em Chromium sem GPU. Nenhum aparelho físico, Safari, Firefox ou gesto de toque real ainda; os fps medidos não representam um dispositivo de verdade.

🔇 Sem áudio, quiz ou IA ao vivo

As demonstrações são animações determinísticas. Voz, música e perguntas ficam pra uma próxima versão.

🌐 Uma língua

Textos em português, no config. Não há i18n; traduzir é copiar o config.

♿ Acessibilidade parcial

Botões e painéis navegáveis por teclado, card do tour em aria-live, reduced-motion. A cena 3D em si não tem descrição além dos cards.

Roadmap

Próximas fases.

Na ordem em que fazem diferença pra quem aprende.

Feito
Mundo com três estações, tour, exploração livre, recap, mobile, testes e evidênciasReceita completa do field guide aplicada a "IA no dia a dia".
Fase 2
Mascote em Blender e vozAsset GLB rigado no lugar do mascote procedural; narração das legendas por TTS.
Fase 3
Mais mundos, mesmo motorUm config por assunto (ex.: prompts, automação, segurança) e um seletor de mundo na entrada.
Fase 4
Quiz e progressoUma pergunta por estação e um resumo do que a pessoa acertou no recap.