Update README file to cover new 3D cloud commands.
This commit is contained in:
parent
4a8dba3af8
commit
53b1836ab3
1 changed files with 106 additions and 40 deletions
|
@ -1,9 +1,107 @@
|
|||
Configuring 3D Clouds
|
||||
=====================
|
||||
|
||||
3D clouds are configured using the file data/cloudlayers.xml.
|
||||
3D clouds can be created in two ways:
|
||||
- By placing individual clouds using a command (e.g. from Nasal)
|
||||
- Using the global weather function, which reads cloud definition from
|
||||
an XML file.
|
||||
|
||||
This file has 3 distinct sections: layers, cloud boxes and clouds,
|
||||
Placing Clouds Individually
|
||||
===========================
|
||||
|
||||
Clouds are created using the "add-cloud" command, passing a property
|
||||
node defining the location and characterstics of the cloud.
|
||||
|
||||
Location is defined by the following properties:
|
||||
|
||||
<layer> - The cloud layer number to add the cloud to. (default 0)
|
||||
<index> - A unique identifier for the cloud in the layer. If a cloud
|
||||
already exists with this index, the new cloud will not be
|
||||
created, and 0 is returned.
|
||||
<lon-deg> - Longitude to place the cloud, in degrees (default 0)
|
||||
<lat-deg> - Latitude t place the cloud, in degrees (default 0)
|
||||
<alt-ft> - Altitude to place the cloud, relative to the layer (!) in ft
|
||||
(default 0)
|
||||
<x-offset-m> - Offset in m from the lon-deg. +ve is south (default 0)
|
||||
<y-offset-m> - Offset in m from the lat-deg. +ve is east (default 0)
|
||||
|
||||
The cloud itself is built up of a number of "sprites" - simple 2D textures
|
||||
that are always rotated to be facing the viewer. These sprites are handled
|
||||
by a OpenGL Shader - a small program that is run on your graphics card.
|
||||
|
||||
The cloud is defined by the following properties:
|
||||
|
||||
<min-cloud-width-m> - minimum width of the cloud in meters (default 500)
|
||||
<max-cloud-width-m> - maximum width of the cloud (default min-cloud-width-m)
|
||||
<min-cloud-height-m> - minimum height of the cloud (default min-cloud-width-m)
|
||||
<max-cloud-height-m> - maximum height of the cloud (default max-cloud-width-m)
|
||||
<texture> - texture file of sprites to use (default cl_cumulus.png)
|
||||
<num-textures-x> - number of cloud textures defined horizontally in the
|
||||
texture file (default 4)
|
||||
<num-textures-y> - number of cloud textures defined vertically in the
|
||||
texture file (default 4)
|
||||
<num-sprites> - Number of sprite to generate for the cloud (default 20)
|
||||
<bottom-shade> - Light multiplier for sprites at the bottom of the cloud
|
||||
(default 1.0)
|
||||
<min-sprite-width-m> - minimum width of the sprites used to create the cloud
|
||||
(default 200)
|
||||
<max-sprite-width-m> - maximum width of the sprites used to create the cloud
|
||||
(default min-sprite-width-m)
|
||||
<min-sprite-height-m> - minimum height of the spites used to create the cloud
|
||||
(default min-sprite-width-m)
|
||||
<max-sprite-height-m> - maximum height of the sprites used to create the cloud
|
||||
(default max-sprite-height-m)
|
||||
|
||||
The texture to use for the sprites is defined in the <texture> tag.
|
||||
To allow some variation, you can create a texture file containing multiple
|
||||
sprites in a grid, and define the <num-textures-x/y> tags. The code
|
||||
decides which texture to use for a given sprite : randomly in the x-direction
|
||||
and based on the altitude of the sprite within the cloud in the y-direction.
|
||||
Therefore, you should put sprite textures you want to use for the bottom of
|
||||
your cloud at the bottom of the texture file, and those you want to use for
|
||||
the top of the cloud at the top of the texture file.
|
||||
|
||||
For example, the following Nasal snippet will create a cloud immediately above the
|
||||
aircraft at an altitude of 1000 ft above /environment/clouds/layer[0]/elevation-ft :
|
||||
|
||||
var p = props.Node.new({ "layer" : 0,
|
||||
"index": 1,
|
||||
"lat-deg": getprop("/position/latitude-deg"),
|
||||
"lon-deg": getprop("/position/longitude-deg"),
|
||||
"alt-ft" : 1000 });
|
||||
fgcommand("add-cloud", p);
|
||||
|
||||
Moving Individual Clouds
|
||||
========================
|
||||
|
||||
Clouds may be moved by using the "move-cloud" command. This takes the following
|
||||
property arguments.
|
||||
|
||||
<layer> - The cloud layer number containing the cloud to move. (default 0)
|
||||
<index> - The unique identifier of the cloud to move.
|
||||
<lon-deg> - Longitude to place the cloud, in degrees (default 0)
|
||||
<lat-deg> - Latitude t place the cloud, in degrees (default 0)
|
||||
<alt-ft> - Altitude to place the cloud, relative to the layer (!) in ft
|
||||
(default 0)
|
||||
|
||||
TODO: Add offset arguments for consistency with add-cloud.
|
||||
|
||||
Deleting Individual Clouds
|
||||
===========================
|
||||
|
||||
Clouds may be deleted by using the "del-cloud" command. This takes the following
|
||||
property arguments.
|
||||
|
||||
<layer> - The cloud layer number containing the cloud to delet. (default 0)
|
||||
<index> - The unique identifier of the cloud to delete.
|
||||
|
||||
Global 3D Clouds
|
||||
================
|
||||
|
||||
The global weather system uses sets of clouds defined in cloudlayers.xml
|
||||
in your FG_ROOT.
|
||||
|
||||
The file has 3 distinct sections: layers, cloud boxes and clouds,
|
||||
described below.
|
||||
|
||||
Notes for those editing clouds:
|
||||
|
@ -23,41 +121,9 @@ Notes for those editing clouds:
|
|||
Clouds
|
||||
======
|
||||
|
||||
The <clouds> section contains definitions of clouds themselves, built
|
||||
up of a number of "sprites" - simple 2D textures that are always
|
||||
rotated to be facing the viewer. These sprites are handled by a OpenGL
|
||||
Shader - a small program that is run on your graphics card.
|
||||
|
||||
Sets of these clouds are be built up into bigger masses, described below.
|
||||
|
||||
Each cloud group has a completely user-defined name, and contains the
|
||||
following tags.
|
||||
|
||||
<min-cloud-width-m> - minimum width of the cloud
|
||||
<max-cloud-width-m> - maximum width of the cloud
|
||||
<min-cloud-height-m> - minimum height of the cloud
|
||||
<max-cloud-height-m> - maximum height of the cloud
|
||||
<texture> - texture file of sprites to use
|
||||
<num-textures-x> - number of cloud textures defined horizontally in the
|
||||
texture file
|
||||
<num-textures-y> - number of cloud textures defined vertically in the
|
||||
texture file
|
||||
<num-sprites> - Number of sprite to generate for the cloud
|
||||
<bottom-shade> - Light multiplier for sprites at the bottom of the cloud.
|
||||
<min-sprite-width-m> - minimum width of the sprites used to create the cloud
|
||||
<max-sprite-width-m> - maximum width of the sprites used to create the cloud
|
||||
<min-sprite-height-m> - minimum height of the spites used to create the cloud
|
||||
<max-sprite-height-m> - maximum height of the sprites used to create the cloud
|
||||
|
||||
|
||||
The texture to use for the sprites is defined in the XML <texture> tag.
|
||||
To allow some variation, you can create a texture file containing multiple
|
||||
sprites in a grid, and define the <num-textures-x/y> tags. The code
|
||||
decides which texture to use for a given sprite : randomly in the x-direction
|
||||
and based on the altitude of the sprite within the cloud in the y-direction.
|
||||
Therefore, you should put sprite textures you want to use for the bottom of
|
||||
your cloud at the bottom of the texture file, and those you want to use for
|
||||
the top of the cloud at the top of the texture file.
|
||||
The cloud definitions are as described above for placing individual
|
||||
clouds, but no position information is used (this is defined in the
|
||||
cloud box and layers below).
|
||||
|
||||
Cloud Boxes
|
||||
===========
|
||||
|
|
Loading…
Reference in a new issue