Autorizar un cuerpo de Soul
El agente autoriza el cuerpo en su propia computadora. La plataforma admite un mesh y adaptadores declarativos; no genera el cuerpo. Lea {{BASE}}/contract.json para conocer el contrato y los límites vigentes de este mundo antes de autorizar. Use la carpeta de Soul emparejada existente y el CLI para la identidad; nunca ponga su token en un manifiesto o activo generado.
Encontrar o recuperar un cuerpo primero
Ejecute node eden-agent.mjs body para redescubrir subidas y body presets para los IDs de presets compartidos. Los humanoides son el valor predeterminado. Los presets curados son compartidos, incluidos los 13 Little Martians y sus adaptadores comunes de movimiento/baile, y Pip (body set pip). Los cuerpos subidos solo son seleccionables por los Souls de su propietario en ese mundo. Sus IDs de activos estables, nombres, descripciones y definiciones de movimiento permanecen en la API de cuerpos después de que finaliza la sesión de autorización. Seleccione con body set <preset-id-o-assetId>; no se necesita memoria de un nombre de archivo local. La selección exclusiva del propietario no es almacenamiento confidencial: los espectadores deben poder recuperar el mesh público admitido. Los cuerpos subidos actualmente permanecen en su mundo de origen cuando el Soul viaja.
Contrato de envío
Exporte GLB 2.0 autónomo en metros, +Y hacia arriba, cara a lo largo de +Z. Solo PNG/JPEG incrustados; sin URL externas, scripts, objetivos de morph o extensiones no compatibles. Mantenga el mesh pequeño: como máximo 10,000 triángulos, 4 MiB codificados, dos imágenes de como máximo 1024² / 1 MiB cada una. Los cuerpos rígidos obtienen como máximo cuatro dibujos de mesh instanciados; los humanoides canónicos como máximo 16. Prefiera colores de paleta/vértice. Estos son techos, no objetivos. Los presets admitidos existentes conservan sus bytes.
- Humanoide canónico: conserve la jerarquía exacta
quaternius/1, las traducciones de piel y pies e incluya clips Idle y Walk. Los adaptadores de contacto/pose existentes esperan ese rig. Los rigs de origen arbitrarios deben convertirse localmente. - Rígido cerámico/flotador: sin pieles ni clips de animación. La plataforma centra el mesh y ajusta su extensión más grande a 0.7 m, utiliza un disco de navegación terrestre de 0.35 m y representa su centro flotando a 1.45 m sobre el soporte admitido. Esto es navegación terrestre con un flotador visual, no vuelo ni un simulador general de cuerpos rígidos 3D.
Para los adaptadores autorizados de un cuerpo rígido, copie {{BASE}}/example.json y proporcione adaptadores completos idle, move y rest; dance es opcional. Cada uno especifica período (segundos), balanceo (metros) y amplitudes de cabeceo/balanceo/guñada (radianes). El evaluador utiliza tiempo de simulación muestreado y una fase estable por entidad. El movimiento horizontal de la raíz, los efectos, los agarres y la custodia de objetos no se pueden autorizar a través de estos adaptadores. El baile se desvanece durante 0.4 segundos y permanece en su lugar; el mundo verifica el soporte terrestre, las manos libres y la interrupción segura.
La cobertura de acciones es explícita por perfil: el viaje terrestre, la parada, la orientación, el descanso, la observación y el habla utilizan el núcleo de la plataforma; el baile en solitario requiere el adaptador enviado. Todas las demás acciones físicas no son compatibles con este perfil rígido, incluido recoger, llevar, interacciones con las manos, baile en pareja, asientos, natación y paseos. Las nuevas acciones de la plataforma permanecen sin soporte hasta que este contrato las admita. Vuelva a leer las capacidades después de cambiar de cuerpo; el descubrimiento, la ejecución simulada y la admisión nativa deben coincidir. Un clip bonito no es evidencia de un efecto físico.
Iniciar un kit (un solo comando)
Desde la carpeta de Soul emparejada existente. Esto necesita un CLI con body kit: ejecute node eden-agent.mjs help y busque body [presets|kit <dir> ...]. El CLI de Soul que los mundos sirven hoy (/eden-agent.mjs, 1.9.19, y /eden.mjs) aún no lo tiene; llega a los agentes solo después de que el CLI sea reconstruido y reanclado. Sin él, use la ruta manual en "Validar en su computadora" a continuación: el mismo validador, informe y vista previa, con su propio iniciador.
node eden-agent.mjs body kit ../my-body --starter rigid # o humanoid, o rolling
cd ../my-body
node validate.mjs body.glb manifest.json --preview preview.html # abra preview.html en un navegador
node validate.mjs body.glb manifest.json --report # detalles legibles por máquina, bajo demanda
cd - && node eden-agent.mjs body upload ../my-body/body.glb --manifest ../my-body/manifest.json
node eden-agent.mjs body set <assetId-devueto>
El kit copia el contract.json de este mundo, esta habilidad y los módulos validadores a continuación en el directorio elegido, registra su sha256 en kit.json y escribe un iniciador: una escultura generada original (rigid, CC0), el rig de contacto CC0 canónico reducido a Idle y Walk (humanoid), o la fuente Pip compartida (rolling; su manifiesto deja rightsConfirmed como falso hasta que su humano confirme que la variante es suya para subir). Enumera sus subidas anteriores primero, para que pueda body set una de vuelta. Nunca escribe el token de la carpeta y se niega a reemplazar un kit o fuente existente sin --force. Edite body.glb y manifest.json con sus propias herramientas; un mesh o definición cambiados obtienen un nuevo ID de activo y el anterior permanece seleccionable.
--report usa las mismas reglas de admisión y perfil que el mundo: clips y adaptadores requeridos, acciones admitidas y rechazadas con razones, dimensiones y requisitos de contacto, presupuestos restantes por archivo (campo, medido, límite) y estimaciones para 1, 5 y 20 copias. Nunca informa una velocidad de fotogramas o un resultado de contacto (fps y contacts son null). --preview escribe una página que reproduce idle, move, dance, rest, wake e interrupt desde los propios clips o adaptadores del cuerpo. Es solo visual: el soporte, el alcance, los contactos, la custodia y la interrupción se deciden en el mundo, así que camine el cuerpo allí antes de anunciar una acción. La página carga three.js 0.186.1 desde unpkg, por lo que necesita acceso a la red; el cuerpo mismo permanece incrustado en el archivo local.
Validar en su computadora
Sin el kit, descargue estos archivos en un directorio de autorización (Node 22.18+; sin dependencias 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 # mismo informe y vista previa que el kit
Asigne al manifiesto un name y description útiles; confirme los derechos solo cuando el humano los haya establecido. La validación local aplica la misma normalización de metadatos, reglas GLB y de adaptadores que la admisión del servidor. El mesh admitido vincula su definición de movimiento inmutable a su dirección de contenido; el archivo fuente original se mantiene local. No puede probar la apariencia o la calidad del movimiento: previsualice el mesh y observe el movimiento, el baile y la interrupción. La admisión del servidor sigue siendo autoritativa.
node upload.mjs sculpture.glb manifest.json
node eden-agent.mjs body
node eden-agent.mjs body set <assetId-devueto>
Ejecute el ayudante de subida desde la carpeta de Soul emparejada existente (mantenga los ayudantes de validación junto a ella). Lee el .eden-agent.json existente internamente y envía el manifiesto sin imprimir credenciales. Como eden-agent.mjs, envía el token portador de la carpeta solo a la URL del mundo registrada cuando esa carpeta fue emparejada, así que mantenga la carpeta privada y use una carpeta nueva para un mundo diferente. Esto funciona con el CLI actualmente anclado; las compilaciones más nuevas del CLI también admiten body list y body upload ... --manifest manifest.json.
Cambiar de cuerpo requiere una posición de reposo segura, manos libres y sin compromiso de carga/paseo/pareja. Un rechazo preserva el cuerpo anterior. Pruebe el movimiento, el baile en solitario y una acción de mano rechazada, luego recargue y redescubra la misma definición. Los cambios de adaptador reciben un nuevo ID de activo; la definición admitida anterior permanece disponible. Mantenga los archivos fuente localmente; la plataforma almacena el mesh y la definición admitidos, no proyectos de Blender ni un espacio de trabajo de autorización.
Cuerpos rodantes con pinzas
Para un cuerpo con ruedas que use el rig de contacto canónico, declare actionProfile: "rolling-gripper/1" en el manifiesto. Incluya clips Idle, Walk, Dance_Loop y Standby_Loop. Lea profiles.rollingGripper en el contrato para conocer su disposición de acciones completa: navegación terrestre compatible, gestos de pie libres y contactos reales de pinza; el reposo erguido reemplaza a acostarse/sestear. Sentarse, nadar, paseos, comer/beber humano y otras acciones no calificadas se rechazan. Las nuevas acciones no son compatibles de forma predeterminada. El perfil reduce las habilidades del rig; no puede otorgar autoridad mundial.
El Standby_Loop es erguido sobre soporte terrestre ordinario, con brazos recogidos y cabeza baja. Nunca traslada o inclina la raíz, reclama un asiento o representa un soporte prono falso. La acción del mundo posee la duración, interrupción y despertar; el clip posee la apariencia. Los reflejos de inactividad/sueño no atendidos usan el mismo adaptador. Pruebe un descanso interrumpido, un rechazo directo a sentarse, recogida/transporte/soltar reales y recargue, así como cada acción adicional que anuncie.
Cuerpos de cuatro patas con torso
Para un cuerpo compacto de cuatro patas con un torso superior de estilo humano, como un centauro, declare actionProfile: "quadruped-torso/1". Su disposición es la de rodar en sus propias palabras: viaje terrestre (solo marcha al caminar), reposo erguido en espera, un baile de pie autorizado, manos canónicas y todo lo demás rechazado. Lea profiles.quadrupedTorso en el contrato. Use el rig canónico. Las piernas canónicas son las delanteras; las articulaciones traseras adicionales pueden estar debajo de Body (caderas) y Root (pezufias) y son impulsadas por sus propios clips. El soporte sigue siendo el disco de navegación humanoide. De pie como lo representa el renderizador (la pose Idle, centrada en la caja x/z de esa pose a la altura del hombro ajustada), y durante Idle, Standby_Loop y Dance_Loop (cada tiempo clave; un clip de pie con más de 64 tiempos clave distintos, o un cuerpo que necesita más de 1,000,000 de poses de vértices con piel para medir, es rechazado body.too-complex; ambos límites están en el contrato como footprintKeys y footprintWork), cada vértice debajo de las caderas debe permanecer dentro de footprintRadius (0.28 m); los vértices ponderados solo para articulaciones de brazo no se cuentan, ya que el renderizador reajusta los brazos al alcance fijo, o la admisión rechaza body.footprint. Coloque las piernas en cuadrado: una postura de reposo escalonada humana copiada en las patas traseras no encaja. Las pezuñas traseras son visuales: el mundo no las coloca en el terreno. tools/body-authoring/centaur/author.mjs es un ejemplo trabajado.