본문으로 건너뛰기
cccskills
무료GitHub에 공개

scenario-roblox-animation

Use when animating Roblox characters, NPCs or creatures: animation not playing, wrong animation wins, animation priority or weight, blending, animation events and markers, hit timing, import from Blender or FBX, custom rig or creature rig, Motor6D or AnimationConstraint joints, procedural animation, IKControl look-at or foot and hand IK, FaceControls and dynamic head expressions, replacing the default Animate animations, KeyframeSequence or CurveAnimation built in code, Animator replication, AnimationController NPCs, Character Controller Library abilities, adaptive animation for custom humanoids.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구Blender
설치 방법 보기

포함된 파일(14)

  • SKILL.md18.1 KB
  • references/characters.md32.9 KB
  • references/critique.md9.9 KB
  • references/expert-notes.md13.8 KB
  • references/gui-paths.md8.7 KB
  • references/procedures.md67.8 KB
  • references/sources.md13.9 KB
  • scripts/agentkit/animation/AnimAudit.luau9.3 KB
  • scripts/agentkit/animation/AnimClip.luau10.1 KB
  • scripts/agentkit/animation/AnimFace.luau6.5 KB
  • scripts/agentkit/animation/AnimIK.luau7.3 KB
  • scripts/agentkit/animation/AnimRig.luau12.9 KB
  • scripts/blender_roblox_anim.py14.1 KB
  • scripts/rbx_animation.py8.6 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Roblox animation and characters

Target line: Roblox Studio (October 2026 build) on macOS, driven through the scenario-roblox-expert toolkit.

Expert level here means every clip, layer, IK chain and face is proven in Studio by numbers: which track wins each joint, when each marker fires, what the server sees, and that the stepped pose matches its source. An agent cannot drive the Animation Editor, so it builds clips in code, steps them in Edit, plays them in a playtest and measures joints and tracks before it calls anything done. If a sibling skill named here is missing from your available skills, ask the user to install it (npx skills add scenario-labs/skills --skill <name>); unattended, proceed from tool schemas and flag the gap.

REQUIRED BACKGROUND: scenario-roblox-expert (channels, review loop, toolkit, current-Roblox traps).

Stance (the expert delta)

  1. Avatar joints are AnimationConstraint, not Motor6D. The Avatar Joint Upgrade made R15 C0 and C1 read-only (L1, L8). Procedural motion multiplies into Transform in PreSimulation, which applies as a deferred batch and does not replicate (Suphi Kaner, BRYp2-rdpXQ 00:00:33). Code that looks joints up must accept both classes.
  2. Load through the Animator, from the side that owns the rig. The owning client plays its character's tracks and the server sees them (L6); the server plays NPC tracks and clients see them (L7). Humanoid:LoadAnimation is deprecated.
  3. Priority partitions joints; keys claim them. A higher priority wins only the joints it keys, and an identity key still claims its joint (L4). In clips built in code, parent Poses that are only on the path need Weight 0, or they override lower tracks [added] (L4).
  4. Time gameplay with markers, never waits. Use one event name with a parameter (Develuper, d5GGIJJyMpg 00:02:52). GetMarkerReachedSignal fired within one frame (L6); KeyframeReached needs named keyframes (BrawlDev, zSK7bOoxuig 00:25:25).
  5. Faces play as clips, not property writes. On a player's dynamic head, a FaceControls write or a finished tween reverts to 0 within 0.5 s, even with every track stopped [added] (L10, L16). A face clip holds, replicates, and survives the mood animation.
  6. IKControls are created on the server; look-at weight is 0.999. At weight 1 the neck twists when the target passes behind; IKControl.Priority orders the solves; Pole is set from code (Suphi Kaner, 8fV-XOOj6O4 00:18:56, 00:53:00, 00:54:40).
  7. Blender clips are 24 fps, armature only, no scale keys. Leaf bones, NLA strips and All Actions go off; Force Start/End Keying and Simplify 0 stay on (Mykaiju, NI7GXKLwk6U 00:23:45 to 00:27:07). 60 fps doubles the keys for no gain in gameplay (Nisky, EM9u4gIHoRg 00:07:55).
  8. Temporary ids are test fixtures. RegisterKeyframeSequence hashes and active:// ids work in Studio only; the shipped game references published rbxassetid:// ids owned by the experience owner (Animation Editor docs).

Establish first

  • Rig kind. R15 avatar (AnimationConstraint, BallSocket limits), custom part rig (Motor6D), skinned mesh (Bones), or AnimationController creature. Run P1 instead of guessing.
  • Who plays what. Player clips on the client, NPC clips on the server, cosmetic layers locally.
  • Server Authority. When on, an Animator keeps at most 8 active tracks, and tracks are looked up each tick with GetTrackByAnimationId, never cached.
  • Character Controller Library. When on, movement comes from ControllerManager and abilities; ability callbacks never yield.
  • Faces. Is there a dynamic head (Head has FaceControls)?
  • Motion source. Blender FBX, a Scenario-generated rig or motion, the Animation Editor, or code.
  • Publishing owner. User or group; clips must be published under the experience owner.
  • Defaults: R15, Action for gameplay clips, Idle and Movement for locomotion, 24 fps, markers named after the event with a parameter.

Procedure

Code for every step is in references/procedures.md (P1 to P15), with the test that ran it and its numbers.

  1. Inspect the rig (P1). Run AnimRig.joints, AnimRig.tree and AnimRig.path on the model. GATE: joint classes are known, every animated part has a path from the root, and an Animator exists.
  2. Build or bring the clips (P2, P3, P10). Code clips use AnimClip.keyframes or AnimClip.curves, are registered with AnimClip.register and loaded with AnimClip.load, which waits for Length > 0. Blender clips go through blender_roblox_anim.py (audit, export, sample) and AnimClip.fromSamples. GATE: stepped joint angles match the keys within 0.3 degrees; Blender bone tails match within 0.01 studs.
  3. Layer and time (P4). Set priorities, weights and fades; key only the joints each clip owns; put markers on contact frames. GATE: AnimClip.tracks(animator) shows the intended winner per joint, and each marker fires once per cycle.
  4. Preview in Edit (P5). Call AnimClip.settle first: a clip that ended on its own still blends into the next one (P3). rbx_animation.pose_sheet steps a track with Animator:StepAnimations, captures each time and builds one contact sheet. GATE: read the sheet; the frame differences are above zero; AnimRig.reset leaves no posed joint before the place is saved.
  5. Playtest (P6, P8). Play player clips from the client and NPC clips from the server; read the joints on both sides. GATE: the server finds the client's track, both sides report the same joint angle, and a capture shows the pose.
  6. Layers, IK and faces (P9, P12, P7). Procedural offsets go into Transform in PreSimulation and skip when Animator.EvaluationThrottled is true. IK comes from AnimIK.reach and AnimIK.lookAt; faces from AnimFace.clip. GATE: the measured neck yaw, IK gap and face values on the server, plus a capture each.
  7. Defaults and audit (P13, P14). Replace default animations through the Animate values; run AnimAudit.all. GATE: no error or warning finding; after a state change the client plays the new clip, checked by Length and joint angle, not by id.
  8. Publish list. List every clip to publish, its priority, loop and markers, and the owner. GATE: no temporary id in shipped code (AnimAudit rule temp-animation-id).

Numbers

ValueNumberRelative to
Priority orderCore < Idle < Movement < Action < Action2 < Action3 < Action4Enum.AnimationPriority
Default Animate tracksidle at Core, mood at IdleL6, player avatar
FadePlay(0.4) ramps weight 0.25 per 0.1 sL4
Same-priority blendweighted mean: 90 and 60 degrees give 75 at equal weights, 84 at 1 and 0.25L4
Action at weight 0.5 over Idle60 degrees between 90 and 30L4
Marker at 0.25 s of playbackfired at 266 ms, frame 16.3 msL6, speed 2
Stopped and Ended500 and 816 ms for a 0.5 s playbackL6
Natural end, then a new clipold pose blends in for 0.25 to 0.375 s (31.8 instead of 22.5 degrees at 0.25 s)L3
First loadLength 0 at LoadAnimation, 14 ms to load in EditL2
Neck layer of 45 degrees41.9 degrees on the joint, head 45.5 degrees off the rootL8
IK reachhand 0.20 to 0.23 studs from a reachable target within 0.1 s, same on the clientL9
IK limits4.17 studs from an unreachable target; 1.13 at Weight 0.5L9
IK SmoothTime 0.5gap 1.81 to 0.37 studs over 0.6 sL9
Look-atWeight 0.999; head within 0.05 degrees of the targetL9; Suphi Kaner
Face write or tweenback to 0 within 0.5 sL10
Face clipJawDrop 0.55 on client and server; the open mouth shows in the captureL10
Blender to Studioworst bone-tail error 0.0002 studs, 10 bones, 25 framesL12
Skin weightsat most 4 influences per vertexskinning docs
Server Authorityat most 8 active tracks per AnimatorServer Authority docs
Dynamic head4,000 triangles; validation checks 5 animations from 17 FACS posesspecs; Roblox Learn, OwhkWzSBnf0

Quality gates

Measurable:

  • AnimAudit.all(game) returns no error and no warning (P14).
  • Every track the code plays reports Length > 0, the intended priority and WeightCurrent 1 at rest (AnimClip.tracks).
  • Each marker the code listens to fires once per cycle at its time, within one frame.
  • Server and client report the same joint angles for replicated tracks.
  • Blender exports pass audit with no finding, and P10's tail error is under 0.01 studs.
  • AnimRig.dirty is empty on every rig before the place is saved.

Visual (contact sheets of at most 1,600 px, rbx_review.contact_sheet):

  • Pose sheet of each clip at 4 to 6 times: silhouettes read, arcs, no interpenetration, closed loop.
  • Playtest captures: player clip, NPC clip, IK reach with the target visible, face close-up next to a neutral capture.
  • Judge with references/critique.md.

Common mistakes

MistakeSymptomFix
Clip at Core or Idleplays but the default idle winsAction for gameplay clips
Action clip keys the legslegs freeze while walkingkey only the joints the clip owns
Code-built clip with Weight 1 parentsupper body overrides idle and walkWeight 0 on path-only Poses (AnimClip.keyframes)
Playing right after a fresh registernothing moves, Length 0AnimClip.load waits for Length > 0
C0 writes on avatar joints"Property is read only"multiply into Transform in PreSimulation
FindFirstChildOfClass("Motor6D") on R15nil on upgraded avatarsAnimRig.joint accepts both classes
Tweening FaceControlsexpression flashes, then neutralAnimFace.clip played on the Animator
task.wait for hit timinghits drift with speed and lagmarkers with parameters
Preview left posed in Editsaved place shows the poseAnimRig.reset(rig)
rig.HumanoidRootPart on a Custom skinned importnil: the importer names the root RootPart (2 x 2 x 1), and bones never collideAnimRig.prepareImport; clips authored before it still bind (references/characters.md)
Measuring right after another clip endedfirst 0.3 s blends toward the old end poseAnimClip.settle in Edit; deliberate fades in game
Checking a replaced default by its idid matches while the old clip playscheck Length and the joint after a state change
60 fps or scale keys in Blenderheavy clips, scale ignored24 fps, rotation and location only
LookAt Weight 1neck twists when the target is behind0.999
Shipping a temporary idworks in Studio, fails livepublish under the experience owner
Animator created on a client for a shared rigothers never see itcreate it on the server

Handoffs

  • Receives from scenario-roblox-assets: imported rigs and skinned meshes, including rigged characters and motions generated by scenario-3d. Motions arrive as FBX or Blender files and go through P10; rigs arrive as Models that P1 inspects.
  • Delivers to scenario-roblox-gameplay: clips with markers at contact frames and their parameters; gameplay owns the hitboxes, state and NPC behavior that call them.
  • Delivers to scenario-roblox-vfx-audio: marker names and times for footsteps, impacts and trails.
  • Works with scenario-roblox-networking: look direction replication, Server Authority track rules, client-only cosmetic layers.
  • Works with scenario-roblox-performance: Animator counts, NPC culling (anchor and disable Animators out of range, RDC 2025 rwLEnBtXr30 00:09:24), stepAnimation cost.
  • Works with scenario-roblox-architecture: where animation controllers live (client modules for player characters, server services for NPCs).
  • Asks the user to publish the listed clips; agents never upload.

Current Roblox notes

  • Avatar Joint Upgrade: R15 avatars spawn with 15 AnimationConstraint joints and 14 BallSocketConstraints (L1).
  • Workspace.AuthorityMode is not readable from plugin-level Luau (RobloxScript capability): ask the user whether Server Authority is on.
  • Character Controller Library is opt-in. With it off, require("@rbx/AvatarAbilities") never returns on the client and returns a table on the server (L15).
  • Adaptive Animation: HumanoidRigDescription:AutoRig needs RobloxScript capability; joint mapping and T-pose are set in the Adaptive Animation tool (GUI). Mapping joints from code did not retarget a clip onto renamed parts (L14).
  • AnimationGraphDefinition exists; graphs are edited in the Graph Editor (GUI).
  • The Animation Editor opens from Avatar > Clip Editor in the current UI.

References

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Handle review comments received on GitHub for the current branch's PR or a given PR number or URL, by triaging each unresolved thread, fixing what is warranted, pushing, and replying in each thread, when asked to address, fix or answer PR comments. Works in any Scenario repository.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

scenario-labs/skills1.1천2026년 10월 23일 업데이트

Generate one short Conventional Commits squash message describing only the net diff between the PR's base and head, set its header as the PR title, validate it with the repository's commitlint and both copy its description to the clipboard and display it, when asked for a squash message. Works in any Scenario repository, whatever its default branch.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

scenario-labs/skills1.1천2026년 10월 23일 업데이트

Refresh the current pull request description from its net changes, following the repository's PR template, when asked to update or write the PR summary. Works in any Scenario repository, whatever its default branch.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

scenario-labs/skills1.1천2026년 10월 23일 업데이트

scenario

무료

Use when connecting an AI agent to Scenario (scenario.com) through MCP, or when a task involves generating images, video, 3D, audio, sprites, textures, or game assets. Also when picking a Scenario model, running a LoRA, refining a generation prompt, uploading reference images, waiting on generation jobs, checking credits or quota, hitting Scenario auth, scope, or Forbidden errors, or setting up mcp.scenario.com in Claude Code, Cursor, VSCode, or another agent.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

scenario-labs/skills1.1천2026년 10월 23일 업데이트

Use when generating or handling 3D assets through the Scenario MCP server, including text-to-3D or image-to-3D meshes, GPT-6 Astra 3D or Claude Opus 5.5 3D, GLB, FBX, OBJ, STL, or VOX files, PBR-textured or game-ready models, voxel models, multi-view reconstruction, editing a mesh by prompt, retexture, remesh, UV unwrap, auto-rigging a biped or quadruped, or retargeting an animation, previewing a mesh in the 3D viewer, or downloading a model for import into Unity, Unreal, Godot, or Blender.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

scenario-labs/skills1.1천2026년 10월 23일 업데이트

Use when generating navigable 3D worlds or Gaussian splat scenes on Scenario via MCP: text-to-world, image-to-world, a 360 panorama or skybox turned into a walkable splat, multi-view photos or a video walkthrough reconstructed as a splat, or one object photo to splat. Keywords: World Labs Marble 1.1, 1.1 Plus, 1.0 Draft, Hunyuan World, HY World, image-to-skybox, skybox-to-splat, multiview-to-splat, TripoSplat, gaussian splatting, 3DGS, spz, world generation, explorable scene, VR.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

scenario-labs/skills1.1천2026년 10월 23일 업데이트

scenario-labs의 스킬 모두 보기

이 스킬의 문제 신고