<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style>
<!--
 /* Style Definitions */

p,div
	{mso-style-name:Text;
	margin-top:0pt;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	mso-bidi-font-size:12.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";}
li
	{mso-style-name:Text;
	margin-top:2pt;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	mso-bidi-font-size:12.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";}
p.Link, div.link
	{mso-style-name:Link;
	margin-top:0pt;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	mso-bidi-font-size:12.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:#3366FF;}
li.Link
	{mso-style-name:Link;
	margin-top:0pt;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	mso-bidi-font-size:12.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:#3366FF;}
h1
	{mso-style-next:Normal;
	margin-top:12.0pt;
	margin-right:0pt;
	margin-bottom:12.0pt;
	margin-left:0pt;
	text-align:left;
	line-height:150%;
	mso-pagination:widow-orphan;
	page-break-after:avoid;
	mso-outline-level:2;
	font-size:20.0pt;
	font-family:Arial;
	color:black;
	mso-bidi-font-style:italic;}
h2
	{mso-style-next:Normal;
	margin-top:12.0pt;
	margin-right:0pt;
	margin-bottom:12.0pt;
	margin-left:0pt;
	text-align:left;
	line-height:150%;
	mso-pagination:widow-orphan;
	page-break-after:avoid;
	mso-outline-level:2;
	font-size:18.0pt;
	font-family:Arial;
	color:#000033;
	mso-bidi-font-style:italic;}
h3
	{mso-style-next:Normal;
	margin-top:12.0pt;
	margin-right:0pt;
	margin-bottom:9.0pt;
	margin-left:0pt;
	text-align:left;
	mso-pagination:widow-orphan;
	page-break-after:avoid;
	mso-outline-level:3;
	font-size:16.0pt;
	mso-bidi-font-size:13.0pt;
	font-family:Arial;
	color:#0000cc;}
h4
	{mso-style-next:Normal;
	margin-top:12.0pt;
	margin-right:0pt;
	margin-bottom:5.0pt;
	margin-left:0pt;
	text-align:left;
	mso-pagination:widow-orphan;
	page-break-after:avoid;
	mso-outline-level:3;
	font-size:13.0pt;
	mso-bidi-font-size:13.0pt;
	font-family:Arial;
	color:#00aa00;}
h5
	{mso-style-next:Normal;
	margin-top:3.0pt;
	margin-right:0pt;
	margin-bottom:3.0pt;
	margin-left:0pt;
	text-align:left;
	mso-pagination:widow-orphan;
	page-break-after:avoid;
	mso-outline-level:3;
	font-size:12.0pt;
	mso-bidi-font-size:12.0pt;
	font-family:Arial;
	color:#000000;}
h6
	{mso-style-next:Normal;
	margin-top:3.0pt;
	margin-right:0pt;
	margin-bottom:3.0pt;
	margin-left:0pt;
	text-align:left;
	mso-pagination:widow-orphan;
	page-break-after:avoid;
	mso-outline-level:3;
	font-size:12.0pt;
	mso-bidi-font-size:12.0pt;
	font-family:Arial;
	color:#aa0000;}
CODE
	{mso-style-name:Code;
	margin:0pt;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	mso-bidi-font-size:12.0pt;
	font-family:"Courier New";
	mso-fareast-font-family:"Courier New";
	color:#000000;}
A:Hover
	{color:#00aa00;}
BODY
	{margin-left:30pt;
	background:#f5f5f5;}
@page Section1
	{size:612.0pt 792.0pt;
	margin:72.0pt 90.0pt 72.0pt 90.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}

table
	{class:T1;
	style:border:medium none;
	border-collapse:collapse;
	border:5;
	background-color:#FFFF99;
	border-color:#CC0000;
	border-style:inset;
	width:670;
	text-align:left;}

tr	{vertical-align:top;}

-->
</style>

<title>Weather</title>
</head>

<body>
<p><img src="../Special Effects SDK/Images/fsx-banner747.jpg" width="800" height="200" /></p>
<h1>Weather Systems </h1>
<h2>Overview</h2>
<p>There are a number of tools in the <i>Microsoft &reg; Flight Simulator X</i> SDK for manipulating both the simulated weather, and the rendering of specific weather systems such as thermals and ridge lift. Weather can be programmatically retrieved and specified using the <a href="../../Core Utilities Kit/SimConnect SDK/SimConnect.htm">SimConnect</a> programming interface. Weather systems can also be added to specific <a href="../../Mission Creation Kit/Mission Creation.html">Missions</a>. This document describes two xml files that specify the physical appearance of thermals and ridge lift (the AirObjectVisuals.xml file) and the appropriate values to use for thermals depending on the type of terrain (the ThermalDescriptions.xml file). Both these files can be found in the root directory of <i>Flight Simulator X.</i></p>
<h2>Table of Contents</h2>
<ul>
  <li><a href="#TheAirObjectVisualsFile">The AirObjectsVisuals File</a></li>
  <li><a href="#TheThermalDescriptionsFile">The ThermalDescriptions File </a></li>
</ul>
<h2>The AirObjectVisuals File<a name="TheAirObjectVisualsFile" id="TheAirObjectVisualsFile"></a></h2>
<p>This file specifies which graphical model to use for thermals and ridge lift. Both can have two variations, natural and schematic, so there can be up to four rendering models. <i>Flight Simulator X</i> does not come with models for ridge lift, so only two models are actually supplied with the product. Any number of new models for both thermals and ridge lift can be added to the simulation, by amending this file appropriately. The following table shows the initial xml file:</p>
<p>&nbsp;</p>
<p>&nbsp; </p>
<table class="T1" cellspacing="2" cellpadding="4">
  <tr>
    <td><p>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;<br />
      &lt;SimBase.Document Type=&quot;AceXML&quot; version=&quot;1,0&quot; id=&quot;AirObjectVisuals&quot;&gt;<br />
  &lt;Descr&gt;AceXML Document&lt;/Descr&gt;<br />
  &lt;Filename&gt;AirObjectVisuals.XML&lt;/Filename&gt;<br />
  &lt;SimMission.AirObjectVisuals&gt;</p>
      <p>&nbsp;</p>
      <p> &lt;AirObjectVisual id = &quot;{A600A1CE-8BEE-438f-828A-3562CBE897AE}&quot;&gt;<br />
  &lt;AirObjectModelGuid&gt;{00000000-0000-0000-0000-000000000000}&lt;/AirObjectModelGuid&gt;<br />
  &lt;ScaleModel&gt;FALSE&lt;/ScaleModel&gt;<br />
  &lt;/AirObjectVisual&gt;</p>
      <p>&nbsp; </p>
      <p>&lt;AirObjectVisual id = &quot;{A600A1CD-8BEE-438f-828A-3562CBE897AE}&quot;&gt;<br />
  &lt;AirObjectModelGuid&gt;{61ff499a-6e71-46ab-bb59-e10f7f457674}&lt;/AirObjectModelGuid&gt;<br />
  &lt;ScaleModel&gt;FALSE&lt;/ScaleModel&gt;<br />
  &lt;/AirObjectVisual&gt;</p>
      <p>&nbsp; </p>
      <p>&lt;AirObjectVisual id = &quot;{A600A1CC-8BEE-438f-828A-3562CBE897AE}&quot;&gt;<br />
  &lt;AirObjectModelGuid&gt;{4d59805f-7a43-490d-b997-33e8b883716d}&lt;/AirObjectModelGuid&gt;<br />
  &lt;ScaleModel&gt;TRUE&lt;/ScaleModel&gt;<br />
  &lt;/AirObjectVisual&gt;</p>
      <p>&nbsp; </p>
      <p>&lt;!-- 'Natural' visualizations for thermals --&gt;<br />
  &lt;Autogen.Grouping id = &quot;{320AF327-20D0-4f69-974C-0D2633A81050}&quot;&gt;<br />
  &lt;ReferenceEntry&gt;<br />
  &lt;TargetGuid&gt;{A600A1CD-8BEE-438f-828A-3562CBE897AE}&lt;/TargetGuid&gt;<br />
  &lt;RelativeWeight&gt;100&lt;/RelativeWeight&gt;<br />
  &lt;/ReferenceEntry&gt;<br />
  &lt;/Autogen.Grouping&gt;</p>
      <p>&nbsp; </p>
      <p>&lt;!-- 'Schematic' visualizations for thermals --&gt;<br />
  &lt;Autogen.Grouping id = &quot;{9BFAFE66-7915-4afc-AB5C-CBADFFCE1762}&quot;&gt;<br />
  &lt;ReferenceEntry&gt;<br />
  &lt;TargetGuid&gt;{A600A1CC-8BEE-438f-828A-3562CBE897AE}&lt;/TargetGuid&gt;<br />
  &lt;RelativeWeight&gt;100&lt;/RelativeWeight&gt;<br />
  &lt;/ReferenceEntry&gt;<br />
  &lt;/Autogen.Grouping&gt;</p>
      <p>&nbsp; </p>
      <p>&lt;!-- 'Natural' visualizations for ridge lift --&gt;<br />
  &lt;Autogen.Grouping id = &quot;{31605B25-7B2E-4e92-AA69-53042298D530}&quot;&gt;<br />
  &lt;ReferenceEntry&gt;<br />
  &lt;TargetGuid&gt;{A600A1CE-8BEE-438f-828A-3562CBE897AE}&lt;/TargetGuid&gt;<br />
  &lt;RelativeWeight&gt;100&lt;/RelativeWeight&gt;<br />
  &lt;/ReferenceEntry&gt;<br />
  &lt;/Autogen.Grouping&gt;</p>
      <p>&nbsp; </p>
      <p>&lt;!-- 'Schematic' visualizations for ridge lift --&gt;<br />
  &lt;Autogen.Grouping id = &quot;{45B8B708-5A7F-4f12-9437-AE1791E543CA}&quot;&gt;<br />
  &lt;ReferenceEntry&gt;<br />
  &lt;TargetGuid&gt;{A600A1CE-8BEE-438f-828A-3562CBE897AE}&lt;/TargetGuid&gt;<br />
  &lt;RelativeWeight&gt;100&lt;/RelativeWeight&gt;<br />
  &lt;/ReferenceEntry&gt;<br />
  &lt;/Autogen.Grouping&gt;</p>
      <p> &lt;/SimMission.AirObjectVisuals&gt;<br />
        &lt;/SimBase.Document&gt;<br />
    </p></td>
  </tr>
</table>
<p>&nbsp;</p>
<p>The following table describes the main entries in the file. </p>
<p>&nbsp;</p>
<table class="T1" cellspacing="2" cellpadding="4">
  <tr>
    <td><h5>Entry</h5></td>
    <td><h5>Description</h5></td>
  </tr>
  <tr>
    <td><b>AirObjectVisual id</b></td>
    <td>An internal GUID identifing a visual model. Note that if this is all zeros, there is no visual model. Add a new entry for each new 3D model of one of the weather systems. </td>
  </tr>
  <tr>
    <td><b>AirObjectModelGuid</b></td>
    <td>A GUID referencing the actual 3D model to render in the simulation. Refer to the <a href="../Modeling SDK/Modeling Tools.html">Modeling Tools</a> documentation for more details on creating an animated model. The model will need to be compiled into a bgl file, using the <a href="../BGL Compiler SDK/The BGL Compiler.html">BGL Compiler</a>, and then placed in an appopriate directory, such as <i>Add-on scenery/scenery</i>. </td>
  </tr>
  <tr>
    <td><b>ScaleModel</b></td>
    <td>Set this to <b>True</b> if the model can be scaled to fit the size of the thermal, or <b>False</b> if it should not be scaled. Obviously a model containing images of birds, for example, should not be scaled, whereas a model containing only cloud type images can successfully be scaled. </td>
  </tr>
  <tr>
    <td><b>Autogen.Grouping id</b></td>
    <td>This references a GUID internal to <i>Flight Simulator X</i>, do not change this.  </td>
  </tr>
  <tr>
    <td><b>ReferenceEntry </b></td>
    <td>There can be any number of <b>ReferenceEntry</b> entries within one <b>Autogen Grouping id </b>. Add a new entry for each new 3D model of one of the weather systems. </td>
  </tr>
  <tr>
    <td><b>TargetGuid</b></td>
    <td>This references the <b>AirObjectVisual id</b> for each of the four vizualizations (natural and schematic thermals and ridge lift). </td>
  </tr>
  <tr>
    <td><b>RelativeWeight</b></td>
    <td>If there are multiple <b>ReferenceEntry</b> objects, each should be given a weighting. The actual model rendered will be randomly selected depending on the ratio of the weight entered here, with the total of the relative weights. </td>
  </tr>
</table>
<p>&nbsp; </p>
<p>&nbsp; </p>
<h2>The ThermalDescriptions File<a name="TheThermalDescriptionsFile" id="TheThermalDescriptionsFile"></a></h2>
<p>The thermal descriptions file describes the size and physical properties of thermals. Initially the file contains two descriptions, one null and one default thermal.   Any number of new thermal descriptions can be added. The null thermal is used to indicate that no thermal should be created (which is appropriate for certain land classes). </p>
<p>&nbsp;</p>
<p>The following table shows the two initial descriptions. For details of what each parameter means, refer to the <b>SimConnect_WeatherCreateThermal</b> function described in the <a href="../../Core Utilities Kit/SimConnect SDK/SimConnect.htm">SimConnect</a> documentation. A minimum and maximum value provides a range from which a value is chosen at random. </p>
<p>&nbsp;</p>
<table class="T1" cellspacing="2" cellpadding="4">
  <tr>
    <td><p> &lt;ThermalDescription id = &quot;{4f5e0000-1e81-11db-9897-001372201444}&quot;&gt;<br />
  &lt;RadiusMin&gt;0&lt;/RadiusMin&gt;<br />
  &lt;/ThermalDescription&gt;</p>
      <p>&nbsp;</p>
      <p> &lt;ThermalDescription id = &quot;{4f5e0001-1e81-11db-9897-001372201444}&quot;&gt;<br />
  &lt;RadiusMin&gt;1500&lt;/RadiusMin&gt;<br />
  &lt;RadiusMax&gt;4000&lt;/RadiusMax&gt;<br />
  &lt;HeightMin&gt;4000&lt;/HeightMin&gt;<br />
  &lt;HeightMax&gt;6000&lt;/HeightMax&gt;<br />
  &lt;CoreRateMin&gt;3.5&lt;/CoreRateMin&gt;<br />
  &lt;CoreRateMax&gt;8.5&lt;/CoreRateMax&gt;<br />
  &lt;CoreTurbulenceMin&gt;0.02&lt;/CoreTurbulenceMin&gt;<br />
  &lt;CoreTurbulenceMax&gt;0.08&lt;/CoreTurbulenceMax&gt;<br />
  &lt;SinkRateMin&gt;0.5&lt;/SinkRateMin&gt;<br />
  &lt;SinkRateMax&gt;1.5&lt;/SinkRateMax&gt;<br />
  &lt;SinkTurbulenceMin&gt;.2&lt;/SinkTurbulenceMin&gt;<br />
  &lt;SinkTurbulenceMax&gt;1&lt;/SinkTurbulenceMax&gt;<br />
  &lt;CoreSizeMin&gt;0.80&lt;/CoreSizeMin&gt;<br />
  &lt;CoreSizeMax&gt;0.80&lt;/CoreSizeMax&gt;<br />
  &lt;CoreTransitionSizeMin&gt;0.1&lt;/CoreTransitionSizeMin&gt;<br />
  &lt;CoreTransitionSizeMax&gt;0.1&lt;/CoreTransitionSizeMax&gt;<br />
  &lt;SinkSizeMin&gt;0.15&lt;/SinkSizeMin&gt;<br />
  &lt;SinkSizeMax&gt;0.15&lt;/SinkSizeMax&gt;<br />
  &lt;SinkTransitionSizeMin&gt;0.1&lt;/SinkTransitionSizeMin&gt;<br />
  &lt;SinkTransitionSizeMax&gt;0.1&lt;/SinkTransitionSizeMax&gt;<br />
  &lt;/ThermalDescription&gt;</p></td>
  </tr>
</table>
<p>&nbsp;</p>
<p>The second section of the file includes one entry for each of the Olson Land Classification values (refer to the <a href="../Terrain SDK/Terrain and Scenery.html">Terrain and Scenery </a>documentation for a list and description of these values). The actual value of the land class is coded into the <b>TargetGuid</b>, note that the last four digits of the first entry in the GUID go from 0000 to 0094. For example, 0002 refers to Low Sparse Grassland. The following table describes the entries in the xml file:</p>
<p>&nbsp;</p>
<table class="T1" cellspacing="2" cellpadding="4">
  <tr>
    <td><h5>Entry</h5></td>
    <td><h5>Description</h5></td>
  </tr>
  <tr>
    <td><b>Autogen Grouping id </b></td>
    <td>These are coded GUIDs for internal use, so do not change them. </td>
  </tr>
  <tr>
    <td><b>ReferenceEntry</b></td>
    <td>There can be any number of <b>ReferenceEntry</b> entries within one <b>Autogen Grouping id.</b> Add a new entry for each new thermal description that can be used for this type of land classification. </td>
  </tr>
  <tr>
    <td><b>TargetGuid</b></td>
    <td>This GUID must reference one of the <b>ThermalDescription id </b>entries. </td>
  </tr>
  <tr>
    <td><b>RelativeWeight</b></td>
    <td>If there are multiple <b>ReferenceEntry</b> objects, each should be given a weighting. The actual model rendered will be randomly selected depending on the ratio of the weight entered here, with the total of the relative weights. </td>
  </tr>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p align="center">&copy; 2006 Microsoft Corporation. All rights reserved. </p>
<p align="center">~~@~~ </p>
<p align="center">&nbsp;</p>
</body>
</html>
