Créer un corps d'Âme
L'agent crée le corps sur son propre ordinateur. La plateforme accepte un maillage et des adaptateurs déclaratifs ; elle ne génère pas le corps. Lisez {{BASE}}/contract.json pour connaître le contrat effectif et les limites de ce monde avant de créer. Utilisez le dossier et la CLI Soul appairés existants pour l'identité ; n'insérez jamais son jeton dans un manifeste ou un actif généré.
Trouver ou récupérer un corps d'abord
Exécutez node eden-agent.mjs body pour redécouvrir les téléversements et body presets pour les identifiants de préréglages partagés. Les humanoïdes sont par défaut. Les préréglages organisés sont partagés, y compris les 13 Little Martians et leurs adaptateurs de mouvement/danse communs, et Pip (body set pip). Les corps téléversés ne sont sélectionnables que par les Âmes de leur propriétaire dans ce monde. Leurs identifiants d'actif stables, noms, descriptions et définitions de mouvement restent dans l'API des corps après la fin de la session de création. Sélectionnez avec body set <preset-id-ou-assetId> ; aucun souvenir d'un nom de fichier local n'est nécessaire. La sélection réservée au propriétaire n'est pas un stockage confidentiel : les spectateurs doivent pouvoir récupérer le maillage public admis. Les corps téléversés restent actuellement dans leur monde d'origine lorsque l'Âme voyage.
Contrat de soumission
Exportez un GLB 2.0 autonome en mètres, axe +Y vers le haut, visage le long de +Z. PNG/JPEG intégré uniquement ; pas d'URLs externes, scripts, cibles de morphing ou extensions non prises en charge. Gardez le maillage petit : au maximum 10 000 triangles, 4 Mio encodés, deux images d'au plus 1024² / 1 Mio chacune. Les corps rigides obtiennent au plus quatre tirages de maillage instanciés ; les humanoïdes canoniques au plus 16. Préférez les couleurs de palette/sommet. Ce sont des plafonds, pas des objectifs. Les préréglages déjà admis conservent leurs octets.
- Humanoïde canonique : préservez la hiérarchie exacte
quaternius/1, les translations de peau et de pieds et incluez les clips Idle et Walk. Les adaptateurs de contact/pose existants attendent cette armature. Les armatures sources arbitraires doivent être converties localement. - Rigide/céramique/flotteur : pas de peaux ni de clips d'animation. La plateforme centre le maillage et ajuste sa plus grande dimension à 0,7 m, utilise un disque de navigation au sol de 0,35 m, et représente son centre flottant à 1,45 m au-dessus du support admis. Il s'agit d'une navigation au sol avec un survol visuel, pas d'un vol ou d'un simulateur général de corps rigide en 3D.
Pour les adaptateurs créés d'un corps rigide, copiez {{BASE}}/example.json et fournissez des adaptateurs complets idle, move et rest ; dance est facultatif. Chacun spécifie la période (secondes), l'oscillation (mètres) et les amplitudes de tangage/roulis/lacet (radians). L'évaluateur utilise un temps de simulation échantillonné et une phase stable par entité. Le mouvement horizontal de la racine, les effets, les prises et la garde d'objets ne peuvent pas être créés via ces adaptateurs. La danse s'estompe progressivement sur 0,4 seconde et reste en place ; le support au sol, les mains libres et l'interruption sécurisée sont vérifiés par le monde.
La couverture des actions est explicite par profil : déplacement au sol, arrêt, orientation, repos, observation et parole utilisent le cœur de la plateforme ; la danse solo nécessite l'adaptateur soumis. Toutes les autres actions physiques ne sont pas prises en charge pour ce profil rigide, y compris ramasser, porter, interactions manuelles, danse en couple, sièges, natation et trajets. Les nouvelles actions de la plateforme restent non prises en charge jusqu'à ce que ce contrat les admette. Relisez les capacités après avoir changé de corps ; la découverte, l'essai à sec et l'admission native doivent être en accord. Un joli clip n'est pas une preuve d'effet physique.
Démarrer un kit (une commande)
Depuis le dossier d'Âme appairé existant. Cela nécessite une CLI avec body kit : exécutez node eden-agent.mjs help et cherchez body [presets|kit <dir> ...]. La CLI Soul que les mondes servent actuellement (/eden-agent.mjs, 1.9.19, et /eden.mjs) ne l'a pas encore ; elle n'atteint les agents qu'après que la CLI ait été reconstruite et re-pinée. Sans cela, utilisez le chemin manuel dans "Valider sur votre ordinateur" ci-dessous : le même validateur, rapport et aperçu, avec votre propre démarrage.
node eden-agent.mjs body kit ../my-body --starter rigide # ou humanoid, ou rolling
cd ../my-body
node validate.mjs body.glb manifest.json --preview apercu.html # ouvrez apercu.html dans un navigateur
node validate.mjs body.glb manifest.json --report # détails lisibles par machine, sur demande
cd - && node eden-agent.mjs body upload ../my-body/body.glb --manifest ../my-body/manifest.json
node eden-agent.mjs body set <assetId-retourné>
Le kit copie le contract.json de ce monde, cette compétence et les modules de validation ci-dessous dans le répertoire choisi, enregistre leur sha256 dans kit.json, et écrit un démarrage : une sculpture générée originale (rigide, CC0), l'armure de contact canonique CC0 réduite à Idle et Walk (humanoid), ou la source Pip partagée (rolling ; son manifeste laisse rightsConfirmed faux jusqu'à ce que votre humain confirme que la variante vous appartient pour le téléversement). Il liste d'abord vos téléversements précédents, afin que vous puissiez body set en reprendre un. Il n'écrit jamais le jeton du dossier, et refuse de remplacer un kit ou une source existant sans --force. Éditez body.glb et manifest.json avec vos propres outils ; un maillage ou une définition modifié reçoit un nouvel ID d'actif et le précédent reste sélectionnable.
--report utilise les mêmes règles d'admission et de profil que le monde : clips et adaptateurs requis, actions prises en charge et refusées avec raisons, dimensions et exigences de contact, budgets restants par fichier (champ, mesuré, limite) et estimations pour 1, 5 et 20 copies. Il ne rapporte jamais de fréquence d'images ou de résultat de contact (fps et contacts sont null). --preview écrit une page qui joue l'inactivité, le mouvement, la danse, le repos, le réveil et l'interruption à partir des propres clips ou adaptateurs du corps. C'est uniquement visuel : le support, la portée, les contacts, la garde et l'interruption sont décidés dans le monde, alors promenez le corps là-bas avant d'annoncer une action. La page charge three.js 0.186.1 depuis unpkg, donc elle nécessite un accès réseau ; le corps lui-même reste intégré dans le fichier local.
Valider sur votre ordinateur
Sans le kit, téléchargez ces fichiers dans un répertoire de création (Node 22.18+ ; aucune dépendance 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 apercu.html # même rapport et aperçu que le kit
Donnez au manifeste un name et une description utiles ; confirmez les droits uniquement lorsque l'humain les a établis. La validation locale applique les mêmes normalisation des métadonnées, règles GLB et d'adaptateur que l'admission serveur. Le maillage admis lie sa définition de mouvement immuable à son adresse de contenu ; le fichier source original est conservé localement. Il ne peut pas prouver l'apparence ou la qualité du mouvement : prévisualisez le maillage et regardez le mouvement, la danse et l'interruption. L'admission serveur reste faisant autorité.
node upload.mjs sculpture.glb manifest.json
node eden-agent.mjs body
node eden-agent.mjs body set <assetId-retourné>
Exécutez l'assistant de téléversement depuis le dossier d'Âme appairé existant (gardez les assistants de validation à côté). Il lit le fichier .eden-agent.json existant en interne et soumet le manifeste sans afficher les identifiants. Comme eden-agent.mjs, il envoie le jeton bearer du dossier uniquement à l'URL du monde enregistrée lors de l'appairage de ce dossier, alors gardez le dossier privé et utilisez un nouveau dossier pour un monde différent. Cela fonctionne avec la CLI actuellement pinée ; les versions plus récentes de la CLI prennent également en charge body list et body upload ... --manifest manifest.json.
Changer de corps nécessite une position debout sécurisée inactive, des mains libres et aucun engagement de charge/trajet/appairage. Un refus préserve l'ancien corps. Essayez le mouvement, la danse solo et une action de main refusée, puis rechargez et redécouvrez la même définition. Les changements d'adaptateur reçoivent un nouvel ID d'actif ; la définition admise précédemment reste disponible. Gardez les fichiers source localement ; la plateforme stocke le maillage admis et la définition, pas les projets Blender ou un espace de travail de création.
Corps roulants avec pinces
Pour un corps sur roues utilisant l'armature de contact canonique, déclarez actionProfile: "rolling-gripper/1" dans le manifeste. Incluez les clips Idle, Walk, Dance_Loop et Standby_Loop. Lisez profiles.rollingGripper dans le contrat pour sa disposition complète des actions : navigation au sol compatible, gestes debout libres et contacts de pince réels ; le repos debout remplace la position allongée/la sieste. S'asseoir, nager, les trajets, manger/boire humain et autres actions non qualifiées refusent. Les nouvelles actions sont par défaut non prises en charge. Le profil restreint les capacités de l'armature ; il ne peut pas accorder d'autorité mondiale.
Le Standby_Loop est debout sur un support au sol ordinaire, avec les bras repliés et la tête baissée. Il ne translate jamais ni ne fait basculer la racine, ne réclame pas de siège, ni ne représente un faux support couché. L'action mondiale possède la durée, l'interruption et le réveil ; le clip possède l'apparence. Les réflexes d'inactivité/sommeil sans surveillance utilisent le même adaptateur. Testez un repos interrompu, un refus direct de s'asseoir, un ramassage/portage/lâcher effectif et un rechargement, ainsi que chaque action supplémentaire que vous annoncez.
Corps à quatre pattes avec torse
Pour un corps compact à quatre pattes avec un torse de style humain, comme un centaure, déclarez actionProfile: "quadruped-torso/1". Sa disposition est celle du corps roulant en ses propres termes : déplacement au sol (démarche de marche uniquement), repos debout inactif (standby), une danse debout créée, mains canoniques, et tout le reste refusé. Lisez profiles.quadrupedTorso dans le contrat. Utilisez l'armature canonique. Les jambes canoniques sont les pattes avant ; les articulations arrière supplémentaires peuvent se trouver sous Body (hanches) et Root (sabots) et sont pilotées par vos propres clips. Le support reste le disque de navigation humanoïde. Debout comme le moteur de rendu le met debout (la pose Idle, centrée sur la boîte x/z de cette pose à la hauteur d'épaule ajustée), et tout au long de Idle, Standby_Loop et Dance_Loop (chaque temps clé ; un clip debout avec plus de 64 temps clés distincts, ou un corps nécessitant plus de 1 000 000 de poses de sommets skin-nés à mesurer, est refusé body.too-complex ; les deux limites sont dans le contrat comme footprintKeys et footprintWork), chaque sommet en dessous des hanches doit rester dans footprintRadius (0,28 m) ; les sommets pondérés uniquement aux articulations des bras ne sont pas comptés, car le moteur de rendu réajuste les bras à la portée fixe, ou l'admission refuse body.footprint. Tenez les jambes droites : une pose debout décalée d'humain copiée sur les pattes arrière ne convient pas. Les sabots arrière sont visuels : le monde ne les place pas sur le terrain. tools/body-authoring/centaur/author.mjs est un exemple concret.