Difference between revisions of "Arcane University:CK-CMD for Skyrim"
(→Model Preparations: add note about animation simplification) |
(reorganized, removing rig exporting since it has its own page) |
||
(12 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
− | '''CK-CMD''' is a command prompt application that can convert fbx files | + | '''CK-CMD''' is a command prompt application that can convert between fbx and [[Arcane_University:NIF_Data_Format|NIF]] files, and generate behavior files for animations. This makes it software-agnostic, unlike most nif conversion methods, and thus not as affected by changes in the modeling software. CK-CMD makes it possible to export a finished asset as an fbx from nearly any modeling software, and create a nif file that is 95% ready for game import with only one command. |
It properly transfers vertex coloring to nif files from an fbx, and materials settings and paths are translated from modeling software to BSLightingShaderProperty nodes. It also applies all necessary strings, flags, and values in the resulting nif. Visual adjustments may be desired through [[AU:Nifskope for Skyrim|NifSkope]], but if properly prepared, the resulting nif is game-ready. | It properly transfers vertex coloring to nif files from an fbx, and materials settings and paths are translated from modeling software to BSLightingShaderProperty nodes. It also applies all necessary strings, flags, and values in the resulting nif. Visual adjustments may be desired through [[AU:Nifskope for Skyrim|NifSkope]], but if properly prepared, the resulting nif is game-ready. | ||
− | ==Download | + | ==Download== |
− | * | + | * [https://github.com/aerisarn/ck-cmd ck-cmd on GitHub]: Download the latest ck-cmd.zip from the releases (ck-gui is a related but different program). |
− | |||
− | |||
==System Preparations== | ==System Preparations== | ||
Line 17: | Line 15: | ||
Ensure all faces have the intended materials applied, as ck-cmd will create BSLightingShaderProperty nodes with any applicable materials in the FBX. Note that some material shaders do not translate correctly to BSLightingShaderProperty nodes, so check this first if the generated BSLightingShaderProperty nodes have issues. Standard blinn materials are recommended. The application will also use the same file paths as your 3D software’s material shaders, meaning that if you set up materials with the textures already in their proper end-user location in \Data\Textures, you may not need to change the paths in the nif later. | Ensure all faces have the intended materials applied, as ck-cmd will create BSLightingShaderProperty nodes with any applicable materials in the FBX. Note that some material shaders do not translate correctly to BSLightingShaderProperty nodes, so check this first if the generated BSLightingShaderProperty nodes have issues. Standard blinn materials are recommended. The application will also use the same file paths as your 3D software’s material shaders, meaning that if you set up materials with the textures already in their proper end-user location in \Data\Textures, you may not need to change the paths in the nif later. | ||
− | Contrary to the documentation on github, assets should '''not''' be combined into a single object, as ck-cmd currently has a bug that creates many duplicate vertices in this function. Instead, separate the object by material. The name of your mesh or submeshes in your software’s outliner (or specific term for object heirarchy) will be used to create strings in the nif. The other usual pre-export checks apply (freeze any transformations, check pivot/origin, apply any modifiers, etc). The application will properly transfer any vertex coloring to the resulting nif. (Note however that in some modeling software, using vertex colors on some nodes but not otherwise leads to strange results when converted. Consequently, you may need to flood your model with the default white color before vertex painting shadow areas.) If your nif is to include a [[AU:Mesh Collisions|collision mesh]] (see [[# | + | Contrary to the documentation on github, assets should '''not''' be combined into a single object, as ck-cmd currently has a bug that creates many duplicate vertices in this function. Instead, separate the object by material. The name of your mesh or submeshes in your software’s outliner (or specific term for object heirarchy) will be used to create strings in the nif. The other usual pre-export checks apply (freeze any transformations, check pivot/origin, apply any modifiers, etc). The application will properly transfer any vertex coloring to the resulting nif. (Note however that in some modeling software, using vertex colors on some nodes but not otherwise leads to strange results when converted. Consequently, you may need to flood your model with the default white color before vertex painting shadow areas.) If your nif is to include a [[AU:Mesh Collisions|collision mesh]], the same pre-export checks apply (see [[#Collision|below]] for further details). |
− | === | + | ===Scale=== |
− | + | Different modeling software will have different default settings for the meaning of one measurement unit. When your asset is correctly scaled for its intended in-game size in comparison to the grid or even other exported Skyrim assets, it may import into Nifskope with a different per-unit measurement, and the engine reading the nif could interpret an intended scale of five meters as five centimeters, or vice versa. This problem is almost always a matter of centimeters versus meters, so check this first if your asset looks about 100 times larger or smaller than intended. | |
− | + | In Blender, setting "Apply Scaling" in the fbx export to "FBX All" is usually the safest. The units in Blender will be equivalent to Skyrim units. For example, an object 128 "meters" tall in Blender will be 128 Skyrim units after converting, which is equal to 6 feet in game. | |
− | |||
− | + | In Maya, it is necessary to set the scale of the grid to meters, instead of the default centimeters, then export the fbx with the Units dropdown changed to no automatic scaling, and file units converted to centimeters. This is a matter of Maya to game engine workflow, not specific to ck-cmd. | |
− | == | + | ===Collision=== |
− | [[File:ck-cmd collision hierarchy.png|thumb|right|An example collision hierarchy in Blender | + | [[File:ck-cmd collision hierarchy.png|thumb|right|An example collision hierarchy in Blender]] |
To include a [[AU:Mesh Collisions|collision mesh]], arrange your outliner/hierarchy as shown in the figure at right before exporting it all as a single FBX. | To include a [[AU:Mesh Collisions|collision mesh]], arrange your outliner/hierarchy as shown in the figure at right before exporting it all as a single FBX. | ||
− | In this example using Blender | + | In this example using Blender, 'Scene_rb_mopp_mesh' is the collision object, contained within a hierarchy of empty objects. Note that the name of the material is 'SKY_HAV_MAT_STONE', which will be interpreted as the collision material. Multiple materials on the collision mesh will be interpreted as multiple collision materials (stone, wood, stairs, etc). |
+ | |||
+ | ===Animated statics=== | ||
+ | {{main|[[AU:Exporting animated statics using ck-cmd|Exporting animated statics using ck-cmd]]}} | ||
+ | |||
+ | It is usually not necessary to flip or change export settings to compensate for Z-up vs Y-up modeling software. However, animations that use rotation may require proper export settings. Skyrim usually uses Y-forward, Z-up. Additionally, if you are including translations, be sure animation simplification is disabled in the fbx export settings. If it is enabled, the animation may be lost upon export. This will leave some extraneous transform controllers in the controller sequence, but they can be removed manually without too much trouble. | ||
==Converting FBX to NIF== | ==Converting FBX to NIF== | ||
Open the command prompt. | Open the command prompt. | ||
Navigate to CK-Cmd’s location. | Navigate to CK-Cmd’s location. | ||
− | Use the command: ck-cmd.exe importfbx (full input path\Example.fbx) -e (full output path) | + | Use the command: |
+ | ck-cmd.exe importfbx (full input path\Example.fbx) -e (full output path) | ||
Wait for the process to finish. | Wait for the process to finish. | ||
Open the resulting nif in [[AU:Nifskope for Skyrim|NifSkope]] for inspection. It is generated in the output location with the same name as the fbx file originally used for input. | Open the resulting nif in [[AU:Nifskope for Skyrim|NifSkope]] for inspection. It is generated in the output location with the same name as the fbx file originally used for input. | ||
+ | |||
+ | Video tutorial: [https://www.youtube.com/watch?v=3f_9evNUiGU CK-CMD FBX to NIF] by Thog | ||
==Adjustments in NifSkope== | ==Adjustments in NifSkope== | ||
Ck-cmd should have created a nif file with all basic setup complete, such as strings, [[AU:NIF Data Format#BSXFlags node|BSX flags]], collision meshes, etc. It should have also approximated your material shader settings in the resulting BSLightingShaderProperty nodes. If your asset appears untextured (bright magenta in color), you will need to direct NifSkope to the proper texture paths. You will still need to adjust visuals via BSLightingShaderProperty settings that are not present in your default modeling software’s materials, such as the global glossiness value, switching [[AU:NIF Data Format#Shader Types|shader types]], adding shader flags such as emission or environment mapping, etc, as well as other arbitrary settings in the nif, such as audio material settings. | Ck-cmd should have created a nif file with all basic setup complete, such as strings, [[AU:NIF Data Format#BSXFlags node|BSX flags]], collision meshes, etc. It should have also approximated your material shader settings in the resulting BSLightingShaderProperty nodes. If your asset appears untextured (bright magenta in color), you will need to direct NifSkope to the proper texture paths. You will still need to adjust visuals via BSLightingShaderProperty settings that are not present in your default modeling software’s materials, such as the global glossiness value, switching [[AU:NIF Data Format#Shader Types|shader types]], adding shader flags such as emission or environment mapping, etc, as well as other arbitrary settings in the nif, such as audio material settings. | ||
− | == | + | ==Actor/creature animations== |
− | + | {{main|[[AU:Implementation of Custom Animations|Implementation of Custom Animations]]}} | |
− | + | Another of ck-cmd's functions is creating custom animations for actors. This can be used to replace animations of vanilla npcs or creatures, or add new animations by editing the behavior files. ck-cmd can also be used to create entirely new actor rigs with custom animations. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | ck-cmd | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==Known Bugs== | ==Known Bugs== | ||
− | *''' | + | *'''FBX -> Nif''' |
− | |||
− | |||
**While ck-cmd can automatically separate objects with multiple materials on export, it duplicates many vertices in the process. Instead, simply separate each object by material before export. | **While ck-cmd can automatically separate objects with multiple materials on export, it duplicates many vertices in the process. Instead, simply separate each object by material before export. | ||
− | * | + | |
− | + | ==Links== | |
+ | * [https://github.com/aerisarn/ck-cmd ck-cmd on GitHub] | ||
[[Category:Arcane University-3D Art-Mesh Export to NIF]] [[Category:Arcane University-Animation]] | [[Category:Arcane University-3D Art-Mesh Export to NIF]] [[Category:Arcane University-Animation]] |
Latest revision as of 17:08, 20 October 2022
CK-CMD is a command prompt application that can convert between fbx and NIF files, and generate behavior files for animations. This makes it software-agnostic, unlike most nif conversion methods, and thus not as affected by changes in the modeling software. CK-CMD makes it possible to export a finished asset as an fbx from nearly any modeling software, and create a nif file that is 95% ready for game import with only one command.
It properly transfers vertex coloring to nif files from an fbx, and materials settings and paths are translated from modeling software to BSLightingShaderProperty nodes. It also applies all necessary strings, flags, and values in the resulting nif. Visual adjustments may be desired through NifSkope, but if properly prepared, the resulting nif is game-ready.
Contents
Download[edit]
- ck-cmd on GitHub: Download the latest ck-cmd.zip from the releases (ck-gui is a related but different program).
System Preparations[edit]
No special considerations need to be made for where ck-cmd is located on your computer, but commands include file paths, so it may be advisable to place it somewhere with a short and simple path. It is convenient to create a common folder for fbx input and nif output, as in the example: D:\CK-CMD > Input > Output\
Model Preparations[edit]
Ensure all faces have the intended materials applied, as ck-cmd will create BSLightingShaderProperty nodes with any applicable materials in the FBX. Note that some material shaders do not translate correctly to BSLightingShaderProperty nodes, so check this first if the generated BSLightingShaderProperty nodes have issues. Standard blinn materials are recommended. The application will also use the same file paths as your 3D software’s material shaders, meaning that if you set up materials with the textures already in their proper end-user location in \Data\Textures, you may not need to change the paths in the nif later.
Contrary to the documentation on github, assets should not be combined into a single object, as ck-cmd currently has a bug that creates many duplicate vertices in this function. Instead, separate the object by material. The name of your mesh or submeshes in your software’s outliner (or specific term for object heirarchy) will be used to create strings in the nif. The other usual pre-export checks apply (freeze any transformations, check pivot/origin, apply any modifiers, etc). The application will properly transfer any vertex coloring to the resulting nif. (Note however that in some modeling software, using vertex colors on some nodes but not otherwise leads to strange results when converted. Consequently, you may need to flood your model with the default white color before vertex painting shadow areas.) If your nif is to include a collision mesh, the same pre-export checks apply (see below for further details).
Scale[edit]
Different modeling software will have different default settings for the meaning of one measurement unit. When your asset is correctly scaled for its intended in-game size in comparison to the grid or even other exported Skyrim assets, it may import into Nifskope with a different per-unit measurement, and the engine reading the nif could interpret an intended scale of five meters as five centimeters, or vice versa. This problem is almost always a matter of centimeters versus meters, so check this first if your asset looks about 100 times larger or smaller than intended.
In Blender, setting "Apply Scaling" in the fbx export to "FBX All" is usually the safest. The units in Blender will be equivalent to Skyrim units. For example, an object 128 "meters" tall in Blender will be 128 Skyrim units after converting, which is equal to 6 feet in game.
In Maya, it is necessary to set the scale of the grid to meters, instead of the default centimeters, then export the fbx with the Units dropdown changed to no automatic scaling, and file units converted to centimeters. This is a matter of Maya to game engine workflow, not specific to ck-cmd.
Collision[edit]
To include a collision mesh, arrange your outliner/hierarchy as shown in the figure at right before exporting it all as a single FBX.
In this example using Blender, 'Scene_rb_mopp_mesh' is the collision object, contained within a hierarchy of empty objects. Note that the name of the material is 'SKY_HAV_MAT_STONE', which will be interpreted as the collision material. Multiple materials on the collision mesh will be interpreted as multiple collision materials (stone, wood, stairs, etc).
Animated statics[edit]
- Main article: Exporting animated statics using ck-cmd
It is usually not necessary to flip or change export settings to compensate for Z-up vs Y-up modeling software. However, animations that use rotation may require proper export settings. Skyrim usually uses Y-forward, Z-up. Additionally, if you are including translations, be sure animation simplification is disabled in the fbx export settings. If it is enabled, the animation may be lost upon export. This will leave some extraneous transform controllers in the controller sequence, but they can be removed manually without too much trouble.
Converting FBX to NIF[edit]
Open the command prompt. Navigate to CK-Cmd’s location. Use the command:
ck-cmd.exe importfbx (full input path\Example.fbx) -e (full output path)
Wait for the process to finish. Open the resulting nif in NifSkope for inspection. It is generated in the output location with the same name as the fbx file originally used for input.
Video tutorial: CK-CMD FBX to NIF by Thog
Adjustments in NifSkope[edit]
Ck-cmd should have created a nif file with all basic setup complete, such as strings, BSX flags, collision meshes, etc. It should have also approximated your material shader settings in the resulting BSLightingShaderProperty nodes. If your asset appears untextured (bright magenta in color), you will need to direct NifSkope to the proper texture paths. You will still need to adjust visuals via BSLightingShaderProperty settings that are not present in your default modeling software’s materials, such as the global glossiness value, switching shader types, adding shader flags such as emission or environment mapping, etc, as well as other arbitrary settings in the nif, such as audio material settings.
Actor/creature animations[edit]
- Main article: Implementation of Custom Animations
Another of ck-cmd's functions is creating custom animations for actors. This can be used to replace animations of vanilla npcs or creatures, or add new animations by editing the behavior files. ck-cmd can also be used to create entirely new actor rigs with custom animations.
Known Bugs[edit]
- FBX -> Nif
- While ck-cmd can automatically separate objects with multiple materials on export, it duplicates many vertices in the process. Instead, simply separate each object by material before export.