Blender add-on

 

Thanks to the Blender Foundation for Blender, the software carrying the modding scene

 

FASTER - BETTER - SIMPLER

Way more control, a lot more customizable, much less prone to error, tremendously less work

This add-on allows the import of annotation presets, the export of annotations, the export of AMR motion/rotation datas and comes with a keyframe based system. Annotations and variables are controlled with the same system as for animation. You tweak them directly in Blender per animation

Complex annotation schemes like Precision or Payload Interpreter become trivial with this add-on
You can tweak the values directly in Blender on a per animation basis

 
 

Using a preset

Creating a preset

    • Edit / Preferences / Add-ons/ Install

    • You now have a panel called “SkyrimGuild Annotations add-on” in the new “Skyrim” tab

    • Specific steps for v0.1 :

      • Rename your armature “Armature”

      • Go to pose mode

    • Click on “Import preset”

    • Install your preset

    • Select your bone in pose mode

    • Save a keyframe for the location

    • Adjust values :

      • Go to the bone tab

      • Scroll down to “custom properties”

      • Change the relevant custom properties values and keyframe them

      • If the value is equal to -1 when a location keyframe is detected, it won’t be written in the annotation

        • If at frame 20 there is a custom property with value 5

        • If there is with a location keyframe but no custom property is not keyframe

        • The custom property will still be written in the annotation

    • Go to Object mode

    • Select your armature

    • Add keyframes for your motion and rotation

    • If the motion doesn’t match in Skyrim, tweak the “Motion factor” in the add-on panel

      • As examples I used for my personnal rigs :$

        • 13.3 for humans

        • 1.33 in another human rig

        • 133 for the dragons

        • 5ish for the wolves

      • It seems using multiples of 1.33 works well

    • Click on export preset

    • You should have a file called “thenameofyouraction.txt” in the same folder as the Blender file

      • If Blender says you don’t have permission:

        • save the file

        • Open the blend file directly in the windows explorer instead of opening Blender and then opening your file from there

    • The presets use a standard JSON format

    • You can find the format with examples belows

      • The examples act as a tutorial. The complecity grows as you advance in the examples

      • You can also study the human attack animation preset. The precision annotations in there are quite complex

    • Initialise all the values to -1 or -1.0

    • “yourbonename” : ““

      • “PIE.@SGVF|MCO_AttackSpeed|1.2” : ””

        • 0.0 PIE.@SGVF|MCO_AttackSpeed|1.2

    • “yourbonename” : {“yourvariable” : yourvalue”}

      • Values are initialized at -1.0 and not -1

      • “PIE.@SGVF|MCO_AttackSpeed|” : { ”Attack Speed” : 1.0 }

        • 0.0 PIE.@SGVF|MCO_AttackSpeed|value

    • “yourbonename” : {“yourvariable” : yourvalue”}

      • The values are initialized at -1 and not -1.0

    • “PIE.@SGVF|MCO_AttackSpeed|” : { ”Attack Speed” : “-1” }

      • 0.0 PIE.@SGVF|MCO_AttackSpeed|value

    • “yourbonename” : {“yourvariable()” : yourvalue”}

      • “Collision_Add.Node(WEAPON)|” : { ”Damagemult( )” : 1.0 }

        • 0.0 Collision_Add.Node(WEAPON)|DamageMult(value)

    • “yourbonename” : {“yourvariable()” : yourvalue”}

      • It is possible to have an array without writing the values in parenthesis, I just don’t see why it would happen so I didn’t make it an example

      • “Collision_Add.Node(WEAPON)|” : { ”Rotation( )” : [-1.0,-1.0,-1.0] }

        • 0.0 Collision_Add.Node(WEAPON)|Rotation( value,value,value)

    • “yourbonename” : {“yourvariable(string)” : yourvalue}

      • Only the string is written. The value decides if the string is written or not

      • “Collision_Add.Node(WEAPON)|” : { ”NoTrail(string)” : “-1” }

        • 0.0 Collision_Add.Node(WEAPON)|NoTrail

    • “yourbonename”: {“Annotation” : “youreventname”}

      • “Next attack” : {“Annotation”:”AttackWinEnd”}

        • 0.0 AttackWinEnd

    • “yourbonename” : {
      “Separator”:”yourseparator”,
      “yourvariable1” : yourvalue1,
      “yourvariable2” : yourvalue2}

      • ”Collision_Add.Node(WEAPON)”:
        “Separator”:”|,
        “DamageMult()” :-1.0,
        ”ID()” : -1 }

        • 0.0 Collision_Add.Node(WEAPON)|DamageMult(value)|ID(value)

    • “yourbonename”: {”Aliases”:[“youralias1”, “youralias2”]}

      • “Transition to normal and power attack” :{
        “Aliases”:[“MCOAttackWinOpen”,[”MCO_PowerWinOpen”]
        }

        • 0.0 MCO_WinOpen
          0.0
          MCO_PowerWinOpen

    • “yourbonename”: {
      “Annotation” : “youreventname”,
      ”Aliases()”:[“youralias1”, “youralias2”}

      • “Transition to normal and power attack” : {“Annotation()”:”Collision_Add.Node”,
        “Aliases”:[“NPC L Thigh [LThg]”,[”NPC L Calf [LClf]”, “NPC L Foot [Lft ]”] }

        • 0.0 Collision_AddNode(NPC L Thigh [LThg])
          0.0 Collision_AddNode(NPC L Calf [LClf])
          0.0 Collision_AddNode(NPC L Foot [Lft ])

    • “L.Leg Hitframes”:

      • {
        "Annotation()":"Collison_Add.Node",
        "Aliases":["NPC L Thigh [LThg]","NPC L Calf [LClf]","NPC L Foot [Lft ]"],
        "Separator":"|",
        "ID()":-1,
        "DamageMult()":-1.0,"
        "Rotation()":[-1.0, -1.0, -1.0],
        "NoTrail(string)":-1,"
        }

        • 0.0 Collision_Add.Node(NPC L Thigh [LThg])|DamageMult(value)|ID(value)|`Rotation(value,value,value)|NoTrail

        • 0.0 Collision_Add.Node(NPC L Calf [LClf])|DamageMult(value)|ID(value)|`Rotation(value,value,value)|NoTrail

        • 0.0 Collision_Add.Node(NPC L Foot [Lft ])|DamageMult(value)|ID(value)|`Rotation(value,value,value)|NoTrail

Previous
Previous

Skyrim annotation tool

Next
Next

Skyrim needs creature animations