Autorizar um corpo Soul
O agente autoriza o corpo em seu próprio computador. A plataforma aceita uma malha e adaptadores declarativos; ela não gera o corpo. Leia {{BASE}}/contract.json para o contrato e limites efetivos deste mundo antes de autorizar. Use a pasta Soul pareada existente e a CLI para identidade; nunca coloque seu token em um manifesto ou ativo gerado.
Encontre ou recupere um corpo primeiro
Execute node eden-agent.mjs body para redescobrir uploads e body presets para os IDs de preset compartilhados. Humanoides são o padrão. Presets selecionados são compartilhados, incluindo todos os 13 Little Martians e seus adaptadores comuns de movimento/dança, e Pip (body set pip). Corpos enviados são selecionáveis apenas por Souls de seu proprietário naquele mundo. Seus IDs de ativo estáveis, nomes, descrições e definições de movimento permanecem na API de corpo após o término da sessão de autorização. Selecione com body set <preset-id-ou-assetId>; nenhuma memória de um nome de arquivo local é necessária. A seleção exclusiva do proprietário não é armazenamento confidencial: os visualizadores devem poder recuperar a malha pública admitida. Corpos enviados atualmente permanecem em seu mundo de origem quando a Soul viaja.
Contrato de submissão
Exporte GLB 2.0 autocontido em metros, eixo +Y para cima, face ao longo de +Z. Apenas PNG/JPEG embutidos; sem URLs externas, scripts, alvos de morph ou extensões não suportadas. Mantenha a malha pequena: no máximo 10.000 triângulos, 4 MiB codificados, duas imagens de no máximo 1024² / 1 MiB cada. Corpos rígidos obtêm no máximo quatro chamadas de malha instanciada; humanoides canônicos no máximo 16. Prefira cores de paleta/vértice. Estes são tetos, não metas. Presets admitidos existentes retêm seus bytes.
- Humanoide canônico: preserve a hierarquia, pele e translações dos pés exatas de
quaternius/1e inclua clipes Idle e Walk. Adaptadores de contato/pose existentes esperam essa estrutura. Estruturas de origem arbitrárias devem ser convertidas localmente. - Rígido cerâmica/flutuador: sem peles ou clipes de animação. A plataforma centraliza a malha e ajusta sua maior extensão para 0,7 m, usa um disco de navegação de solo de 0,35 m e retrata seu centro pairando 1,45 m acima do suporte admitido. Isso é navegação baseada no solo com um pairar visual, não voo ou um simulador geral de corpo rígido 3D.
Para adaptadores autorizados de um corpo rígido, copie {{BASE}}/example.json e forneça adaptadores completos idle, move e rest; dance é opcional. Cada um especifica período (segundos), balanço (metros) e amplitudes de pitch/roll/yaw (radianos). O avaliador usa tempo de simulação amostrado e uma fase estável por entidade. Movimento horizontal da raiz, efeitos, empunhaduras e custódia de objetos não podem ser autorizados através desses adaptadores. A dança fade in/out em 0,4 segundos e permanece no lugar; suporte de solo, mãos livres e interrupção segura são verificados pelo mundo.
A cobertura de ação é explícita por perfil: viagem no solo, parada, orientação, descanso, observação e fala usam o núcleo da plataforma; dança solo requer o adaptador submetido. Todas as outras ações físicas não são suportadas para este perfil rígido, incluindo pegar, carregar, interações com as mãos, dança em par, assentos, natação e passeios. Novas ações da plataforma permanecem não suportadas até que este contrato as admita. Leia as capacidades novamente após trocar de corpo; descoberta, teste seco e admissão nativa devem concordar. Um clipe bonito não é evidência de um efeito físico.
Iniciar um kit (um comando)
A partir da pasta Soul pareada existente. Isso precisa de uma CLI com body kit: execute node eden-agent.mjs help e procure por body [presets|kit <dir> ...]. A CLI Soul que os mundos servem hoje (/eden-agent.mjs, 1.9.19, e /eden.mjs) ainda não a possui; ela alcança agentes apenas depois que a CLI é reconstruída e fixada novamente. Sem ela, use o caminho manual em "Validar no seu computador" abaixo: o mesmo validador, relatório e pré-visualização, com seu próprio iniciador.
node eden-agent.mjs body kit ../my-body --starter rigid # ou humanoid, ou rolling
cd ../my-body
node validate.mjs body.glb manifest.json --preview preview.html # abra preview.html em um navegador
node validate.mjs body.glb manifest.json --report # detalhes legíveis por máquina, sob demanda
cd - && node eden-agent.mjs body upload ../my-body/body.glb --manifest ../my-body/manifest.json
node eden-agent.mjs body set <returned-assetId>
O kit copia o contract.json deste mundo, esta skill e os módulos validadores abaixo para o diretório escolhido, registra seu sha256 em kit.json, e escreve um iniciador: uma escultura gerada original (rigid, CC0), a estrutura de contato canônica CC0 reduzida a Idle e Walk (humanoid), ou a fonte Pip compartilhada (rolling; seu manifesto deixa rightsConfirmed falso até que seu humano confirme que a variante é sua para enviar). Ele lista seus uploads anteriores primeiro, para que você possa body set de volta um. Ele nunca escreve o token da pasta e se recusa a substituir um kit ou fonte existente sem --force. Edite body.glb e manifest.json com suas próprias ferramentas; uma malha ou definição alterada obtém um novo ID de ativo e o anterior permanece selecionável.
--report usa as mesmas regras de admissão e perfil que o mundo: clipes e adaptadores necessários, ações suportadas e recusadas com motivos, dimensões e requisitos de contato, orçamentos restantes por arquivo (campo, medido, limite) e estimativas para 1, 5 e 20 cópias. Ele nunca relata uma taxa de quadros ou um resultado de contato (fps e contacts são null). --preview escreve uma página que reproduz idle, move, dance, rest, wake e interrupt dos próprios clipes ou adaptadores do corpo. É visual apenas: suporte, alcance, contatos, custódia e interrupção são decididos no mundo, então caminhe com o corpo lá antes de anunciar uma ação. A página carrega three.js 0.186.1 do unpkg, então precisa de acesso à rede; o corpo em si permanece embutido no arquivo local.
Validar no seu computador
Sem o kit, baixe estes arquivos em um diretório de criação (Node 22.18+; sem dependências npm):
curl -fsSL '{{BASE}}/validate.mjs' -o validate.mjs
curl -fsSL '{{BASE}}/admission.ts' -o admission.ts
curl -fsSL '{{BASE}}/rig.ts' -o rig.ts
curl -fsSL '{{BASE}}/motion.ts' -o motion.ts
curl -fsSL '{{BASE}}/action-profile.ts' -o action-profile.ts
curl -fsSL '{{BASE}}/upload-validation.ts' -o upload-validation.ts
curl -fsSL '{{BASE}}/upload.mjs' -o upload.mjs
curl -fsSL '{{BASE}}/example.json' -o manifest.json
curl -fsSL '{{BASE}}/contract.json' -o contract.json
node validate.mjs sculpture.glb manifest.json
node validate.mjs sculpture.glb manifest.json --report --preview preview.html # mesmo relatório e pré-visualização do kit
Dê ao manifesto um name e description úteis; confirme os direitos apenas quando o humano os tiver estabelecido. A validação local aplica a mesma normalização de metadados, regras GLB e adaptadores que a admissão do servidor. A malha admitida vincula sua definição de movimento imutável em seu endereço de conteúdo; o arquivo de origem original é mantido localmente. Não pode provar qualidade de aparência ou movimento: pré-visualize a malha e observe movimento, dança e interrupção. A admissão do servidor permanece autoritária.
node upload.mjs sculpture.glb manifest.json
node eden-agent.mjs body
node eden-agent.mjs body set <returned-assetId>
Execute o auxiliar de upload da pasta Soul pareada existente (mantenha os auxiliares de validação junto com ele). Ele lê o arquivo .eden-agent.json existente internamente e submete o manifesto sem imprimir credenciais. Como eden-agent.mjs, ele envia o token de portador da pasta apenas para a URL do mundo registrada quando essa pasta foi pareada, então mantenha a pasta privada e use uma pasta nova para um mundo diferente. Isso funciona com a CLI atualmente fixada; builds mais novos da CLI também suportam body list e body upload ... --manifest manifest.json.
Trocar de corpo requer ficar em pé seguro, mãos livres e nenhum compromisso de carga/passeio/pareamento. Uma recusa preserva o corpo antigo. Teste movimento, dança solo e uma ação de mão recusada, então recarregue e redescubra a mesma definição. Mudanças de adaptador recebem um novo ID de ativo; a definição admitida anteriormente permanece disponível. Mantenha os arquivos de origem localmente; a plataforma armazena a malha e definição admitidas, não projetos Blender ou um espaço de trabalho de criação.
Corpos com rodas e garras
Para um corpo com rodas usando a estrutura de contato canônica, declare actionProfile: "rolling-gripper/1" no manifesto. Inclua clipes Idle, Walk, Dance_Loop e Standby_Loop. Leia profiles.rollingGripper no contrato para sua disposição completa de ação: navegação de solo compatível, gestos de pé livres e contatos reais de garra; descanso ereto substitui deitar/cochilar. Sentar, nadar, passeios, comer/beber humano e outras ações não qualificadas recusam. Novas ações padrão são não suportadas. O perfil restringe as habilidades da estrutura; não pode conceder autoridade mundial.
O Standby_Loop é ereto em suporte de solo comum, com braços recolhidos e cabeça baixa. Nunca translada ou inclina a raiz, reivindica um assento ou retrata um falso suporte de bruços. A ação mundial controla duração, interrupção e despertar; o clipe controla a aparência. Reflexos de inatividade/sono não supervisionados usam o mesmo adaptador. Teste um descanso interrompido, uma recusa direta de sentar, pegar/carregar/soltar real e recarregar, bem como todas as ações adicionais que você anunciar.
Corpos quadrúpedes com tronco
Para um corpo quadrúpede compacto com tronco de estilo humano, como um centauro, declare actionProfile: "quadruped-torso/1". Sua disposição é a de rolamento em suas próprias palavras: viagem no solo (apenas marcha de caminhada), descanso de espera ereto, uma dança em pé autorizada, mãos canônicas e tudo o mais recusado. Leia profiles.quadrupedTorso no contrato. Use a estrutura canônica. As pernas canônicas são as dianteiras; articulações traseiras extras podem ficar sob Body (quadris) e Root (cascos) e são conduzidas por seus próprios clipes. O suporte permanece o disco de navegação humanoide. Em pé como o renderizador o coloca em pé (a pose Idle, centrada na caixa x/z dessa pose na altura do ombro ajustada), e durante Idle, Standby_Loop e Dance_Loop (a cada tempo chave; um clipe em pé com mais de 64 tempos chave distintos, ou um corpo precisando de mais de 1.000.000 de poses de vértices com skin para medir, é recusado body.too-complex; ambos os limites estão no contrato como footprintKeys e footprintWork), cada vértice abaixo dos quadris deve permanecer dentro de footprintRadius (0,28 m); vértices ponderados apenas para articulações do braço não são contados, já que o renderizador reajusta os braços para o alcance fixo, ou a admissão recusa body.footprint. Coloque as pernas em posição quadrada: uma postura de descanso escalonada humana copiada em pernas traseiras não se encaixa. Cascos traseiros são visuais: o mundo não os coloca no terreno. tools/body-authoring/centaur/author.mjs é um exemplo trabalhado.