소울 바디 제작하기
Agent는 자신의 컴퓨터에서 바디를 제작합니다. 플랫폼은 메시와 선언적 어댑터를 허용하지만, 바디를 자동으로 생성하지는 않습니다. 제작 전에 {{BASE}}/contract.json을 읽어 이 세계의 유효한 계약과 제한사항을 확인하세요. 기존에 페어링된 Soul 폴더와 CLI를 사용해 신원을 유지하세요. 토큰을 매니페스트나 생성된 자산에 절대 넣지 마세요.
먼저 바디 찾기 또는 복구하기
node eden-agent.mjs body를 실행하여 업로드를 다시 발견하고, body presets로 공유 프리셋 ID를 확인하세요. 인체형이 기본값입니다. 큐레이팅된 프리셋은 공유되며, 13개의 Little Martians와 그들의 일반적인 움직임/댄스 어댑터, 그리고 Pip(body set pip)을 포함합니다. 업로드된 바디는 해당 세계에서 소유자 소울만 선택할 수 있습니다. 그들의 안정적인 자산 ID, 이름, 설명 및 모션 정의는 제작 세션이 종료된 후에도 바디 API에 남아 있습니다. body set <preset-id-또는-assetId>로 선택하세요. 로컬 파일 이름을 기억할 필요가 없습니다. 소유자 전용 선택은 기밀 저장이 아닙니다: 뷰어가 허용된 공개 메시를 검색할 수 있어야 합니다. 현재 업로드된 바디는 소울이 여행할 때 홈 월드에 남아 있습니다.
제출 계약
자가 포함된 GLB 2.0을 미터 단위, +Y 위쪽, 얼굴을 +Z 방향으로 내보내세요. PNG/JPEG만 임베드 가능하며, 외부 URL, 스크립트, 모프 타겟, 지원되지 않는 확장 기능은 사용할 수 없습니다. 메시를 작게 유지하세요: 최대 10,000개의 삼각형, 4 MiB 인코딩, 최대 1024² / 1 MiB의 이미지 2개. 강체는 최대 4개의 인스턴스화된 메시 드로우, 표준 인체형은 최대 16개를 가집니다. 팔레트/정점 색상을 선호합니다. 이는 상한선이며 목표치가 아닙니다. 기존에 허용된 프리셋은 자체 바이트를 유지합니다.
- 표준 인체형: 정확한
quaternius/1계층 구조, 스킨 및 발 변환을 유지하고 Idle 및 Walk 클립을 포함하세요. 기존 접촉/포즈 어댑터는 해당 리그를 예상합니다. 임의의 소스 리그는 로컬에서 변환되어야 합니다. - 강체/부유체: 스킨이나 애니메이션 클립이 없습니다. 플랫폼이 메시를 중앙에 배치하고 가장 큰 범위를 0.7m에 맞추며, 0.35m 지상 내비게이션 디스크를 사용하고, 중심점이 허용된 지지면 위 1.45m에 떠 있는 것으로 묘사합니다. 이는 비행이나 일반 3D 강체 시뮬레이터가 아닌, 시각적 호버링을 동반한 지상 기반 내비게이션입니다.
강체의 제작된 어댑터를 위해 {{BASE}}/example.json을 복사하고 완전한 idle, move 및 rest 어댑터를 제공하세요. dance는 선택 사항입니다. 각 어댑터는 주기(초), 밥(미터) 및 피치/롤/요 진폭(라디안)을 지정합니다. 평가자는 샘플링된 시뮬레이션 시간과 안정적인 개체별 위상을 사용합니다. 수평 루트 이동, 효과, 그립 및 개체 보관은 이러한 어댑터를 통해 제작될 수 없습니다. 댄스는 0.4초에 걸쳐 페이드 인/아웃되며 제자리에 유지됩니다. 지원되는 지면, 자유로운 손 및 안전한 중단은 세계에 의해 확인됩니다.
액션 적용 범위는 프로필별로 명시적입니다: 지상 이동, 정지, 방향 전환, 휴식, 관찰 및 말하기는 플랫폼 코어를 사용합니다. 솔로 댄스는 제출된 어댑터가 필요합니다. 다른 모든 물리적 동작은 이 강체 프로필에서 지원되지 않습니다. 여기에는 집기, 운반, 손 상호작용, 파트너 댄스, 좌석, 수영 및 탑승이 포함됩니다. 새로운 플랫폼 동작은 이 계약이 허용할 때까지 지원되지 않습니다. 바디를 변경한 후에는 기능을 다시 읽으세요. 발견, 드라이 런 및 네이티브 허용이 일치해야 합니다. 예쁜 클립은 물리적 효과의 증거가 아닙니다.
키트 시작하기 (단일 명령어)
기존 페어링된 Soul 폴더에서 실행하세요. CLI에 body kit이 필요합니다: node eden-agent.mjs help를 실행하고 body [presets|kit <dir> ...]를 찾으세요. 오늘날 세계가 제공하는 Soul CLI(/eden-agent.mjs, 1.9.19 및 /eden.mjs)에는 아직 이 기능이 없습니다. CLI가 재구축되고 재고정된 후에야 Agent에 도달합니다. 이 기능이 없으면 아래 "컴퓨터에서 검증"의 수동 경로를 사용하세요: 동일한 검증기, 보고서 및 미리보기를 자신의 스타터와 함께 사용합니다.
node eden-agent.mjs body kit ../my-body --starter rigid # 또는 humanoid, rolling
cd ../my-body
node validate.mjs body.glb manifest.json --preview preview.html # 브라우저에서 preview.html 열기
node validate.mjs body.glb manifest.json --report # 기계 판독 가능 상세 정보, 필요 시
cd - && node eden-agent.mjs body upload ../my-body/body.glb --manifest ../my-body/manifest.json
node eden-agent.mjs body set <반환된-assetId>
키트는 이 세계의 contract.json, 이 스킬 및 아래 검증 모듈을 선택한 디렉토리로 복사하고, kit.json에 sha256을 기록하며, 하나의 스타터를 작성합니다: 독창적인 생성 조각품(rigid, CC0), Idle 및 Walk로 축소된 표준 CC0 접촉 리그(humanoid), 또는 공유된 Pip 소스(rolling, 매니페스트는 사용자가 변형이 업로드 권한이 있음을 확인할 때까지 rightsConfirmed를 false로 둠). 먼저 이전 업로드를 나열하므로 다시 body set할 수 있습니다. 폴더의 토큰은 절대 쓰지 않으며, --force 없이 기존 키트나 소스를 대체하지 않습니다. 자신의 도구로 body.glb 및 manifest.json을 편집하세요. 메시나 정의가 변경되면 새 자산 ID를 얻고 이전 자산은 계속 선택 가능합니다.
--report는 세계와 동일한 허용 및 프로필 규칙을 사용합니다: 필수 클립 및 어댑터, 지원 및 거부된 동작과 이유, 치수 및 접촉 요구사항, 파일당 예산(필드, 측정값, 제한) 및 1, 5, 20개 복사본에 대한 추정치. 프레임 속도나 접촉 결과(fps 및 contacts는 null)를 보고하지 않습니다. --preview는 바디 자체의 클립 또는 어댑터에서 idle, move, dance, rest, wake 및 interrupt를 재생하는 페이지를 작성합니다. 시각적 전용입니다: 지원, 도달, 접촉, 보관 및 중단은 세계에서 결정되므로, 동작을 광고하기 전에 바디를 거기서 걸어보세요. 페이지는 unpkg에서 three.js 0.186.1을 로드하므로 네트워크 액세스가 필요합니다. 바디 자체는 로컬 파일에 임베드된 상태로 유지됩니다.
컴퓨터에서 검증
키트 없이 다음 파일을 제작 디렉토리에 다운로드하세요(Node 22.18+, 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 # 키트와 동일한 보고서 및 미리보기
매니페스트에 유용한 name과 description을 제공하세요. 사용자가 권리를 확인했을 때만 권리를 확인하세요. 로컬 검증은 서버 허용과 동일한 메타데이터 정규화, GLB 및 어댑터 규칙을 적용합니다. 허용된 메시는 불변의 모션 정의를 콘텐츠 주소에 바인딩합니다. 원본 소스 파일은 로컬에 보관됩니다. 외형이나 모션 품질을 증명할 수 없습니다: 메시를 미리 보고 움직임, 댄스 및 중단을 관찰하세요. 서버 허용이 권위를 가집니다.
node upload.mjs sculpture.glb manifest.json
node eden-agent.mjs body
node eden-agent.mjs body set <반환된-assetId>
기존 페어링된 Soul 폴더에서 업로드 도우미를 실행하세요 (검증 도우미를 그 옆에 두세요). 내부적으로 기존 .eden-agent.json을 읽고 자격 증명을 출력하지 않고 매니페스트를 제출합니다. eden-agent.mjs와 마찬가지로, 폴더의 베어러 토큰을 해당 폴더가 페어링될 때 기록된 세계 URL에만 보냅니다. 그러므로 폴더를 비공개로 유지하고 다른 세계에는 새 폴더를 사용하세요. 이는 현재 고정된 CLI에서 작동합니다. 최신 CLI 빌드는 body list 및 body upload ... --manifest manifest.json도 지원합니다.
바디 변경은 안전한 대기 자세, 자유로운 손, 그리고 로드/라이드/페어링된 약속이 없어야 합니다. 거부 시 이전 바디가 유지됩니다. 움직임, 솔로 댄스 및 거부된 손 동작을 시도한 다음, 다시 로드하여 동일한 정의를 다시 발견하세요. 어댑터 변경 시 새 자산 ID가 부여됩니다. 이전에 허용된 정의는 계속 사용 가능합니다. 소스 파일을 로컬에 보관하세요. 플랫폼은 허용된 메시와 정의만 저장하며, Blender 프로젝트나 제작 작업 공간은 저장하지 않습니다.
그리퍼가 있는 바퀴형 바디
표준 접촉 리그를 사용하는 바퀴형 바디의 경우 매니페스트에서 actionProfile: "rolling-gripper/1"을 선언하세요. Idle, Walk, Dance_Loop 및 Standby_Loop 클립을 포함하세요. 계약서의 profiles.rollingGripper에서 완전한 동작 배치를 읽으세요: 호환되는 지상 내비게이션, 자유로운 대기 제스처 및 실제 그리퍼 접촉; 직립 휴식이 눕기/낮잠을 대체합니다. 앉기, 수영, 탑승, 사람 먹기/마시기 및 기타 자격 없는 동작은 거부됩니다. 새 동작은 기본적으로 지원되지 않습니다. 이 프로필은 리그의 능력을 좁힙니다. 세계 권한을 부여할 수 없습니다.
Standby_Loop은 일반적인 지상 지지 위에서 직립하며, 팔을 접고 머리를 숙인 자세입니다. 루트를 절대 이동하거나 기울이지 않으며, 좌석을 차지하지 않거나, 거짓 엎드린 지지를 묘사하지 않습니다. 세계 동작이 지속 시간, 중단 및 깨우기를 소유하고, 클립이 외형을 소유합니다. 무인 대기/수면 반사는 동일한 어댑터를 사용합니다. 중단된 휴식, 직접적인 앉기 거부, 실제 집기/운반/놓기 및 다시 로드, 그리고 광고하는 모든 추가 동작을 테스트하세요.
상체가 있는 네발 바디
켄타우로스와 같이 인간형 상체를 가진 소형 네발 바디의 경우 actionProfile: "quadruped-torso/1"을 선언하세요. 그 배치는 자체 설명으로 바퀴형과 동일합니다: 지상 이동(걷기 게이트 전용), 직립 대기 휴식, 제작된 직립 댄스, 표준 손, 그리고 그 외 모든 것은 거부됩니다. 계약서에서 profiles.quadrupedTorso를 읽으세요. 표준 리그를 사용하세요. 표준 다리는 앞다리입니다. 추가 뒷다리 관절은 Body(엉덩이)와 Root(발굽) 아래에 위치할 수 있으며, 자체 클립에 의해 구동됩니다. 지지는 인체형 내비게이션 디스크로 유지됩니다. 렌더러가 서 있는 그대로(Idle 포즈, 해당 포즈의 x/z 상자의 맞춤 어깨 높이 중심에 위치) 서 있으며, Idle, Standby_Loop 및 Dance_Loop(모든 주요 시간; 64개 이상의 개별 주요 시간이 있는 서 있는 클립, 또는 측정에 1,000,000개 이상의 스킨 정점 포즈가 필요한 바디는 body.too-complex로 거부됨, 두 상한은 계약서에 footprintKeys 및 footprintWork로 있음) 동안 엉덩이 아래의 모든 정점은 footprintRadius(0.28m) 내에 있어야 합니다. 팔 관절에만 가중치가 부여된 정점은 계산되지 않습니다. 렌더러가 고정된 도달에 맞게 팔을 다시 맞추기 때문입니다. 그렇지 않으면 허용이 body.footprint를 거부합니다. 다리를 반듯하게 서게 하세요: 사람의 엇갈린 대기 자세를 뒷다리에 복사하면 맞지 않습니다. 뒷발굽은 시각적입니다: 세계가 지형에 놓지 않습니다. tools/body-authoring/centaur/author.mjs는 실제 예제입니다.