forked from mirror/openmw-tes3mp
Migrated textures section of wiki.
parent
f4146d0079
commit
380384ff39
@ -1,2 +1,2 @@
|
||||
parse_cmake
|
||||
sphinx
|
||||
sphinx>=1.7.0
|
||||
|
@ -0,0 +1,50 @@
|
||||
###############
|
||||
Common Problems
|
||||
###############
|
||||
|
||||
ERROR: Unknown fallback name: FontColor_color_header
|
||||
####################################################
|
||||
|
||||
:Symptoms:
|
||||
OpenMW crashes at startup with
|
||||
``ERROR: Unknown fallback name: FontColor_color_header``
|
||||
message at the end of ``openmw.log``, located `here </docs/source/reference/modding/paths>`_.
|
||||
|
||||
:Cause:
|
||||
The OpenMW `configuration file </docs/source/reference/modding/paths>`_ ``openmw.cfg``
|
||||
is severely lacking and missing fallback values
|
||||
because "Settings Importer" was not run correctly.
|
||||
|
||||
:Fix:
|
||||
Re-run "Settings Importer" from the OpenMW launcher.
|
||||
|
||||
Installing game files via Steam on macOS: DISK WRITE ERROR
|
||||
##########################################################
|
||||
|
||||
:Symptoms:
|
||||
Steam stages the download for Morrowind, but does not proceed.
|
||||
The download will read "Paused: DISK WRITE ERROR".
|
||||
|
||||
:Cause:
|
||||
The OpenMW `configuration file </docs/source/reference/modding/paths>`_ ``openmw.cfg``
|
||||
is severely lacking and missing fallback values
|
||||
because "Settings Importer" was not run correctly.
|
||||
|
||||
:Fix:
|
||||
Open appmanifest_22320.acf in your favorite text editor.
|
||||
Locate or create an entry under the "StateFlags" entry titled "installdir"
|
||||
and give it the value "Morrowind".
|
||||
Your file should now look something like this::
|
||||
|
||||
"AppState"
|
||||
{
|
||||
"appid" "22320"
|
||||
"Universe" "1"
|
||||
"name" "The Elder Scrolls III: Morrowind"
|
||||
"StateFlags" "4"
|
||||
"installdir" "Morrowind"
|
||||
|
||||
[other entries]
|
||||
}
|
||||
|
||||
Restart the Steam client. The download should now proceed.
|
@ -1,5 +1,126 @@
|
||||
==================
|
||||
##################
|
||||
Install Game Files
|
||||
==================
|
||||
##################
|
||||
|
||||
OpenMW is a complete game engine that can either run `Morrowind`_
|
||||
or original projects created with OpenMW-CS, such as `Example Suite`_.
|
||||
|
||||
Morrowind
|
||||
#########
|
||||
|
||||
Running the Morrowind Installation Wizard
|
||||
=========================================
|
||||
|
||||
#. Launch the OpenMW Launcher
|
||||
#. Launch the Installation Wizard
|
||||
|
||||
.. note::
|
||||
If you are prompted with an error message stating
|
||||
"Could not find the Data Files location,"
|
||||
click the "Run Installation Wizard" button.
|
||||
.. note::
|
||||
If you arrive at the main screen, click the "Settings" tab,
|
||||
and then click the "Run Installation Wizard" button.
|
||||
|
||||
#. Follow further instructions below
|
||||
to install Morrowind from either a retail CD or an existing installation.
|
||||
|
||||
- **Morrowind (from retail CD)**
|
||||
|
||||
#. Make sure that the retail CD is in your computer's CD/DVD drive
|
||||
and the Installation Wizard is running.
|
||||
#. On the "Select Installation Method" screen of the Installation Wizard,
|
||||
choose "Install Morrowind to a New Location" and click the "Next" button.
|
||||
#. Choose a location to install Morrowind to your hard drive
|
||||
(or accept the suggested location) and click the "Next" button.
|
||||
#. Select your preferred language for the installation
|
||||
and click the "Next" button
|
||||
#. Select which official expansions (Tribunal or Bloodmoon) should be installed.
|
||||
For best results, it is recommended to have both expansions installed.
|
||||
#. Click the "Install" button.
|
||||
|
||||
- **Morrowind (from existing installation)**
|
||||
|
||||
#. On the "Select Installation Method" screen of the Installation Wizard,
|
||||
choose "Select an existing Morrowind installation" and click the "Next" button
|
||||
#. Select an installation. If nothing is detected, click browse.
|
||||
#. Navigate to the directory containing the file ``Morrowind.esm`` and select that file.
|
||||
|
||||
#. You will be asked if you wish to import settings from ``Morrowind.ini``.
|
||||
Select "Import", otherwise OpenMW will not work.
|
||||
(You do not need to check the box "Include selected masters and plugins").
|
||||
#. The OpenMW launcher window should now open.
|
||||
Switch to the "Data Files" tab and check the box to the left of ``Morrowind.esm``.
|
||||
#. You are now ready to play!
|
||||
|
||||
Installing Morrowind
|
||||
====================
|
||||
|
||||
-----------------
|
||||
Retail CD and GOG
|
||||
-----------------
|
||||
|
||||
Windows users can run the installer if they haven't already.
|
||||
By default, both Bethesda's official installer on the retail CD
|
||||
and the GOG installer install to ``C:\Program Files\Bethesda Softworks\Morrowind``.
|
||||
You will find ``Morrowind.esm`` there.
|
||||
|
||||
Users of other platforms running Wine, will find it at
|
||||
``~/.wine/drive_c/Program Files/Bethesda Softworks/Morrowind``
|
||||
|
||||
-----
|
||||
Steam
|
||||
-----
|
||||
|
||||
Windows
|
||||
-------
|
||||
|
||||
Windows users can download Morrowind through Steam.
|
||||
Afterwards, you can point OpenMW to the Steam install location at
|
||||
``C:\Program Files\Steam\SteamApps\common\Morrowind\Data Files\``
|
||||
and find ``Morrowind.esm`` there.
|
||||
|
||||
macOS
|
||||
-----
|
||||
|
||||
If you are running macOS, you can also download Morrowind through Steam:
|
||||
|
||||
#. Navigate to ``/Users/YOUR_USERNAME_HERE/Library/Application Support/Steam/steamapps/``
|
||||
#. Create a file called ``appmanifest_22320.acf``
|
||||
(the number is based on its `Steam App ID <https://steamdb.info/app/22320/>`_).
|
||||
If using TextEdit,
|
||||
make sure that your document is in plain text mode by going to the menu bar
|
||||
and choosing "Format" -> "Make Plain Text".
|
||||
Also, ensure that it's not named with the extension ``.acf.txt``.
|
||||
Add the following into that file::
|
||||
|
||||
"AppState"
|
||||
{
|
||||
"AppID" "22320"
|
||||
"Universe" "1"
|
||||
"StateFlags" "1026"
|
||||
"installdir" "The Elder Scrolls III - Morrowind"
|
||||
}
|
||||
|
||||
#. Launch the Steam client and let it download. You can then find ``Morrowind.esm`` at
|
||||
``~/Library/Application Support/Steam/steamapps/common/The Elder Scrolls III - Morrowind/Data Files/``
|
||||
|
||||
Wine
|
||||
----
|
||||
|
||||
Users of other platforms running Wine can run Steam within it
|
||||
and find ``Morrowind.esm`` at
|
||||
``~/.wine/drive_c/Program Files/Steam/SteamApps/common/Morrowind/Data Files/``.
|
||||
|
||||
Example Suite
|
||||
#############
|
||||
|
||||
Example Suite is a demo showing the capabilities of the OpenMW engine.
|
||||
At this time, it requires Morrowind to be installed to run,
|
||||
but does not use any assets from it.
|
||||
In the future, it will be possible to run without installing Morrowind first.
|
||||
|
||||
#. `Install Morrowind <Installing Morrowind_>`_
|
||||
#. `Download the latest version <https://github.com/OpenMW/example-suite/releases>`_
|
||||
#. Follow the platform-specific instructions in the zip file's ``Installation.md`` file.
|
||||
|
||||
Coming Soon...
|
@ -0,0 +1,16 @@
|
||||
######################
|
||||
OpenMW Texture Modding
|
||||
######################
|
||||
|
||||
Although texture modding requires external tools not supported by the OpenMW team,
|
||||
adding and modifying textures is an important part of content creation.
|
||||
Therefore, we've included the following in hopes of helping modders transition
|
||||
to texture modding in OpenMW.
|
||||
|
||||
.. toctree::
|
||||
:caption: Table of Contents
|
||||
:maxdepth: 2
|
||||
|
||||
texture-basics
|
||||
convert-bump-mapped-mods
|
||||
native-mesh-format
|
@ -0,0 +1,114 @@
|
||||
##################
|
||||
Native Mesh Format
|
||||
##################
|
||||
|
||||
This article explains how to export a model from Blender to OpenMW using the OSG model format.
|
||||
Starting with OpenMW version 0.38 we can utilize the OSG native model format.
|
||||
The OSG model format doesn't yet support all the features that NIF's support,
|
||||
but works for basic models. For more details on the format, refer to
|
||||
`this forum post <https://forum.openmw.org/viewtopic.php?f=20&t=2949&p=35514#p35514>`_.
|
||||
|
||||
Previously, NIF files were the only way to get models into the game.
|
||||
Unfortunately, the NIF format is proprietary, bloated,
|
||||
and the available exporters are not in great shape.
|
||||
For example, the Blender NIF exporter currently only works with the very old Blender 2.49.
|
||||
|
||||
Prerequisites
|
||||
#############
|
||||
|
||||
- OpenMW 0.38 or later
|
||||
- Blender 2.60 or later
|
||||
- OSG exporter add-on for Blender
|
||||
- A Blender model you would like to export
|
||||
|
||||
Installing the exporter
|
||||
#######################
|
||||
|
||||
#. Download the
|
||||
`OSG export script
|
||||
<https://github.com/openmw/osgexport/blob/release/blender-2.5/build/osgexport-0.14.2.zip?raw=true>`_
|
||||
#. Open Blender and go to File -> User Preferences
|
||||
#. Select Add-ons -> Install from File, then select the downloaded `.zip`
|
||||
#. Enter "osg" into the search bar, then tick the checkbox next to the add-on to enable it
|
||||
#. Now click Save user setting so the exporter stays enabled when you re-start Blender
|
||||
|
||||
You can now export your models using the OSG model (osgt) entry in the File -> Export menu.
|
||||
|
||||
Model's location
|
||||
################
|
||||
|
||||
The model needs to be at 0,0,0 coordinates in Blender,
|
||||
as this is where its origin will always be when exported.
|
||||
If the model is offset from 0,0,0 in Blender,
|
||||
it will be offset from its origin in the exported file as well.
|
||||
|
||||
Model's rotation
|
||||
################
|
||||
|
||||
- Blender's Z axis is up axis in OpenMW
|
||||
- Blender's Y axis is front axis in OpenMW
|
||||
- Blender's X axis is left-right axis in OpenMW
|
||||
- Visual rotation is taken into account when exporting
|
||||
|
||||
Model's scale
|
||||
#############
|
||||
|
||||
Blender:OpenMW model scale is 70:1,
|
||||
which means 70 Blender units (BU) translate into 1m in OpenMW.
|
||||
Using this scale, any models you make will fit with the existing ones.
|
||||
The scale does not need to be applied,
|
||||
the exporter will always use the visual scale of the model.
|
||||
However, 70 is an odd number to work with so here's an alternative workflow:
|
||||
|
||||
- In Blender, use a scale of 1BU = 1m which is a nice scale and ratio to work with.
|
||||
Have all models use this scale.
|
||||
- Before exporting a model, scale it up by a factor of 70.
|
||||
- After exporting, undo the model's scale change and continue working as normal
|
||||
(in the future a preferable way would be to apply the scale through the exporter)
|
||||
|
||||
Putting the model in-game
|
||||
#########################
|
||||
|
||||
Place the exported model in the Meshes sub-folder of a data folder recognized by the game,
|
||||
e.g. the Morrowind Data Files folder, or the local data folder.
|
||||
Place all required textures in the Textures sub-folder.
|
||||
Now start OpenMW-CS, create a new addon file
|
||||
and you should see your mesh in the Assets -> Meshes table.
|
||||
Go ahead and make some object use your mesh.
|
||||
You can now preview by right clicking on the object -> Preview to see what the mesh will look like.
|
||||
|
||||
Converting the model to binary
|
||||
##############################
|
||||
|
||||
When the model behaves to our liking,
|
||||
we can think about converting it from the "osgt" text format to the "osgb" binary format
|
||||
so that it's smaller in size - and thus faster to load.
|
||||
|
||||
To do this, simply invoke the osgconv tool.
|
||||
This tool should be included with your distribution of OpensceneGraph.
|
||||
|
||||
`osgconv -O WriteImageHint=UseExternal model.osgt model.osgb`
|
||||
|
||||
Of course, you can convert the binary model back to text format as well:
|
||||
|
||||
`osgconv -O WriteImageHint=UseExternal model.osgb model.osgt`
|
||||
|
||||
Note the use of `-O WriteHint=UseExternal` option.
|
||||
Enabling this option is desirable because it keeps the textures as external file references,
|
||||
rather than embedding the textures within the model file.
|
||||
Embedded textures have disadvantages such as being hard to inspect,
|
||||
and impossible to share between model files.
|
||||
|
||||
Using shaders/normal maps
|
||||
#########################
|
||||
|
||||
See :ref:`OSG Native Files`
|
||||
|
||||
Conclusion
|
||||
##########
|
||||
|
||||
These are the basics of getting a textured, static model from Blender into the game.
|
||||
In the future, we will want a way to add texture animations,
|
||||
skeletal animations, separate collision shapes,
|
||||
and some other features that are currently only available via NIF files.
|
||||
We will likely add these features to the native OSG format after OpenMW 1.0.
|
@ -0,0 +1,171 @@
|
||||
autosectionlabel_prefix_document = True
|
||||
|
||||
######################
|
||||
Texture Modding Basics
|
||||
######################
|
||||
|
||||
OpenMW supports new texture mapping techniques
|
||||
that were not available in the vanilla Morrowind engine.
|
||||
|
||||
`Normal mapping`_ is a technique used to fake lighting of bumps,
|
||||
cracks and other small details.
|
||||
|
||||
`Specular mapping`_ is used to vary the shininess/specularity along the surface of an object.
|
||||
|
||||
The prerequisite to using these techniques are
|
||||
`shaders <https://en.wikipedia.org/wiki/Shader>`_.
|
||||
OpenMW automatically uses shaders for objects with these mapping techniques.
|
||||
|
||||
Normal Mapping
|
||||
##############
|
||||
|
||||
To plug in a normal map, you can edit the NIF mesh file(s) using NifSkope
|
||||
and assign the normal map texture to the BumpTexture slot in the NiTexturingProperty.
|
||||
|
||||
.. note::
|
||||
While the original Morrowind engine does support the BumpTexture slot,
|
||||
it uses a strange form of normal mapping that applies to an environment map.
|
||||
OpenMW uses standard normal mapping, which can achieve much better results.
|
||||
Unfortunately, this difference can result in incompatibilities.
|
||||
Some mods
|
||||
(e.g. `Redoran Bump Mapped <http://www.nexusmods.com/morrowind/mods/42406/?>`_)
|
||||
look much darker compared to the vanilla engine and will have to be recalibrated.
|
||||
|
||||
Specular Mapping
|
||||
################
|
||||
|
||||
The RGB channels of the specular map are used as the specular color.
|
||||
The alpha channel specifies shininess in range [0, 255].
|
||||
If a specular map is used, it will override the shininess and specular color
|
||||
set in the NiMaterialProperty / osg::Material.
|
||||
|
||||
NIF files do not support specular maps.
|
||||
In order to use them anyway, see the next section.
|
||||
|
||||
Automatic Use
|
||||
#############
|
||||
|
||||
In addition to editing mesh files,
|
||||
there is another way of plugging in these texture maps.
|
||||
Simply create the textures with appropriate naming convention
|
||||
(e.g. when the base texture is called foo.dds,
|
||||
the normal map would have to be called foo_n.dds).
|
||||
To enable this automatic use based on filename pattern,
|
||||
you will have to add the following to your
|
||||
`settings.cfg </source/reference/modding/paths>`_ file::
|
||||
|
||||
[Shaders]
|
||||
auto use object normal maps = true
|
||||
|
||||
auto use object specular maps = true
|
||||
|
||||
normal map pattern = _n
|
||||
normal height map pattern = _nh
|
||||
|
||||
specular map pattern = _spec
|
||||
|
||||
Additionally, a normal map with the `_nh` pattern enables
|
||||
the use of the normal map's alpha channel as height information.
|
||||
This can be used by a `parallax mapping <https://en.wikipedia.org/wiki/Parallax_mapping>`_
|
||||
shader to offset the texture depending on the viewing angle and height,
|
||||
creating a fake 3D effect.
|
||||
|
||||
The above settings are not enabled by default to prevent incompatibilities
|
||||
with mods that may be inadvertently using these naming schemes.
|
||||
|
||||
On the topic of shader settings,
|
||||
you may be interested in these three settings as well: :ref:`force shaders`,
|
||||
:ref:`force per pixel lighting`, and :ref:`clamp lighting`.
|
||||
In particular, `clamp lighting = false` makes normal maps look much better!
|
||||
|
||||
Terrain
|
||||
#######
|
||||
|
||||
The terrain shader also supports normal, normal-height and specular maps,
|
||||
with one difference compared to objects:
|
||||
the specular value must be packed into the layer texture's alpha channel.
|
||||
|
||||
For example, if you wanted to add specular mapping to a terrain layer called rock.dds,
|
||||
you would copy this texture to a new file called rock_diffusespec.dds,
|
||||
and then edit its alpha channel to set the specular intensity.
|
||||
|
||||
The relevant settings are::
|
||||
|
||||
[Shaders]
|
||||
auto use terrain normal maps = true
|
||||
|
||||
auto use terrain specular maps = true
|
||||
|
||||
terrain specular map pattern = _diffusespec
|
||||
|
||||
# Also used for terrain normal maps
|
||||
normal map pattern = _n
|
||||
normal height map pattern = _nh
|
||||
|
||||
OSG native files
|
||||
################
|
||||
|
||||
OpenMW supports all the above shader features for meshes in the Native Mesh Format.
|
||||
To have the shader generator recognize specific textures,
|
||||
the `osg::Texture2D` must be named appropriately.
|
||||
|
||||
Available texture types are the following (most of which also have NIF equivalents):
|
||||
|
||||
:diffuseMap: base texture
|
||||
:normalMap: normal map, as described earlier
|
||||
:normalHeightMap: same as normal map, but including height information in alpha channel to be used for parallax effects
|
||||
:emissiveMap: controls the material's emission, useful for objects that glow in the dark
|
||||
:darkMap: multiplied onto the base texture
|
||||
:detailMap: multiplied by 2 and then multiplied onto the base texture
|
||||
:envMap: spherical environment map
|
||||
:specularMap: specular map, as described earlier
|
||||
|
||||
The first texture unit automatically acts as diffuseMap if no recognized type is specified.
|
||||
|
||||
Example: `.osgt` file excerpt of a normal mapped mesh::
|
||||
|
||||
TextureModeList 2 {
|
||||
Data 1 {
|
||||
GL_TEXTURE_2D ON
|
||||
}
|
||||
Data 1 {
|
||||
GL_TEXTURE_2D ON
|
||||
}
|
||||
}
|
||||
TextureAttributeList 2 {
|
||||
Data 1 {
|
||||
osg::Texture2D {
|
||||
UniqueID 37
|
||||
Name "diffuseMap"
|
||||
WRAP_S REPEAT
|
||||
WRAP_T REPEAT
|
||||
WRAP_R REPEAT
|
||||
MIN_FILTER LINEAR_MIPMAP_LINEAR
|
||||
MAG_FILTER LINEAR
|
||||
Image TRUE {
|
||||
UniqueID 60
|
||||
FileName "textures/BuddhaStatue_Dif.jpg"
|
||||
WriteHint 2 2
|
||||
}
|
||||
}
|
||||
Value OFF
|
||||
}
|
||||
Data 1 {
|
||||
osg::Texture2D {
|
||||
UniqueID 38
|
||||
Name "normalMap"
|
||||
WRAP_S REPEAT
|
||||
WRAP_T REPEAT
|
||||
WRAP_R REPEAT
|
||||
MIN_FILTER LINEAR_MIPMAP_LINEAR
|
||||
MAG_FILTER LINEAR
|
||||
Image TRUE {
|
||||
UniqueID 61
|
||||
FileName "textures/BuddhaStatue_Nor.jpg"
|
||||
WriteHint 2 2
|
||||
}
|
||||
}
|
||||
Value OFF
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue