Difference between revisions of "Arcane University:Exporting animated statics using ck-cmd"
(WIP animated static export tutorial) |
(→Collision: MSTT also works) |
||
(8 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | This tutorial will guide you through the export of animated statics to Skyrim using [[AU:CK-CMD for Skyrim|ck-cmd]]. At this point you should already have your animation created in whatever 3D software you are most comfortable with. This tutorial is meant to help you overcome some of the bumps in the export process. | + | {{trail|Animation}} |
+ | [[File:anim_tut_puzcandoor_setup.png|280px|thumb|right|A keyframed animation in Blender]] | ||
+ | This tutorial will guide you through the export of animated statics to Skyrim using [[AU:CK-CMD for Skyrim|ck-cmd]]. At this point you should already have your animation created in whatever 3D software you are most comfortable with. You should also be familiar with [[AU:Nifskope for Skyrim|NifSkope]] and be able to manipulate blocks and their properties. This tutorial is meant to help you overcome some of the bumps in the export process. | ||
==Setup and export== | ==Setup and export== | ||
− | [[File: | + | [[File:anim_tut_export_settings_1.png|thumb|upright=.6|right|Recommended export settings in Blender]] |
− | One of the most common uses for animated static is a door that opens and closes. This is fairly simple. For this section we will use Skywind's puzzle canal door as an example. Each object that you want to move is animated with keyframes. If there are multiple objects that move together, they can be parented to an empty node which contains the animation. | + | One of the most common uses for animated static is a door that opens and closes. This is fairly simple. For this section we will use Skywind's puzzle canal door as an example. Each object that you want to move is animated with keyframes. If there are multiple objects that move together, they can be parented to an armature bone or empty node which contains the animation. |
− | |||
In Blender, there are a few export settings to note, in addition to the usual scale application: Under "Bake Animation," be sure to uncheck both "NLA Strips" and "All Actions." This will ensure that all objects are part of the same animation, rather than split into several. You may also need to set the axes to "Y Forward" if the animations turn on the wrong axis after export. | In Blender, there are a few export settings to note, in addition to the usual scale application: Under "Bake Animation," be sure to uncheck both "NLA Strips" and "All Actions." This will ensure that all objects are part of the same animation, rather than split into several. You may also need to set the axes to "Y Forward" if the animations turn on the wrong axis after export. | ||
Line 14: | Line 15: | ||
At this point you can add [[AU:Mesh Collisions|collision]] to any nodes within the nif. It can have any combination of moving and static collision, and can be any type of shape. For moving collisions, make sure the correct flags are set: SET_LOCAL, in addition to the typical ACTIVE and SYNC_ON_UPDATE. In the bhkrigidBody of animated collision, the Layer should be SKYL_ANIMSTATIC, motion system should be BOX_INERTIA, deactivation should be OFF, and quality type should be FIXED. Also be sure the appropriate [[AU:NIF Data Format#BSXFlags|BSXFlags]] are enabled. | At this point you can add [[AU:Mesh Collisions|collision]] to any nodes within the nif. It can have any combination of moving and static collision, and can be any type of shape. For moving collisions, make sure the correct flags are set: SET_LOCAL, in addition to the typical ACTIVE and SYNC_ON_UPDATE. In the bhkrigidBody of animated collision, the Layer should be SKYL_ANIMSTATIC, motion system should be BOX_INERTIA, deactivation should be OFF, and quality type should be FIXED. Also be sure the appropriate [[AU:NIF Data Format#BSXFlags|BSXFlags]] are enabled. | ||
− | {{note|If you want a static with a SpecialIdle animation to have moving collision, be sure to make it an | + | {{note|If you want a static with a SpecialIdle animation to have moving collision, be sure to make it an Activator or Moveable Static in CK. Otherwise the collision will not move, although the visible mesh will.}} |
===Sound=== | ===Sound=== | ||
− | [[File:anim_tut_sound.png|thumb|right]] | + | [[File:anim_tut_sound.png|thumb|right|An example of a sound text key]] |
− | To give the animation an associated sound, add a text key to the controller sequence with the name of the Sound Descriptor form in CK. | + | To give the animation an associated sound, add a text key to the controller sequence with the name of the Sound Descriptor form in CK. This overrides any sounds applied in CK. |
+ | <br style="clear:both" /> | ||
+ | ==Translations== | ||
+ | [[File:anim_tut_export_settings_2.png|thumb|right|Set "Simplify" to zero to disable it if using translations]] | ||
+ | While rotations export fairly easily, translations do not. They require some extra wrangling, otherwise they do not work. In this case, change "simplify" in the fbx export settings to 0 to disable it. This will leave some excess data in the nif that needs to be cleaned up, otherwise it can crash the game/CK, or make the object appear in the wrong place entirely in game (and probably still not work). Unchecking "Key All Bones" and "Force Start/End Keying" has no effect. | ||
− | == | + | In the NiMultiTargetTransformController, remove all extra targets except those that you want to be animated. In the NiControllerSequence, remove all controlled blocks except those you want to be animated. In the NiDefaultAVObjectPalette, remove all Objs except those you want to be animated '''and the root node'''. |
− | + | [[File:anim_tut_cleanup.png|800px|center]] | |
+ | |||
+ | Then delete all remaining loose blocks from the nif and apply the reorder blocks spell. | ||
+ | |||
+ | ==See Also== | ||
+ | * [https://www.youtube.com/watch?v=4DrN_AS28qk Animating Crash Course - Basic Static Animations in Blender (Youtube)]: creating a basic animated static in Blender, using an armature | ||
+ | |||
+ | [[Category:Asset Tutorial]] |
Latest revision as of 01:07, 29 November 2023
This tutorial will guide you through the export of animated statics to Skyrim using ck-cmd. At this point you should already have your animation created in whatever 3D software you are most comfortable with. You should also be familiar with NifSkope and be able to manipulate blocks and their properties. This tutorial is meant to help you overcome some of the bumps in the export process.
Contents
Setup and export[edit]
One of the most common uses for animated static is a door that opens and closes. This is fairly simple. For this section we will use Skywind's puzzle canal door as an example. Each object that you want to move is animated with keyframes. If there are multiple objects that move together, they can be parented to an armature bone or empty node which contains the animation.
In Blender, there are a few export settings to note, in addition to the usual scale application: Under "Bake Animation," be sure to uncheck both "NLA Strips" and "All Actions." This will ensure that all objects are part of the same animation, rather than split into several. You may also need to set the axes to "Y Forward" if the animations turn on the wrong axis after export.
NifSkope adjustments[edit]
After conversion to nif using ck-cmd, delete the "animations" folder that comes out. You can also remove the BSBehaviorGraphExtraData in the nif (these are used for some things like levers and pullbars—behaviors are beyond the scope of this tutorial). If you want multiple animations, for example an "open" and "close," simply export them both separately, and copy and paste the second NiControllerSequence into your working nif file. Renaming them to "Open" and "Close" is all the you need to do for the game to use them as door animations (container animations function exactly the same, incidentally). An animation named "SpecialIdle" will play constantly on a loop.
Collision[edit]
At this point you can add collision to any nodes within the nif. It can have any combination of moving and static collision, and can be any type of shape. For moving collisions, make sure the correct flags are set: SET_LOCAL, in addition to the typical ACTIVE and SYNC_ON_UPDATE. In the bhkrigidBody of animated collision, the Layer should be SKYL_ANIMSTATIC, motion system should be BOX_INERTIA, deactivation should be OFF, and quality type should be FIXED. Also be sure the appropriate BSXFlags are enabled.
NOTE: If you want a static with a SpecialIdle animation to have moving collision, be sure to make it an Activator or Moveable Static in CK. Otherwise the collision will not move, although the visible mesh will. |
Sound[edit]
To give the animation an associated sound, add a text key to the controller sequence with the name of the Sound Descriptor form in CK. This overrides any sounds applied in CK.
Translations[edit]
While rotations export fairly easily, translations do not. They require some extra wrangling, otherwise they do not work. In this case, change "simplify" in the fbx export settings to 0 to disable it. This will leave some excess data in the nif that needs to be cleaned up, otherwise it can crash the game/CK, or make the object appear in the wrong place entirely in game (and probably still not work). Unchecking "Key All Bones" and "Force Start/End Keying" has no effect.
In the NiMultiTargetTransformController, remove all extra targets except those that you want to be animated. In the NiControllerSequence, remove all controlled blocks except those you want to be animated. In the NiDefaultAVObjectPalette, remove all Objs except those you want to be animated and the root node.
Then delete all remaining loose blocks from the nif and apply the reorder blocks spell.
See Also[edit]
- Animating Crash Course - Basic Static Animations in Blender (Youtube): creating a basic animated static in Blender, using an armature