Animation Modding

A Detailed Guide to help you learn how to do it on your own!


---HOW TO PULL .PAP FILES---
Any emote path using c0101 means it's male hyur, this makes the animation usable by all races besides lalafel.
Event is usually used in animations and cutscenes as first pathing.Step one: is to figure out if you can use the default pathing (Male Hyur c0101) or require a specific race/gender combo.
The string will come out roughly like this
Example: chara/human/c0101/animation/a0001/bt_common/Step two: is pulling the event path from Anamnesis the stand alone program, or Reslogger within Dalamud.
Anamnesis: click the Action button on your far left side. Look under Animation Status for FullBody, there is where you'll find your path.
Example: event_base/event_base_stand_talk_thinkNow add .pap at the end of thatExample: event_base/event_base_stand_talk_think.papNow put step one and two together like suchExample: chara/human/c0101/animation/a0001/bt_common/event_base/event_base_stand_talk_think.papAnd with that now pull up TextTools and open
Tools - Raw file operations - Extract raw file.
and paste the full path down.
Now if it doesnt want to take your path you may need to try other races for it and then covert this in blender or 3dMax to male hyur to make this accessible to all races.

If you want to change character movement such as walking/jumping/sprinting etc [resident/] needs to be added to this pathing like such.chara/human/c0101/animation/a0001/bt_common/
resident/
move_a.pap
chara/human/c0101/animation/a0001/bt_common/resident/move_a.pap
This file got all these animations within it which can be selected in XAT: walking backwards, walking forwards, two different running animations, jumping, falling, landing, and sprinting.

Things you'll need for this type of animation conversion.

Step 1: Find your desired animation (pap file) from TexTools or through VFXEditor. (This is explained in .pap)Step 2: get the animation (pap file) of the animation you want to have the exported animation from step 1 on, by exporting it from Textools or exporting it from VFXEditor (This is explained under .pap)Step 3: Start up XAT Standalone and load the Animation (pap file) you exported on step 1 (click on the button in the screenshot to load the file)

Step 4: Load the Skeleton of the Race which the animation (pap file) was exported from (this can be found in VFXEditor on the race you exported it from of if exported from Textools by the racial Code in this example we will use the Female Miqo'te skeleton which is c0801)

Step 5: Select the animation in the window below the "Load / Save" in this case only one Animation shows which is the Animation you want to Swap

Step 6: Right next to the Animation you just selected you see "Export" hit the dropdown Button and select the first option "Autodesk (FBX)"

Step 7: Click on Export and browse to a folder where you want this FBX file to be saved (recommended to use the same folder where the loaded Animation (pap file) is located for ease of organisation)"Now you have exported the Animation (pap file) you want to swap and are ready to proceed and put this animation on the Animation (pap file) we exported in Step 2"

Step 8: Back to the "Save / Load" section we go and click on the browse button again to load our Animation (pap file) we exported in Step 2 in this example we want to replace the 3rd Idle Sit animation of the FemaleMiqo'te (j_pose03_loop.pap)

Step 9: again select the Animation that appears below the "Load / Save" section

Step 10: Now we go into the "Import" section you can see this above the "Export" section we used in Steps 6 & 7, Click on the browse icon again which is the same icon we used in the "Load / Save" section and find our Exported FBX we just got after Step 7

After you have selected your FBX file and it loads in XAT you will see a pop up message at the bottom appear this shows how many animations where found in the FBX we exported (which should always be at least 1)

Step 11: Select the Track which you can find under the path of the FBX you just imported and Select the track "xat" (it's called this because we exported it using XAT)
(information)
You will see the "Import" button below become from dark to bright indicating that the button is clickable now

Step 12: Click on the "Import" button you will again see a pop up message at the bottom saying how many frames are imported (this is IMPORTANT you will need to remember these imported frames as you'll need this in a later step)(information)
In our case 81 Frames have been imported

Step 13: Go to the "Compression" Tab 2 rows to the right of the current one we are on which is "Import / Export" (the default tab will always be "Import / Export")
(THIS STEP ONLY APPLIES FOR LONGER ANIMATIONS)
(if your animation is short and simple jump to step 16)

Step 14: On the drop down (which is the only thing you see when going to this tab) select "Predictive"

Step 15: ignore all the scary stuff that pops up after selecting "Predictive" keep it all the way it is (no touchy!) and click on "Compress"(information)
It will show another pop up message again at the button that x amount of bytes have been compressed (not much of importance besides that you have to do this ALWAYS with every animation if you are swapping them)

Step 16: We go to the Tab left of "Compression" which is "Timeline" one there we will click on "Actor 0"

Step 17: Search in the "Track" section below of the "Actor" section the Track that has the "C009" entry (in this example this is found on "Track 1" but keep in mind that this MAY differ for each animation)(Information)
C009 is the Animation itself (every emote, dance, action, skill or Idle has an animation which is always going to be "C009")

Step 18: Click on the "C009" entry to expand it here we will see some scary values the only thing we need to remember is to adjust the "Duration" (remember the amount of Frames we imported earlier? good because this is where you'll need to change the value) As you can see the original animation has 70 frames we need to change this value to the frames we imported earlier in Step 12 (which is 81 frames)

(information)
If you have done Step 18 then this is what the Duration should look like (or whatever value YOUR animation you imported was in frames)

Step 19: Now we are done setting up everything we go back to the "Load / Save" section and we click on "Save" (IMPORTANT!: make sure you save your with the same name as the emote / idle animation you are replacing in our case this is jpose03loop) XAT will save this file as a .pap file so we dont need to add ".pap" at the end.

(Information)
I created a subfolder in the folder i have all the other files in a named it "Converted Event Base" this folder name can be whatever you want to be for oranisation purposes for example "Converted Sit" (whatever floats your boat)

Now to choose a convertion method for your newly made file! You can do this through either VFX editor in game or through TexTools.

--Textools--
(Information)
Before continuing make sure your Textools is on a Clean Start, do do this head over to "Help" and click on "Start Over"
Step 20: Now we are ready to make our TTMP with TexTools (Make sure TexTools doesn't have any mods loaded on it (which it shouldn't if you are using Penumbra)
We are going to need the path of the Animation (pap file) we want to replace which we got from Step 2, if you used the TexTools way of exporting you already know this path but most animations or emote will go like this "chara/human/c0801/animation/a0001/bt_common/emote/[name of the pap file you exported].pap" with Racial code "c0801" being Female Miqo'te
(information)
in our example the path we'll be using is "chara/human/c0801/animation/a0001/bt_common/emote/j_pose03_loop.pap"

Step 21: Go to "Tools" hover over "Raw File Operations" and click on "Import Raw File" A pop up Window will appear

Step 22: Fill in the Path of the animation (pap file) we want to replace (this is NOT the Animation (pap file) we just got from XAT) in our case we want to replace "chara/human/c0801/animation/a0001/bt_common/emote/j_pose03_loop.pap" so paste in that path (Important!: keep the "File is Decompressed Type 2 Data" checked No Touchy!)

Step 23: Click on "Import File" and NOW we want to browse to the Animation (pap file) that we got from Saving what we did in XAT from Step 19 (Which for me i saved this in my sub folder "Converted Event Base" (this may differ from you if you decided to do this as well))

(information)
If all went correctly you will see a popup window saying "File Imported Succesfully"

Step 24: after you've clicked on OK click on "Mods" hover over "Create Modpack" and click on "Basic Modpack" a window will pop up with only the animation file we just imported select this and fill in the "Name", "Author" and "Version" once done click on "Create Modpack" at the Bottom Right of the Window(information)
Congratulations you've created your TTMP and is ready to be imported in Penumbra
IMPORTANT!: Modpacks Created by default will go to the Modpack folder in your Documents, for example this will be Documents/Textools/ModpacksMake sure once you created your ModPack(TTMP) to do the Start Over again as explained earlier in this guide

Guide Written by Akira and Published by Zatori

040000.win32.index is where animation/skeleton files arechara/human/c1801/skeleton/base/b0001/skl_c1801b0001.sklb
-------
Midlander M - skl_(c0101)b0001
Midlander F - skl_(c0201)b0001
-------
Highlander M - skl_(c0301)b0001
Highlander F - skl_(c0401)b0001
-------
Elezen M - skl_(c0501)b0001
Elezen F - skl_(c0601)b0001
-------
Miqo'te M - skl_(c0701)b0001
Miqo'te F - skl_(c0801)b0001
-------
Roegadyn M - skl_(c0901)b0001
Roegadyn F - skl_(c1001)b0001
-------
Lalafell M - skl_(c1101)b0001
Lalafell F - skl_(c1201)b0001
-------
Au'ra M - skl_(c1301)b0001
Au'ra F - skl_(c1401)b0001
-------
Hrothgar M - skl_(c1501)b0001
-------
Viera M - skl_(c1701)b0001
Viera F - skl_(c1801)b0001
When pulling out Demi human skeleton files you can pull up Reslogger and filter it to [.sklb] a text that looks like this should appear
chara/demihuman/d1016/skeleton/base/b0001: 216951DD (560550365)
skl_d1016b0001.sklb: C22A01D8 (3257532888)
chara/demihuman/d1016/skeleton/base/b0001/skl_d1016b0001.sklb: B64524AE (3057984686)
the [d1016] is this demi humans skeleton file.

Teleport pap: chara/human/c0101/animation/a0001/bt_common/resident/action.pap XAT/VFXeditorAnimation: cbnm_mgc_cmn_1

----

XAT paths with movement animationsSelect the animation which you wish to replace in the list below.chara/human/c0101/animation/a0001/bt_nin_nin/resident/move_a.pap for class specific
chara/human/c0101/animation/a0001/bt_common/resident/move_a.pap
cbnm_01b_lp0 = Backwards Walk
cbnm_01f_lp0 = Forwards Walk
cbnm_02f_lp0 = Jog
cbnm_jump_1 = Jump Start
cbnm_jump_2 = Jump Apex
cbnm_jump_3 = Jump Landing
cbnm_sprint_lp0 = Sprint Loop
chara/human/c0101/animation/a0001/bt_common/resident/move_b.pap
cbbm_01l_1p0 = Strafe Left
cbbm_01r_1p0 = Strafe Right
cbbm_02l_1p0 = FAST Strafe Left
cbbm_02r_1p0 = FAST Strafe Right
cbbm_trn_l_lp= Turn Left
cbbm_trn_r_lp= Turn Right
--Animation Track Number meanings--
C063 - Sound
C009 - .PAP animation
C010 - Animation
C131 - Animation Cancelled by movement
C002 - TMB
C011 - Fly text
C012 - VFX Environmental
C173 - VFX bound to character
C054 - Voice lines
C174(5) - Object control L +R hand
C043 - Summon Weapon
C031 - Summon Animation
C094 - Invisibility
C125 - Animation Lock

Creating animations for Different races:
Hyur Male Skeleton shares a connection with the following races:
Hyur Male, Female
Highlander Male, Female
Miqo'te Male, Female
Au'ra Male, Female
Elezen Female Skeleton shares a connection with the following races:
Elezen Female
Roegadyn Female
Lalafell Male skeleton shares a connection with the following races:
Lalafell Male, Female
Roegadyn Male Skeleton shares a connection with the following races:
Roegadyn Male
Hrothgar Male
All other skeletons remaining affect their own Race and Gender

Pose to Animation