MOHPA WATER
This document explains how
to setup the different kinds of water available in MOHPA.
Water Types
Currently there are four
types of water supported in MOHPA, they are:
Interactive: Interactive water is water that reacts to bullets and explosions, you
can see ripples go through the surface of the water when it gets shot. Because
of the overhead in calculating the water simulation, this water type is better
suited to small bodies of water, small ponds, puddles or pools.
Ocean: Ocean
water is the default water type used in MOHPA, it can be modified to look like
many types of water by editing the material, it can be
used for larger bodies of water such as lakes, oceans and swamps. This water
can have waves, the parameters for waves (direction, amplitude) can be tweaked
in the material, as well as the colors and transparency.
Modeled Water: This is water that is exported from a 3D package (Max or Maya) into a
.GR2 file. This is mainly used for rivers which require special texture mapping
to work with animated textures. The way the water looks will depend on the
material applied to it.
Infinite water: This is water that extends out to the horizon, it�s very useful for
levels such as those in which you�re in a plane and have substantial
visibility. With this water type, no matter where you are in the level, there
will always be water underneath the player that extends to the horizon.
Creating Infinite Water
To set infinite water you
must set the following key/value pair in
WORLDSPAWN:
Key: horizon_water
Value: 1
There are a few properties
that you can change when working with infinite water, these are all worldspawn
key/value pairs:
horizon_water_material � this is a string that identifies the material the
water should use. Default is �horizon_water�
horizon_water_height � this is the height at which the water will be
placed. Default is 256.
horizon_water_tiling � this is the texture tiling factor of the water.
Default is 10.
horizon_water_tessellation � this allows you to specify a tessellation factor,
this represents the number of vertices along each axis, the default is 32, this
means that the horizon water mesh will consist of 32 x 32 vertices.
Creating Interactive Water
Start by right clicking on
the 2D window, go to the �Classes� menu and click on �Water�. This will create
a water brush that you can then resize to fit the area where water is
necessary.
For physics to work
correctly in water (objects sinking or floating), you need to make sure that
the brush encompasses not only the area of the water, but the depth as well, as
shown in the next figure.
Select the water brush and
press �N� to bring up the entity window. The description window contains the
following parameters that you can modify.
"num_nodes" -
Integer representing the number of vertices, defaults to 16000.
num_nodes can be useful to
increase or decrease the polycount of a water object (excluding for water that
has been modeled using a 3rd party tool).
"targetname" -
Name of the water brush, can be used to turn water on/off in script.
This allows you to manually
hide and show water objects from script, this is the syntax:
$world show_water
<targetname>
$world hide_water
<targetname>
This can be useful when you
go into a ship that�s being intersected by the water, or if you are in an area
that the water is not visible, yet due to the size of it, or for some other
reason is not being culled, you can manually turn it off for a performance
gain.
"materialname" -
Name of the material to set to the water.
The materialname must match
a .xmat file located in the �materials� folder in one of the main/pak*.rez
files shipped with the game (do not include the .xmat extension).
"collision_material_name"
- Name of the collision material to apply to the water
This only needs to be set
in case the collision material is anything other than water, however it is
unlikely.
"current_strength"
- Floating point number specifying a current.
This should be a small
value, some tweaking may be needed to find the right current strength, 0 means
no current, 5 is a very strong current.
�current_direction" -
Vector specifying direction of the current.
This is a 2 dimensional
vector that specifies the direction of the current (as if you�re looking top
down at the water), alternatively, you can specify
�current_angle� � Angle
from 0 � 360 which represents the direction of the current.
Which is just an angle from
0 � 360, imagine you�re looking top down at the water and 0 angle points to the
right.
"drawmodel" - If
a model is specified, the water type is overriden and water geometry is not
created
This is used only when the
water being used requires an external model, like rivers.
NOTE ABOUT MODELED WATER: When you place a water object modeled externally,
you will notice that aside from being able to place the water, you can also
resize the brush associated with the water object. The size of this brush
determines the physical characteristic of the water, this means that whenever
the player or NPCs go within the bounds of the brush, they will be affected by
the water. Special care must be taken so that the brush does not poke out of
the terrain where there is no water, this may cause AI to think there�s water
there and behave as such, which is undesirable.
Getting physics to work with water
This is how you enable
water to have a current and allow objects/bodies to float on it.
You must begin by setting a
texture onto the water brush, you can find a water texture in Textures/common.
Once applied, make sure the brush is still selected, and to avoid overwriting
surface information, it is advised that you MIDDLE MOUSE click on a face of
your water brush to grab the surface properties.� Once you�ve done this, press the �S� key.
This will bring up the following dialog, check the box labeled �water� and then
press �apply�. If you forget to do this, you may experience odd behavior, such
as NPC�s or the player walking on water.