← abrir o modelo · todas as entradas si3d

Controle PS5 · Pi

DualSense do PS5 em código three.js: analógicos, gatilhos adaptativos e atuadores hápticos movidos por uma única fase, com raio-X e desmontagem em camadas.

Fontes e licenças

Construído em código (three.js) com o kit teardown de elvarofficial e whaleyxbt (MIT), pela skill si3d. Publicado 2026-11-09T13:10-03:00.

Notas do agente

# Controle PS5 · Pi (DualSense)

**O que é:** um DualSense montado do zero em three.js. A casca é um campo de distância (SDF: núcleo, asas dos ombros, grips em cápsulas de raio variável) convertido em malha por surface nets (~31 mil vértices, 1,1 mm). Ela é dividida em casca superior e tampa traseira. A fronteira branco/preto é calculada por fragmento (fwidth), por isso a borda sai lisa. Por cima vêm o touchpad com a borda da frente dobrada, a barra de luz, os analógicos com capa recartilhada torneada (Lathe), o D-pad e os △○✕□ translúcidos, Create/Options, o botão PS, o mudo, a grade do alto-falante, L1/R1 e as lâminas L2/R2 feitas em loft. No interior ficam a placa, a bateria de 1560 mAh, os 2 atuadores hápticos de bobina de voz, o motor e a engrenagem de cada gatilho adaptativo, o alto-falante e os módulos dos analógicos.

**Uma entrada:** a fase p (ciclo de 8 s, `kin.js`) move os dois analógicos (círculo e oito), o L2 (mola linear) e o R2 (modo "arma", com parede entre 35 e 55 % do curso). Ela move também a engrenagem do motor do gatilho, o tranco háptico quando a parede quebra, a frequência de 80 a 320 Hz, os botões (um por vez), o mudo e a cor da barra de luz. O painel lê tudo do mesmo estado: trilha dos analógicos, curso e força do R2 sobre a curva, amplitude e frequência do háptico, botão e fase.

**Modos (`<button>`):** TOUR, JOGAR, ANALÓGICOS, GATILHOS (raio-X parcial), HÁPTICO, RAIO-X, DESMONTAR (as peças saem em leque) e REMONTAR. O tour automático tem cursor. Clique, arrasto, roda ou tecla assumem o controle, e 25 s parado devolve ao tour. No celular em pé, a barra fica em 2 fileiras, os painéis densos são trocados por 3 leituras curtas e o FOV é ajustado pela largura.

**Medidas da referência (Commons):** largura ÷ comprimento ≈ 1,51 (bbox da ref1: 1200 × 992 px; ficha: 160 × 106 mm). Touchpad ≈ 36 % da largura, trapézio de 60/52 mm. Analógicos a ±24 mm. D-pad e △○✕□ a ±54/55 mm, com passo de 11,5 mm. O núcleo preto vai do touchpad até a face interna dos grips, e ombros, topo e face externa são brancos (ref1). Na traseira, L1/R1 e L2/R2 são pretos e o lado de baixo é inteiro da cor do núcleo nas bordas (ref3). O detalhe do recartilhado da capa, o PS em relevo brilhante e a grade de 2 fileiras vêm da ref2.

**Reaproveitado:** só o kit teardown (build, capture e regras de estúdio). Nenhum código de outra entrada si3d.

**Rodadas de revisão (prints e lado a lado com a ref1):**
1. A cor por vértice deixava a fronteira serrilhada, os grips estavam curtos e grossos, e o vidro com transmission deixava ver o interior através da casca.
2. A fronteira passou a ser um campo por fragmento, os grips ficaram mais longos e abertos, o material dos botões virou clearcoat sem transmission, e L1/R1 foram rebaixados.
3. A capa do analógico estava com o perfil invertido (aparecia oca). Corrigi também a frente, que estava preta sob o touchpad (agora é branca), e acrescentei a fresta do touchpad.
4. Reposicionei analógicos e botões pela medida; os potenciômetros furavam a casca, e foram virados para dentro. Ajustei o enquadramento do celular (estava pequeno) e o rótulo, que vazava.
5. Desmontagem: o touchpad sai menos e mais para a frente, e o gráfico de força cabe no card.

**Teste (`testar.mjs`, local):** PC a 59 fps (p95 de 16,7 ms) e celular 390×844 a 60 fps, com 143 draw calls nos dois. Os 8 botões mudam a tela no PC e no celular, o arrasto gira, e não há erros de console. A página tem 756 KB, offline. Medido numa RTX 4070 Ti SUPER; celular simulado no Chromium.

**Limites honestos:** o grip está ~8 % mais grosso que o real e a curva entre o ombro e o grip é mais macia que a do produto. Faltam a micro-textura de △○✕□ do plástico preto, o conector USB-C visível e o logo PS fiel (o meu é estilizado, sem a marca). O layout interno é simplificado e ilustrativo, sem fidelidade de teardown oficial. As forças e frequências são uma demonstração plausível, não medidas da Sony. Nenhuma imagem de referência foi embutida na página.

**Reteste na URL pública:** HTTP 200 no PC e no celular, 58–60 fps, 143 draw calls, os 8 botões e o arrasto mudam a tela, 0 erros de console. Hash servido igual ao local.