# Blender's Animation System Architecture ``` mermaid stateDiagram-v2 direction TB AnimationDataKernel: Animation Data / Kernel EvaluationDepsgraph: Evaluation / Depsgraph EditorsUI: Editors/UI ShapeKeys: Shape Keys VertexWeights: Vertex Weights Autokeying: Auto-keying fcurvedriver.c: fcurve_driver.c fcurvecache.c: fcurve_cache.c SpaceGraph: Space Graph AnimationFiltering: Animation Filtering AnimUtils: Anim Utils NLAEditor: NLA Editor objectadd.cc: object_add.cc SpaceAction: Space Action poseslide.c: pose_slide.c nlabuttons.c: nla_buttons.c nlachannels.c: nla_channels.c nladraw.c: nla_draw.c nlaedit.c: nla_edit.c nlaselect.c: nla_select.c 21677769539609: 2-1677769539609 transformconvertaction.c: transform_convert_action.c transformationconvert.graph.c: transformation_convert.graph.c transformconvertnla.c: transform_convert_nla.c transformconvert.c: transform_convert.c transformmodetimeslide.c: transform_mode_timeslide.c transformmodetimescale.c: transform_mode_timescale.c transformmode.c: transform_mode.c transformsnapanimation.c: transform_snap_animation.c armatureupdate.c: armature_update.c curvedeform.c: curve_deform.c animmarkers.c: anim_markers.c MODarray.cc: MOD_array.cc overlayextra.cc: overlay_extra.cc DNAactiontypes.h: DNA_action_types.h DNAanimtypes.h: DNA_anim_types.h DNAarmaturedefaults.h: DNA_armature_defaults.h DNAarmaturetypes.h: DNA_armature_types.h DNAcurvetypes.h: DNA_curve_types.h DNAipotypes.h: DNA_ipo_types.h DNAnlatypes.h: DNA_nla_types.h DNAarmaturetypes.h: DNA_armature_types.h DNAcurvetypes.h: DNA_curve_types.h DNAipotypes.h: DNA_ipo_types.h Files: Files keyframesedit.c: keyframes_edit.c graphdraw.c: graph_draw.c graphview.c: graph_view.c spacegraph.c: space_graph.c DrawingCode: Drawing Code AnimationData: Animation Data animchannelsdefines.c: anim_channels_defines.c timescrubui.c: time_scrub_ui.c animdraw.c: anim_draw.c animdeps.c: anim_deps.c animsys.c: anim_sys.c GreasePencil: Grease Pencil animvisualization.c: anim_visualization.c ANIManimdatagetcontext: ANIM_animdata_get_context animfilter.c: anim_filter.c animdata.c: anim_data.c gpencilconvert.c: gpencil_convert.c interfaceanim.cc: interface_anim.cc keyframesedit.c: keyframes_edit.c keyframesgeneral.c: keyframes_general.c keyframesdraw.c: keyframes_draw.c animpath.c: anim_path.c actionedit.c: action_edit.c actiondraw.c: action_draw.c spaceaction.c: space_action.c armaturepose.cc: armature_pose.cc DrawingCode: Drawing Code posebackup.cc: pose_backup.cc layerutils.c: layer_utils.c actionbones.c: action_bones.c actionmirror.cc: action_mirror.cc nlaedit.c: nla_edit.c keyframeskeylist.cc: keyframes_keylist.cc keyframesgeneral.c: keyframes_general.c armatureselection.cc: armature_selection.cc armaturedeform.c: armature_deform.c armatureadd.c: armature_add.c animdeps.c --> graphview.c animdeps.c --> spaceaction.c animdeps.c --> actionedit.c animdeps.c --> spacegraph.c area.cc --> spacegraph.c ANIManimdatagetcontext --> graphview.c ANIManimdatagetcontext --> spaceaction.c ANIManimdatagetcontext --> actionedit.c ANIManimdatagetcontext --> spacegraph.c view2d.cc --> actiondraw.c view2d.cc --> spaceaction.c view2d.cc --> spacegraph.c view2d.cc --> graphdraw.c timescrubui.c --> spacegraph.c fcurve.c --> object.c fcurve.c --> fcurvecache.c fcurve.c --> ipo.c fcurve.c --> keyframing.c fcurve.c --> actionmirror.cc fcurve.c --> action.c fcurve.c --> fmodifier.c fcurve.c --> animdata.c fcurve.c --> nla.c fcurve.c --> animsys.c fcurve.c --> drivers.c fcurve.c --> poseslide.c graphdraw.c --> spacegraph.c spacetypes.c --> spaceaction.c spacetypes.c --> spacegraph.c constraint.c --> animpath.c constraint.c --> action.c constraint.c --> armature.c constraint.c --> armatureadd.c animdraw.c --> graphview.c animdraw.c --> spaceaction.c animdraw.c --> spacegraph.c animdraw.c --> graphdraw.c armature.c --> actionmirror.cc armature.c --> action.c animfilter.c --> actiondraw.c animfilter.c --> graphview.c animfilter.c --> actionedit.c animfilter.c --> graphdraw.c animvisualization.c --> action.c RNA --> graphview.c RNA --> actionedit.c object.c --> animpath.c object.c --> action.c NLA --> 31677766282721 NLA --> 21677769406494 NLA --> graphdraw.c NLA --> actionedit.c NLA --> 21677769432166 NLA --> 21677769391552 NLA --> 21677769539609 NLA --> graphview.c NLA --> animdraw.c animsys.c --> armaturepose.cc animsys.c --> action.c animdata.c --> action.c animdata.c --> animsys.c animdata.c --> armature.c animdata.c --> AnimationData nla.c --> ipo.c nla.c --> keyframing.c nla.c --> NLA nla.c --> keyframesedit.c nla.c --> poseslide.c nla.c --> animdata.c nla.c --> fcurve.c nla.c --> animsys.c nla.c --> NLA AnimationData --> animfilter.c AnimationData --> graphview.c AnimationData --> actionedit.c AnimationData --> graphdraw.c RNA --> RNA RNA --> RNA DrawingCode --> actiondraw.c DrawingCode --> graphdraw.c DrawingCode --> DrawingCode action.c --> animdata.c action.c --> actionmirror.cc action.c --> action.c RNA --> animdata.c RNA --> action.c RNA --> animsys.c curve.cc --> Curve curve.cc --> Curve Curve --> graphdraw.c animchannelsdefines.c --> animfilter.c animchannelsdefines.c --> actiondraw.c animchannelsdefines.c --> graphdraw.c interface.cc --> actiondraw.c interface.cc --> graphdraw.c actionbones.c --> armaturepose.cc actionbones.c --> posebackup.cc fcurvecache.c --> actionmirror.cc objectadd.cc --> nla.c interfaceanim.cc --> graphdraw.c actiondraw.c --> spaceaction.c transformconvertaction.c --> NLA transformconvertaction.c --> Keyframes transformationconvert.graph.c --> NLA transformationconvert.graph.c --> Keyframes transformconvertnla.c --> NLA transformconvert.c --> NLA transformmodetimeslide.c --> NLA transformmodetimescale.c --> NLA transformmode.c --> NLA transformsnapanimation.c --> NLA keyframesdraw.c --> actiondraw.c armatureupdate.c --> animpath.c armatureupdate.c --> fcurve.c curvedeform.c --> animpath.c displist.cc --> animpath.c Curve --> armature.c animmarkers.c --> actionedit.c animpath.c --> particle.cc animpath.c --> key.cc animpath.c --> vfont.cc animpath.c --> overlayextra.cc animpath.c --> MODarray.cc keyframesgeneral.c --> actionedit.c blendfile.cc --> ipo.c blendfile.cc --> blendfile.cc Gpencil --> actionedit.c FModifier --> actionedit.c keyframesedit.c --> actionedit.c key.cc --> object.c key.cc --> keyframing.c key.cc --> ipo.c key.cc --> animchannelsdefines.c key.cc --> curve.cc Key --> animfilter.c Sequencer --> animfilter.c node.cc --> animfilter.c NLAEditor --> fcurve.c layer.cc --> animfilter.c collection.cc --> animfilter.c blendfile.cc --> animfilter.c mask.cc --> animfilter.c armatureselection.cc --> armaturepose.cc armatureselection.cc --> posebackup.cc keyframesgeneral.c --> keyframesedit.c keyframe --> actionedit.c keyframe --> Keyframing customdata.cc --> curvedeform.c deform.cc --> curvedeform.c RNA --> posebackup.cc nlaedit.c --> keyframesedit.c action.c --> posebackup.cc action.c --> armature.c Keyframes --> Keyframing layerutils.c --> poseslide.c keyingsets.c --> keyframing.c keyframing.c --> gpencilconvert.c fcurvedriver.c --> constraint.c state anim_kernel { direction LR action.c --> anim_data.c action.c --> fcurves.c action.c --> anim_visualization.c action.c --> anim_sys.c } state UI { direction RL asset_browser: Asset Browsers asset_shelf: Asset Shelfs asset_views: Asset View Templates } ```