Difference between revisions of "NifSkope Comprehensive Guide"

34 bytes removed ,  13:07, 21 December 2023
no edit summary
imported>Qazaaq
m (→‎What’s a NIF file?: removing dead link; doesn't look important to the article)
Tag: Manual revert
 
(12 intermediate revisions by 6 users not shown)
Line 217: Line 217:
:* [http://en.wikipedia.org/wiki/Texture_mappingTexture Maps - Wikipedia Article]
:* [http://en.wikipedia.org/wiki/Texture_mappingTexture Maps - Wikipedia Article]


=== Orientating the Model ===
=== Orienting the Model ===
You can orientate the model by rotating, panning, or zooming. In this section we'll try each of these. We will also learn about selecting meshes in the render window, setting 'Save User View', and Walk Mode. Try each of these as we go through them.  
You can orient the model by rotating, panning, or zooming. In this section we'll try each of these. We will also learn about selecting meshes in the render window, setting 'Save User View', and Walk Mode. Try each of these as we go through them.  


==== '''The Basics''' ====
==== '''The Basics''' ====
Line 230: Line 230:
==== '''Save User View''' ====
==== '''Save User View''' ====
This function allows you to save an orientation of the model so you can quickly return to it again later. Let's try it:
This function allows you to save an orientation of the model so you can quickly return to it again later. Let's try it:
:* Orientate the model to your liking.
:* Orient the model to your liking.
:* Click: Render menu -> Save User View
:* Click: Render menu -> Save User View
Now the current orientation of the model in the render window has been saved.
Now the current orientation of the model in the render window has been saved.
:* Press the Z Axis View (Blue - View from above) toolbar button on the toolbar.
:* Press the Z Axis View (Blue - View from above) toolbar button on the toolbar.
:* Now press the Restore User View (Lt Gray - Restore..) toolbar button on the toolbar.
:* Now press the Restore User View (Lt Gray - Restore..) toolbar button on the toolbar.
The model is now re-orientated back to the view that you saved!
The model is now reoriented back to the view that you saved!


<blockquote>'''NOTE:''' Get familiar with using the toolbars. They will save you time over using the menus. There are 'hot keys' for many commands in NifSkope. For example you can press CTRL+F9 to Save User View.</blockquote>
<blockquote>'''NOTE:''' Get familiar with using the toolbars. They will save you time over using the menus. There are 'hot keys' for many commands in NifSkope. For example you can press CTRL+F9 to Save User View.</blockquote>
Line 278: Line 278:
Now place your mouse cursor over the render window and walk left and right across the model. This will give the perception of walking past this Skingrad house at the dead of night with the moon overhead.
Now place your mouse cursor over the render window and walk left and right across the model. This will give the perception of walking past this Skingrad house at the dead of night with the moon overhead.


Play around with orientating the model of this house using both 'Save User View' and Walk Mode. Proceed on with the guide when you're ready to continue.
Play around with orienting the model of this house using both 'Save User View' and Walk Mode. Proceed on with the guide when you're ready to continue.


Now lets get our render setting back to default:
Now lets get our render setting back to default:
Line 287: Line 287:


== Scene Root Node ==
== Scene Root Node ==
All NIF files start with a Scene Root Node (0 NiNode). This is the location of X0,Y0,Z0 in 3D space. Everything in the game environment is positioned based on the location of it's associated Scene Root Node. You cannot move the Scene Root Node, but can move the associated model in relation to it. This enables you to position the model to a specific location in reference to other objects in the game environment.
All NIF files start with a Scene Root Node (0 NiNode). This is the location of X0,Y0,Z0 in 3D space. Everything in the game environment is positioned based on the location of its associated Scene Root Node. You cannot move the Scene Root Node, but can move the associated model in relation to it. This enables you to position the model to a specific location in reference to other objects in the game environment.


:* Click: Z Axis View button on the toolbar.
:* Click: Z Axis View button on the toolbar.
Line 306: Line 306:


=== '''BSX Flags''' ===
=== '''BSX Flags''' ===
BSX flags tell the game engine what type of object this is. You will find BSX flags on all world objects but never on character models, clothing, or armor. Clothing and armor because it replaces a section or sections of the base character model when equipped. All world objects must have an associated BSX Flag.
BSX flags tell the game engine what type of object this is. You will find BSX flags on all world objects but never on character models, nor clothing and armor because they replace a section or sections of the base character model when equipped. All world objects must have an associated BSX Flag.


<blockquote>'''NOTE:''' Clothing and armor are special cases since it is both necessary to replace a section of the character model, and be able to place the object in the game environment. You will notice that all clothing and armor contain two NIF files: example shirt.nif & shirt_gnd.nif. The _gnd version of the clothing or armor model is used as the world object and so has a BSX Flag.</blockquote>
<blockquote>'''NOTE:''' Clothing and armor are special cases since it is both necessary to replace a section of the character model, and be able to place the object in the game environment. You will notice that all clothing and armor contain two NIF files: example shirt.nif & shirt_gnd.nif. The _gnd version of the clothing or armor model is used as the world object and so has a BSX Flag.</blockquote>
Line 343: Line 343:
::* Spelled incorrectly, it increases or decreases the objects elasticity. Elasticity sets the amount of springiness or amount the object will recover from being under strain. A rock has low elasticity and a rubber band has high elasticity.
::* Spelled incorrectly, it increases or decreases the objects elasticity. Elasticity sets the amount of springiness or amount the object will recover from being under strain. A rock has low elasticity and a rubber band has high elasticity.
: '''Friction'''
: '''Friction'''
::* Specifies an increase or decrease in the base value of friction. Friction will cause and object laying on a slope to slide or stop sliding. Glass has low friction and sandpaper has high friction. It is not know at what coefficient of friction a value of zero specifies (glass or sandpaper?).
::* Specifies an increase or decrease in the base value of friction. Friction will cause and object laying on a slope to slide or stop sliding. Glass has low friction and sandpaper has high friction. It is not known what a coefficient of friction value of zero specifies (glass or sandpaper?).
: '''Unyielding'''
: '''Unyielding'''
::* The effects of changing this value are unknown. ''Needs explanation.''
::* The effects of changing this value are unknown. ''Needs explanation.''
Line 429: Line 429:
Go ahead and adjust each of these setting and see the resulting change to the box shape in the render window. It's important that you understand how the box shape is affected by each of the transform variables. Once you have a good understanding of these variables continue on with the guide.
Go ahead and adjust each of these setting and see the resulting change to the box shape in the render window. It's important that you understand how the box shape is affected by each of the transform variables. Once you have a good understanding of these variables continue on with the guide.


== ''Physics Detail''' ==
== ''Physics Detail'' ==
Modern game engines have the ability to simulate various principles of [http://en.wikipedia.org/wiki/Physics Physics]. This is in effort to give a more life-like feel to the game environment. But this also complicates things in terms of both game development and [http://en.wikipedia.org/wiki/Modding Modding]. In this section we will walk through the physics data contained in the NIF file as well as explain the need for careful adjustment of these values.
Modern game engines have the ability to simulate various principles of [http://en.wikipedia.org/wiki/Physics Physics]. This is in effort to give a more life-like feel to the game environment. But this also complicates things in terms of both game development and [http://en.wikipedia.org/wiki/Modding Modding]. In this section we will walk through the physics data contained in the NIF file as well as explain the need for careful adjustment of these values.


Line 442: Line 442:


: ''' Layer '''
: ''' Layer '''
::* Set's the objects current layer. It's assumed that this is used by the developers while working in GameBryo. Doesn't appear to serve much other purpose but it's recommended that the proper layer be specified.
::* Sets the objects current layer. It's assumed that this is used by the developers while working in GameBryo. Doesn't appear to serve much other purpose but it's recommended that the proper layer be specified.
: ''' Col Filter '''
: ''' Col Filter '''
::* Specifies if this object is linked to other objects and appears to combine the collision data.
::* Specifies if this object is linked to other objects and appears to combine the collision data.
Line 489: Line 489:
::* This is where the constraint nodes are listed. bhkConstraint nodes are used to add constraints to your collision object. Works well on bound weapons that limit the player's actions.
::* This is where the constraint nodes are listed. bhkConstraint nodes are used to add constraints to your collision object. Works well on bound weapons that limit the player's actions.


== '''Materials'' ==
== ''Materials'' ==
Data pertaining to the object's material type is defined as part of the bhkCollisionObject block. Since a game object can be made of several types of materials the actual material definition is located both in the bhkShape nodes.
Data pertaining to the object's material type is defined as part of the bhkCollisionObject block. Since a game object can be made of several types of materials the actual material definition is located both in the bhkShape nodes.


Line 520: Line 520:


=== '''NiTriShape''' ===
=== '''NiTriShape''' ===
NifSkope defines NiTriShape as, “A shape node that refers to a singular triangle data.”. It is assumed that this is necessary to enable the mesh to conform to movements made by the associated actor. Meaning: NiTriShape data blocks are found on objects that are warn by an actor in the game environment. As the actor moves (i.e. swings a sword) the mesh around the actor must move along with him/her. And as such must conform to this movement; whereas an object such as a longsword does not need to conform to the actors movements.
NifSkope defines NiTriShape as, “A shape node that refers to a singular triangle data.”. It is assumed that this is necessary to enable the mesh to conform to movements made by the associated actor. Meaning: NiTriShape data blocks are found on objects that are worn by an actor in the game environment. As the actor moves (i.e. swings a sword) the mesh around the actor must move along with him/her. And as such must conform to this movement; whereas an object such as a longsword does not need to conform to the actors movements.


:* Click: File menu -> New Window
:* Click: File menu -> New Window
Line 528: Line 528:
:* Double-Click: boots.nif
:* Double-Click: boots.nif
:* Expand 0 NiNode  Scene Root
:* Expand 0 NiNode  Scene Root
:* Expand 10 NiTriShape  Foot
:* Expand 1 NiTriShape  Foot


Just as a NiTriStrips block, it contains all the mesh, material, and texture map information necessary to render the model correctly in the game environment. But notice the additional data node NiSkinInstance. This node is used to define what armature bones are associated with this object.  For now, just remember where it’s located. We will get more into armature bones later in the guide.
Just as a NiTriStrips block, it contains all the mesh, material, and texture map information necessary to render the model correctly in the game environment. But notice the additional data node NiSkinInstance. This node is used to define what armature bones are associated with this object.  For now, just remember where it’s located. We will get more into armature bones later in the guide.
Line 816: Line 816:
This texture applies a specified gloss amount to specific sections of a model defined by the texture file. The texture file is a grayscale representation of the original texture map. Gloss is applied by a displacement method: black representing no gloss and white representing full gloss.
This texture applies a specified gloss amount to specific sections of a model defined by the texture file. The texture file is a grayscale representation of the original texture map. Gloss is applied by a displacement method: black representing no gloss and white representing full gloss.


Glow texture files must be saved as _gl.dds i.e. myweapon_gl.dds
Gloss texture files must be saved as _gl.dds i.e. myweapon_gl.dds


== '''Glow Texture''' ==
== '''Glow Texture''' ==
Anonymous user