{"id":25065484,"url":"https://github.com/fastestmolasses/bevy_animator_controller","last_synced_at":"2025-03-31T13:18:56.547Z","repository":{"id":274404799,"uuid":"922763388","full_name":"FastestMolasses/bevy_animator_controller","owner":"FastestMolasses","description":null,"archived":false,"fork":false,"pushed_at":"2025-01-27T05:13:05.000Z","size":294,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-27T07:49:40.404Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FastestMolasses.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-27T02:31:57.000Z","updated_at":"2025-01-27T05:13:08.000Z","dependencies_parsed_at":"2025-01-27T05:38:32.587Z","dependency_job_id":null,"html_url":"https://github.com/FastestMolasses/bevy_animator_controller","commit_stats":null,"previous_names":["fastestmolasses/bevy_animator_controller"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FastestMolasses%2Fbevy_animator_controller","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FastestMolasses%2Fbevy_animator_controller/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FastestMolasses%2Fbevy_animator_controller/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FastestMolasses%2Fbevy_animator_controller/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FastestMolasses","download_url":"https://codeload.github.com/FastestMolasses/bevy_animator_controller/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246473279,"owners_count":20783236,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-02-06T19:27:24.655Z","updated_at":"2025-03-31T13:18:56.517Z","avatar_url":"https://github.com/FastestMolasses.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bevy Animator Controller\n\nA 3D animator controller for Bevy based on the Unity Animator Controller, built on top of [ozz-animation-rs](https://github.com/SlimeYummy/ozz-animation-rs).\n\n## Features\n\n- Animation layers\n- Animation parameters\n- Blend trees\n- States\n- Transitions\n- Ozz asset loader\n\n## Example\n\n```rs\nuse bevy::prelude::*;\nuse bevy_animator_controller::prelude::*;\n\n// Using `bevy_asset_loader` to load assets\n// Can be done through Bevy normally too\n#[derive(AssetCollection, Resource)]\npub struct PlayerAnimationAssets {\n    #[asset(path = \"greatsword_idle.ozz\")]\n    pub player_idle: Handle\u003cOzzAsset\u003e,\n    #[asset(path = \"skeleton.ozz\")]\n    pub skeleton: Handle\u003cOzzAsset\u003e,\n    #[asset(path = \"base_man.glb#Scene0\")]\n    pub player_mesh: Handle\u003cScene\u003e,\n}\n\nfn build_player_animation_controller(\n    player_animations: \u0026Res\u003cPlayerAnimationAssets\u003e,\n    mut ozz_assets: ResMut\u003cAssets\u003cOzzAsset\u003e\u003e,\n) -\u003e Option\u003cAnimatorController\u003e {\n    // Load skeleton\n    let skeleton = ozz_assets.get_mut(\u0026player_animations.skeleton)?;\n    let Ok(skeleton) = Skeleton::from_archive(\u0026mut skeleton.archive) else {\n        return None;\n    };\n    let skeleton = Arc::new(skeleton);\n\n    // Load idle animation\n    let idle_anim = ozz_assets.get_mut(\u0026player_animations.player_idle)?;\n    let Ok(idle_anim) = Animation::from_archive(\u0026mut idle_anim.archive) else {\n        return None;\n    };\n    let idle_anim = Arc::new(idle_anim);\n\n    // Construct the animation controller\n    let mut animation_layer = AnimationLayer::new(\n        \"Base Layer\".to_string(),       // Layer name\n        LayerBlendType::Override,       // Layer blend type\n        1.0,                            // Layer weight\n        \u0026skeleton,                      // Skeleton\n        \"greatsword_idle\".to_string(),  // Default state name\n    );\n\n    let idle_state = SimpleState::new(idle_anim, skeleton.num_soa_joints());\n    animation_layer.add_state(\n        \"greatsword_idle\".to_string(),      // State name\n        AnimationState::Simple(idle_state), // State type\n    );\n\n    // Add parameters\n    let mut parameters = Parameters::new();\n    parameters.set_float(\"speed\", 0.0);\n\n    Some(AnimatorController::new(\n        skeleton.clone(),\n        vec![animation_layer],\n        parameters,\n    ))\n}\n```\n\n## License\n\n* MIT License ([LICENSE-MIT](LICENSE-MIT) or [http://opensource.org/licenses/MIT](http://opensource.org/licenses/MIT))\n* Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0))\n\n## Credits\n\nThe example model is taken from [Turbosquid](https://www.turbosquid.com/3d-models/slender-man-lores-base-mesh-3d-model-2236602).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffastestmolasses%2Fbevy_animator_controller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffastestmolasses%2Fbevy_animator_controller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffastestmolasses%2Fbevy_animator_controller/lists"}