diff --git a/Docs/src/images/AnimationSystem.svg b/Docs/src/images/AnimationSystem.svg
new file mode 100644
index 00000000000..fd20ae2f848
--- /dev/null
+++ b/Docs/src/images/AnimationSystem.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Docs/src/manual.md b/Docs/src/manual.md
index 653476c274e..b7aa9eea229 100644
--- a/Docs/src/manual.md
+++ b/Docs/src/manual.md
@@ -762,7 +762,7 @@ Despite their power, additive lighting techniques have an additional limitation;
@page Animation Animation
-OGRE supports a pretty flexible animation system that allows you to script animation for several different purposes:
+OGRE supports a pretty flexible keyframe based animation system that allows you to script animation for several different purposes:
@ref SceneNode-Animation
@@ -778,6 +778,10 @@ Using OGRE’s extensible class structure to animate any value.
@tableofcontents
+The diagram below shows the relationship between the different animation classes in OGRE:
+
+![](AnimationSystem.svg)
+
# Animation State {#Animation-State}
When an entity with any kind of animation is created, an 'animation state' object is assigned to each animation. This allows you to control both the weight and the time position (where applicable) for applying the animation to that specific entity. You can reuse the same animation definitions across multiple entities, and OGRE handles the internal management of this reuse.
diff --git a/Docs/src/umldocs/AnimationSystem.puml b/Docs/src/umldocs/AnimationSystem.puml
new file mode 100644
index 00000000000..d9b4e402367
--- /dev/null
+++ b/Docs/src/umldocs/AnimationSystem.puml
@@ -0,0 +1,21 @@
+@startuml
+'left to right direction
+hide members
+hide methods
+
+SceneManager --|> AnimationContainer
+Skeleton --|> AnimationContainer
+Mesh --|> AnimationContainer
+
+AnimationContainer --> Animation : createAnimation()
+
+Animation --> AnimationTrack : create{TYPE}Track()
+AnimationTrack -right-> KeyFrame : createKeyFrame()
+
+
+AnimationState .right.> Animation: apply(timePos)
+
+Light --|> AnimableObject
+AnimableObject --> AnimableValue: createAnimableValue()
+
+@enduml
\ No newline at end of file