Jump to content

How to best place AnimObjects in Skyrim?


Recommended Posts

Skyrim "anchors" AnimObjects to bones used in character animations. FNIS allows to do this with custom animations.


It's pretty straight forward, but I have trouble finetuning the items position.


For example, my custom book appears at the wrong angle, splitting the hand seemingly in two. After correcting the angle by manipulating the nif-files offset/rotation (not done in 3ds max or similiar), the book looks better, but still somewhat burried in the hand's mesh...


If there a way/tutorial to create the AnimObject's offset in 3ds Max or Blender, instead of doing this by trial and error in Nifskope?

Link to comment
Share on other sites

  • 5 years later...

This is exactly what I'd like to know. I've been tearing my hair out for days trying to get a similar animated object to work in the player's hand. I have no trouble at all getting the object to appear in game. Animation list, behavior file? Check, check. Np. But the object is rotated wrong and all screwy. I can't for the life of me figure out how to orient the object so it appears correctly, other than painstaking trial and error, like you said, and that won't work in my case. I need PRECISION. I need to know exactly how the game orients it so I can export it precisely from Blender. I've been searching for awhile now. No answers.... :(

Link to comment
Share on other sites

I've had similar issues when trying to adapt vanilla meshes for use as anim objects for Fallout 4. I don't know if Skyrim skeletons are exactly like FO4, but I would imagine they are very close. The first problem with orienting a mesh is the bone Bethesda typically uses for the anim object root is positioned in the wrist and not the hand, like weapon bones. So not only do you have to calculate the AO orientation with regard to the player hand, but you also have to account for the offset from the AO bone TO the hand. Seems like a faulty system. So basically the AO mesh has to have the same offset from the 0 NiNode as the AO bone has from the hand, or wherever you want the AO mesh to appear. Second issue is rotation of the AO bone when the AO mesh is drawn. When the AO mesh is drawn during the character animation the 0 NiNode will align to whatever the AO bone position and rotation is at that particular frame. Realistically, the only way I know to find these transforms is to import the character animation into your 3D application and get the transform coordinates of the AO bone at whichever keyframe the AO mesh is drawn.


Two work arounds I've come up with are to either find a vanilla AO nif that has the same size/function/grip...whatever, as the mesh you want to use. Import your mesh into the vanilla AO nif and align it to the vanilla mesh. Then delete the vanilla mesh and save it as your custom AO nif. This works fine for stuff like drinking glasses or bottles, but can be trickier for objects used for specific animations. The second work around I use involves creating custom character animations and using a different bone as the root node for the AO mesh. There are three AO bones parented to each hand bone and they cannot be moved independently, so you are stuck with the previously mentioned offset with those bones. However, there are also two additional AO bones that are not parented to any other bones and can be moved and animated wherever or however you'd like.


First of all, when I create a custom AO mesh, I orient it so that the "grip" location is at 0,0,0, and make that the center of the mesh. When exported it will be centered to the 0 NiNode where the object will be grabbed by the player. When creating the character animation, I import the custom AO mesh into the scene, align the AO bone to the AO mesh, both for position and rotation, then parent the AO mesh to the AO bone. For FO4 skeletons, those bones are either AnimObjectA or AnimObjectB. Then I animate the AO bone to follow the character's hand, head, whatever. For this to work you must make sure that the custom AO nif has the correct AO bone indicated in the NiStringExtraData block.


Hope this helps.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Create New...