<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.trainzsimulator.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Thatchapthere</id>
	<title>TrainzOnline - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.trainzsimulator.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Thatchapthere"/>
	<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/wiki/Special:Contributions/Thatchapthere"/>
	<updated>2026-11-05T05:13:05Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Alpha_Numbers&amp;diff=44020</id>
		<title>Alpha Numbers</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Alpha_Numbers&amp;diff=44020"/>
		<updated>2025-02-05T13:40:31Z</updated>

		<summary type="html">&lt;p&gt;Thatchapthere: /* Alpha Number */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Locomotive Numbering==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Trainz supports dynamic locomotive numbering for custom content (using alpha-numbers); otherwise known as &#039;running numbers&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Digits are modeled as 6 individual rectangular polygons offset from the face of the Loco body (about 5mm). Digit polygons must be texture mapped using the correct texture naming and alpha-number naming conventions as follows:&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;&#039;one font&#039;&#039;&#039; type used:&lt;br /&gt;
:Digit textures (digit_1.tga to digit_6.tga) are replaced automatically with alphanumber textures (alphanumber_0 to alphanumber_9).&lt;br /&gt;
&lt;br /&gt;
If &#039;&#039;&#039;two or more font&#039;&#039;&#039; types used:&lt;br /&gt;
:Digit textures (digit_1a.tga to digit_6a.tga and digit_1b.tga to digit_6b.tga etc) are replaced automatically with alphanumber textures (alphanumber_0a to alphanumber_9a and alphanumber_0b to alphanumber_9b).&lt;br /&gt;
&lt;br /&gt;
Warning:  Assets built for TANE 4.1 and later must use [[Texture_file|texture.txt]]  image specification files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Locomotive numbering in the game is edited in &#039;&#039;&#039;Surveyor&#039;&#039;&#039;:   Trains panel (Train mode) - Edit Properties (the `?&#039; icon).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Automatic rollingstock running numbering is achieved via appropriate scripting.&lt;br /&gt;
&lt;br /&gt;
Refer to the example download files for configuration of Loco numbering digit&#039;s. (none found)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Below is the original tutorial as done by Phil_C who is no longer part of the Trainz community.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Alpha Number&#039;&#039;&#039; ==&lt;br /&gt;
 &lt;br /&gt;
In this tutorial you will learn how to create planes in your model and apply textures so you can change the number shown on your model from within Trainz.&lt;br /&gt;
&lt;br /&gt;
Note. To complete this tutorial you will need to have available a model that has already been textured and has an unwrap UVW modifier applied to it.  &lt;br /&gt;
 &lt;br /&gt;
=== Alpha Numbers ===&lt;br /&gt;
&lt;br /&gt;
==== 1. Planes ====&lt;br /&gt;
&lt;br /&gt;
The first thing that you need to do is create 4 planes 1 segment x 1 segment. This will be where the numbers will be displayed on the locomotive. Create as many planes as required up to a maximum of six. For this tutorial I have created four numbers each 125 wide by 100 long. You will need to rotate the planes 90 degrees in the &amp;quot;X&amp;quot; co-ordinates. Once rotated then you can move the planes next to each other.&lt;br /&gt;
&lt;br /&gt;
==== 2. Alpha number digit textures and mapping ====&lt;br /&gt;
&lt;br /&gt;
Once you have the planes in location then we can add the textures for the alpha numbers to the planes. You will need to create suitable sized digit textures for each number you have on the locomotive. These textures can be created using any Graphics creation program. In this tutorial I have used 32 x32 pixel tga images. They need to be suitably named using digit_x.tga or digit_xx.tga. For example if you have six numbersin one set then you will need to have digit_1.tga to digit_6.tga (Six numbers is the maximum allowed in Trainz) . If you have more than one set of numbers on the locomotive that are not identical then you will need to have digit_1a.tga to digit_6a.tga for the first set and digit_1b.tga to digit_6b.tga for the second set etc.&lt;br /&gt;
&lt;br /&gt;
Unless each number set is different then you don&#039;t need to have a different number for each numberboard. For example the two sets on the front of the locomotive can use the same alpha number and the numbers on the sides of the cab can use another. The maximum running numbers available in Trainz is six from digit_1.tga to digit_6.tga but if you only have four numbers you will only need digit_3.tga to digit_6.tga. The highest number must always be 6 even if you only have one or two numbers applied to the loco / Rollingstoc.&lt;br /&gt;
&lt;br /&gt;
If you have different size planes on your model you will need to have a differnt set of texture files for each size plane.&lt;br /&gt;
 &lt;br /&gt;
When I created the textures for the numbers I used a number that represented the actual size of the numbers that I wanted displayed on the numberboard. That way I could see how the numbers would look and check the alignment before I exported the mesh. &lt;br /&gt;
&lt;br /&gt;
Number 1 is digit_3.tga&lt;br /&gt;
Number 2 is digit_4.tga&lt;br /&gt;
Number 3 is digit_5.tga&lt;br /&gt;
Number 4 is digit_6.tga&lt;br /&gt;
&lt;br /&gt;
The digit_x.tga&#039;s are never used within Trainz but for TRS2004 you will need to include them in the package as missing textures can cause problems. Once you have all the mesh and mapping complete you can then export the mesh.&lt;br /&gt;
&lt;br /&gt;
==== 3. Alpha number files ====&lt;br /&gt;
&lt;br /&gt;
Now you need to create the actual alphanumbers. These can be any size as long as they match the digi_x.tga&#039;s size. For example if you have 32 x 32 pixel tga digits on the cab side and 16 x 16 pixel tga digits on the numberboards then the alphanumbers will need to match these dimensions. For each different alpha number set you will need ten alpha numbers 0 - 9. For example if you have three different number sets on the locomotive then you will need thirty alphanumbers. 0 - 9 for each different size or color. The alpha numbers will need an alpha channel so that they blend in with the surrounding textures on the locomotive.&lt;br /&gt;
&lt;br /&gt;
The alpha numbers need to be located in the correct directory. If your asset-filename is tutorial then the folder for the alpha numbers needs to be called tutorial_alpha_numbers.&lt;br /&gt;
&lt;br /&gt;
==== 4. Config entries ====&lt;br /&gt;
&lt;br /&gt;
The final task required to get the alpha number setup to work is to edit the config.txt file.You will need to add the following to the config file either using CMP or manually with a text editor &lt;br /&gt;
&lt;br /&gt;
 fonts 3&lt;br /&gt;
&lt;br /&gt;
Change this number to suit the number of different fonts on your locomotive&lt;br /&gt;
&lt;br /&gt;
===== fonts-path =====&lt;br /&gt;
 &lt;br /&gt;
Change this to the location of your alpha numbers minus the _alpha_numbers. The folder MUST have &amp;quot;_alpha_numbers&amp;quot; as the ending of the name of the folder. For example if your fonts are located in a folder called tutorial_alpha_numbers then the fonts path would be as follows&lt;br /&gt;
&lt;br /&gt;
 fonts-path &amp;quot;tutorial&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Trouble Shooting==&lt;br /&gt;
&lt;br /&gt;
===Materials===&lt;br /&gt;
&lt;br /&gt;
If you are finding it hard to determine what [[Material_Types|Material Type]] to use, here are some options:&lt;br /&gt;
&lt;br /&gt;
For trainz-build 4.6 or greater use [[m.pbrmetalmasked]] if you need transparency otherwise [[m.pbrmetal]] should be fine. [[m.pbrmetaldetail]] if you really want to add some micro detail to them.&lt;br /&gt;
&lt;br /&gt;
For trainz-builds less than 4.6 you will be using one of the legacy shaders like [[m.tbumptex]] or [[m.onetex]] or really any of them that you fancy.&lt;br /&gt;
&lt;br /&gt;
Look under [[Material_Types|Material Types]] for more info.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Fonts===&lt;br /&gt;
&lt;br /&gt;
If you are using 1 set of fonts then your config.txt will have this tag in it:&lt;br /&gt;
&lt;br /&gt;
  fonts         1&lt;br /&gt;
&lt;br /&gt;
and you&#039;re &amp;quot;XXXX_alpha_numbers&amp;quot; folder must use &amp;quot;alphanumber_0.tga&amp;quot; and &amp;quot;alphanumber_0.texture.txt&amp;quot; ..etc with the .texture.txt file containing:&lt;br /&gt;
&lt;br /&gt;
  Primary=alphanumber_0.tga&lt;br /&gt;
  Alpha=alphanumber_0.tga&lt;br /&gt;
  Tile=st&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you are using 2 sets of fonts then your config.txt will have this tag in it:&lt;br /&gt;
&lt;br /&gt;
  fonts         2&lt;br /&gt;
&lt;br /&gt;
and you&#039;re first font the &amp;quot;XXXX_alpha_numbers&amp;quot; folder must use &amp;quot;alphanumber_0a.tga&amp;quot; and &amp;quot;alphanumber_0a.texture.txt&amp;quot; ..etc with the .texture.txt file containing:&lt;br /&gt;
&lt;br /&gt;
  Primary=alphanumber_0a.tga&lt;br /&gt;
  Alpha=alphanumber_0a.tga&lt;br /&gt;
  Tile=st&lt;br /&gt;
&lt;br /&gt;
and you&#039;re second font the &amp;quot;XXXX_alpha_numbers&amp;quot;  folder must also use &amp;quot;alphanumber_0b.tga&amp;quot; and &amp;quot;alphanumber_0b.texture.txt&amp;quot; ..etc with the .texture.txt file containing:&lt;br /&gt;
&lt;br /&gt;
  Primary=alphanumber_0b.tga&lt;br /&gt;
  Alpha=alphanumber_0b.tga&lt;br /&gt;
  Tile=st&lt;br /&gt;
&lt;br /&gt;
NOTE: when using 2 fonts there is an &amp;quot;a&amp;quot; and &amp;quot;b&amp;quot; at the end of the alphanumber_0X naming conventions. VERY IMPORTANT and can be missed easily.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===vehicle-running-numbers Container===&lt;br /&gt;
&lt;br /&gt;
The config.txt file should have the [[Vehicle-running-numbers_container|vehicle-running-numbers]] container in it:&lt;br /&gt;
&lt;br /&gt;
 vehicle-running-numbers&lt;br /&gt;
 {&lt;br /&gt;
   running-numbers                       &amp;quot;35050-35150&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
NOTE: This is the native way of doing running numbers. There are Trainz scripts out there that might do it a different way.&lt;br /&gt;
&lt;br /&gt;
For a How-To guide to apply the Native Vehicle Running Numbers to a traincar, see [[Adding_the_Native_Automatic_Running_Numbers_system_to_a_traincar|Adding Native Vehicle Running Numbers to a Traincar]]&lt;br /&gt;
&lt;br /&gt;
===Trainz-Build===&lt;br /&gt;
&lt;br /&gt;
Make sure the tag [[&amp;quot;trainz-build&amp;quot;_number|trainz-build]] is correct for what you are trying to do!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Mesh Source Files===&lt;br /&gt;
&lt;br /&gt;
Another obvious one that creators get caught out on is to make sure you name your source .tga and texture.txt files correctly:&lt;br /&gt;
&lt;br /&gt;
digit_2.tga&lt;br /&gt;
digit_2.texture.txt&lt;br /&gt;
and the .texture.txt file contains:&lt;br /&gt;
  Primary=digit_2.tga&lt;br /&gt;
  Alpha=digit_2.tga&lt;br /&gt;
  Tile=st&lt;br /&gt;
&lt;br /&gt;
digit_3.tga&lt;br /&gt;
digit_3.texture.txt&lt;br /&gt;
and the .texture.txt file contains:&lt;br /&gt;
  Primary=digit_3.tga&lt;br /&gt;
  Alpha=digit_3.tga&lt;br /&gt;
  Tile=st&lt;br /&gt;
&lt;br /&gt;
...etc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Mesh-Table &amp;quot;Default&amp;quot; Container===&lt;br /&gt;
&lt;br /&gt;
Make sure the mesh with your running numbers uses the &amp;quot;default&amp;quot; container in the mesh-table otherwise the running numbers WILL NOT WORK!&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
 mesh-table&lt;br /&gt;
 {&lt;br /&gt;
   default&lt;br /&gt;
   {&lt;br /&gt;
     mesh                                &amp;quot;mesh_body/arn.lm&amp;quot;&lt;br /&gt;
     auto-create                         1&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Additional Checks===&lt;br /&gt;
&lt;br /&gt;
Check all your X.tga alpha channels are correct for the albedo/diffuse and normal textures.&lt;br /&gt;
&lt;br /&gt;
Check their corresponding X.texture.txt files don&#039;t have alpha=X.tga in them when they are not needed. Check they do have it when you are using transparency though!&lt;br /&gt;
&lt;br /&gt;
==Return to==&lt;br /&gt;
[[KIND_Traincar]]&lt;br /&gt;
&lt;br /&gt;
[[Content_Creation]]&lt;br /&gt;
&lt;br /&gt;
[[Content Creator&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
[[CCG/Modelling: Textures and File Sizes|Content Creator&#039;s Guide Previous Page]] . . . [[CCG/Modelling: Bump Mapping Information|Content Creator&#039;s Guide Next Page]]&lt;/div&gt;</summary>
		<author><name>Thatchapthere</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=HowTo/Bogey&amp;diff=44011</id>
		<title>HowTo/Bogey</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=HowTo/Bogey&amp;diff=44011"/>
		<updated>2025-02-05T06:16:24Z</updated>

		<summary type="html">&lt;p&gt;Thatchapthere: Fixed formatting to be monospace, and updated category-class and mesh file extension&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A&lt;br /&gt;
‘bogey’ is a term used for a locomotive or rolling stock wheel mechanism. In some countries these are known as ‘Trucks’. Every traincar must have at least one bogey/truck. Below is a typical bogey config file.&lt;br /&gt;
&lt;br /&gt;
 [[/kuid/]]                                    &amp;lt;KUID2:###:#####:#&amp;gt;&lt;br /&gt;
 [[/kind/]]                                    &amp;quot;bogey&amp;quot;&lt;br /&gt;
 [[/trainz-build/]]                            1.0&lt;br /&gt;
 [[/animdist/]]                                2.1&lt;br /&gt;
 [[/username/]]                                &amp;quot;mybogey&amp;quot;&lt;br /&gt;
 [[/direct-drive/]]                            1&lt;br /&gt;
  &lt;br /&gt;
 [[/kuid-table/]]&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 [[/obsolete-table/]]&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 [[/mesh-table/]]&lt;br /&gt;
 {&lt;br /&gt;
   [[/default/]]&lt;br /&gt;
   {&lt;br /&gt;
     [[/mesh/]]                                Car_bogey.trainzmesh&lt;br /&gt;
     [[/auto-create/]]                         1&lt;br /&gt;
   }&lt;br /&gt;
   [[/shadow/]]&lt;br /&gt;
   { &lt;br /&gt;
     [[/mesh/]]                                Car_bogey_shadow/Car_bogeyshadow.trainzmesh&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 [[/thumbnails/]]&lt;br /&gt;
 {&lt;br /&gt;
   [[/0/]]&lt;br /&gt;
   {&lt;br /&gt;
     [[/image/]]                               &amp;quot;thumbnail.jpg&amp;quot;&lt;br /&gt;
     [[/width/]]                               240&lt;br /&gt;
     [[/height/]]                              180&lt;br /&gt;
   }&lt;br /&gt;
   1&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;0.jpg&amp;quot;&lt;br /&gt;
     width                               128&lt;br /&gt;
     height                              64&lt;br /&gt;
   }&lt;br /&gt;
   2&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;1.jpg&amp;quot;&lt;br /&gt;
     width                               512&lt;br /&gt;
     height                              512&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 [[/category-class/]]                          &amp;quot;ZB&amp;quot;&lt;br /&gt;
 [[/description/]]                             &amp;quot;Tells the user all about your asset can be as much of a description as you like&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The following tags are &#039;&#039;&#039;optional&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 [[/category-region/]]                         &amp;quot;AU&amp;quot;&lt;br /&gt;
 [[/category-era/]]                            2000s&lt;br /&gt;
 [[/author/]]                                  &amp;quot;who made the asset&amp;quot;&lt;br /&gt;
 [[/organisation/]]                            &amp;quot;your organisation&amp;quot;&lt;br /&gt;
 [[/contact-email/]]                           &amp;quot;your email&amp;quot;&lt;br /&gt;
 [[/contact-website/]]                         &amp;quot;maybe you have a website&amp;quot;&lt;br /&gt;
 [[/license/]]                                 &amp;quot;can be how you want your asset distributed&amp;quot;&lt;/div&gt;</summary>
		<author><name>Thatchapthere</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=HowTo/Build_a_simple_animated_scenery_asset_in_Blender&amp;diff=44010</id>
		<title>HowTo/Build a simple animated scenery asset in Blender</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=HowTo/Build_a_simple_animated_scenery_asset_in_Blender&amp;diff=44010"/>
		<updated>2025-02-05T05:15:18Z</updated>

		<summary type="html">&lt;p&gt;Thatchapthere: Added warning to tutorial that information is outdated and may not work&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Caveat==&lt;br /&gt;
[http://www.blender.org Blender] is not currently supported by N3V as a modeling source for Trainz, however third-party tools exist for this purpose.&lt;br /&gt;
&lt;br /&gt;
However, as of trainz-build 4.5, Trainz uses FBX as a mesh import format (which Blender can export).&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
This tutorial demonstrates how to animate a simple ball scenery asset to make it bounce one metre and rotate through 360 degrees.  The asset has no practical purpose in Trainz other than to demonstrate how animation can be used on scenery objects.&lt;br /&gt;
&lt;br /&gt;
  Updated and rebuilded tutorial files: [[File:Tutorial_Rebuild_Blender_Jumping_BeachBall.zip|Tutorial Rebuild Blender Jumping BeachBall]]&lt;br /&gt;
  Beside some adjustments the main update was to move, add and amend animation tags to a effects sub container.&lt;br /&gt;
  Informations about Blender 3.x fbx export settings as picture one will find in [[Prequel Blender to Trainz|Prequel for this tutorial series: Blender to Trainz (with the full script)]]&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
&lt;br /&gt;
To export an animated scenery asset to Trainz, you need the following:&lt;br /&gt;
&lt;br /&gt;
:*  Trainz (TS09 or later preferred)&lt;br /&gt;
:*  [[Downloads|TrainzMeshImporter.exe]].   This is provided by N3V.&lt;br /&gt;
:*  Blender V2.57 or later.&lt;br /&gt;
:*  [https://bitbucket.org/uschi0815/blender-exporter-for-trainz/downloads/ The Blender Exporter]. &lt;br /&gt;
:*  Windows Vista or Windows 7 (32 or 64 bit).&lt;br /&gt;
:*  Some experience in the use of Blender to create assets for Trainz.&lt;br /&gt;
&lt;br /&gt;
= Animating meshes in Blender =&lt;br /&gt;
&lt;br /&gt;
Blender will allow the direct animation of meshes but that will not work for Trainz purposes.  Meshes to be animated must be linked to lattices or armatures and bones.  You must rotate or position the lattices or pose the armatures and bones to enable animation.  Animation in Blender, and particularly for armatures and bones, can be complex.  However, lattice animation is much simpler and a good place to start.&lt;br /&gt;
&lt;br /&gt;
This tutorial animates a beachball mesh by rotating and locating a lattice that is a parent of the beachball.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Process =&lt;br /&gt;
&lt;br /&gt;
== Create the mesh ==&lt;br /&gt;
&lt;br /&gt;
*In Blender create a new sphere object and name it Beachball.&lt;br /&gt;
*Create a simple material called &amp;quot;beachball.m.onetex&amp;quot;.&lt;br /&gt;
*Allocate a simple texture and UV map the sphere to the texture.  This example uses a red 16*16 pixel TGA file.&lt;br /&gt;
*Position the beachball so it just touches the ground.&lt;br /&gt;
&lt;br /&gt;
[[Image:Blender Simple Animation Tute-The Beachball.jpg|x200px]]&lt;br /&gt;
&lt;br /&gt;
== Create the lattices ==&lt;br /&gt;
&lt;br /&gt;
This asset requires two lattices.  The main lattice, appropriately called b.r.main, is the parent lattice and is not animated.  The second lattice, b.r.beachball will be the parent of the beachball mesh and will be animated.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;NOTE: This tutorial is somewhat deprecated, as lattices will not work with a more up to date workflow. You can follow this article using empties instead of lattices, or follow [[HowTo/Export Blender FBX Animation|a more recent tutorial]].&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create the b.r.main lattice ===&lt;br /&gt;
&lt;br /&gt;
The most important lattice is one called b.r.main.  This should be positioned at grid centre (X=0, Y=0, Z=0).&lt;br /&gt;
&lt;br /&gt;
*Position the cursor at the centre using &#039;&#039;&#039;&#039;&#039;Shift S -&amp;gt;Cursor to center&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
*Add a lattice and name it b.r.main.  The name is important and it should be in lowercase.  You can resize to whatever size suits you.&lt;br /&gt;
&lt;br /&gt;
[[Image:Blender Simple Animation Tute-b.r.main lattice.jpg|x200px]]&lt;br /&gt;
&lt;br /&gt;
=== Create the b.r.beachball lattice ===&lt;br /&gt;
&lt;br /&gt;
*Select the beachball object and position the cursor at the centre of the beachball using &#039;&#039;&#039;&#039;&#039;Shift S &amp;gt;Cursor to selected&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(Note:  In this case the origin of the beachball will be at the centre of the beachball, but if it is not then you can position the origin by selecting the beachball, select Object from the menu bar, then &#039;&#039;&#039;Transform -&amp;gt;Origin to geometry&#039;&#039;&#039;.  Sometimes it is useful to have the origin elsewhere but for this example we need it at the centre of the beachball.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Add a lattice and call it b.r.beachball.  The name can be anything but must be preceded by &amp;quot;b.r.&amp;quot; and should be in lowercase.  The centre of the lattice should be at the centre of the beachball.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Blender Simple Animation Tute-b.r.beachball lattice.jpg|x200px]]&lt;br /&gt;
&lt;br /&gt;
== Set up the parent-child relationships ==&lt;br /&gt;
&lt;br /&gt;
=== Make the beachball a child of b.r.beachball ===&lt;br /&gt;
&lt;br /&gt;
*Select the beachball and, while holding down the ShiftKey, select b.r.beachball.&lt;br /&gt;
*Press Ctrl P and then select the Object option.  This makes the beachball mesh a child of b.r.beachball.  This is important because when we animate b.r.beachball, the beachball mesh will animate as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Blender Simple Animation Tute-Parenting the beachball.jpg|x200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Make the b.r.beachball lattice a child of b.r.main ===&lt;br /&gt;
&lt;br /&gt;
All lattices and their children must be a child of b.r.main for the exporter to work.&lt;br /&gt;
&lt;br /&gt;
*Now select b.r.beachball and while holding down the ShiftKey select b.r.main.&lt;br /&gt;
*Press Ctrl P and then select the Object option.  This makes the b.r.beachball lattice a child of b.r.main.&lt;br /&gt;
&lt;br /&gt;
[[Image:Blender Simple Animation Tute-Parenting the beachball lattice.jpg|x200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Outliner Window in Blender will show the parent-child relations as well as other attibutes.  It should look like the following:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Blender Simple Animation Tute-Outliner window.jpg|x200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Set up the animation period ==&lt;br /&gt;
&lt;br /&gt;
Now we are ready to animate the beachball.  Our animation consists of the ball bouncing up and down and spinning at the same time.&lt;br /&gt;
&lt;br /&gt;
*Arrange the screen layout as you wish but make sure you include a Timeline window.  This is my layout for this session that has the Timeline Window at the bottom.&lt;br /&gt;
&lt;br /&gt;
[[Image:Blender Simple Animation Tute-Screen layout.jpg|x200px]]&lt;br /&gt;
&lt;br /&gt;
*In the Timeline window, change the End frame to 30 and set the current frame to 1.  For Trainz the animation rate is 30 frames per second.&lt;br /&gt;
*Go to the Render window and set the playback rate to 30 fps. &lt;br /&gt;
&lt;br /&gt;
[[Image:Blender Simple Animation Tute-Frame rate.jpg|x200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Animate the lattices ==&lt;br /&gt;
&lt;br /&gt;
Animation uses what are called I frames to make a &amp;quot;snapshot&amp;quot; of the rotation and position of lattices.  This sequence creates those I frames in order from the first to last frame.  The last frame, 30 in our case, is also deemed to be frame 0 (zero).  This makes the animation loop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This is the tricky bit.  Read through the sequence first so you have an idea of what is to be done.  The sequence is important.  If you make a mistake then delete I frames so that the last I frame is at frame 1.  Creating I frames is done by using the letter i key on the keyboard.  This brings up a menu.&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
*Go back to the 3D View.&lt;br /&gt;
*Select the lattice b.r.beachball.&lt;br /&gt;
*Move the cursor to that lattice by pressing &#039;&#039;&#039;&#039;&#039;Shift S -&amp;gt;Cursor to selected&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
*Bring up the Properties menu by pressing or toggling N (the cursor has to be in the 3D View for this to work).&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
In the Transform area of the Properties menu, the Z location of the selected object (b.r.beachball) should be 1.0.  If it slightly out then just change it manually.&lt;br /&gt;
Similarly in the 3D Cursor location in the Properties menu the Z location should also be 1.0.&lt;br /&gt;
&lt;br /&gt;
We are now going to insert the animation keyframes and for this to work the mouse cursor must be in the 3D View window.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*With b.r.beachball selected, press I to bring up the Insert Keyframe Menu.&lt;br /&gt;
&lt;br /&gt;
*Select LocRot (location, rotation).  You may notice the transform location windows changing to a yellow colour and the name of the selected object changing to an orange colour.  This means that an I frame exists for that object at this particular frame.  Frame 1 in this case.&lt;br /&gt;
&lt;br /&gt;
*In the Timeline window, change the frame position from frame 1 to frame 15 by typing the number in the Current Frame position.&lt;br /&gt;
&lt;br /&gt;
*With b.r.beachball still selected, in the &#039;&#039;&#039;&#039;&#039;Properties -&amp;gt; Transform -&amp;gt; Location menu&#039;&#039;&#039;&#039;&#039;, change the Z location from 1.0 to 2.0. You can just click on the 1.0 value and type the change.&lt;br /&gt;
&lt;br /&gt;
*Press the Enter key and you will see the lattice and the beachball mesh move upwards.  Note you can also move the lattice by pressing G and then Z and dragging it upwards in the Z axis.&lt;br /&gt;
&lt;br /&gt;
*With b.r.beachball still selected, in the &#039;&#039;&#039;&#039;&#039;Properties -&amp;gt; Transform -&amp;gt; Rotation menu&#039;&#039;&#039;&#039;&#039;, change the Z rotation value from 0 to 180.  You will not see any visible change but that&#039;s OK.&lt;br /&gt;
&lt;br /&gt;
*Back in the 3D Window press I and select LocRot.  This inserts our second I frame at frame 15.&lt;br /&gt;
&lt;br /&gt;
*In the Timeline Window, change the frame position from frame 15 to frame 30 by typing the number in the Current Frame position or by clicking on the Jump to Last Frame button ( &amp;gt;&amp;gt;| ).&lt;br /&gt;
&lt;br /&gt;
*In the Transform Window change the b.r.beachball Z location back to 1.0 and the Z rotation to 360.&lt;br /&gt;
&lt;br /&gt;
*Back in the 3D Window press I and select LocRot.  This inserts our last I frame at frame 30.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following shows the frames for the beachball lattice.  The frames at 1, 15 and 30 are in yellow.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Blender Simple Anim Tute-Beachball lattice animation frames.jpg|x200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Running the animation ==&lt;br /&gt;
 &lt;br /&gt;
To test the animation click on the right pointing arrow (Play) key in the Timeline Window.  You might want to change to solid or texture view to see it better.  The ball should bounce every second and do a full rotation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exporting ==&lt;br /&gt;
&lt;br /&gt;
*Save the Blender file.&lt;br /&gt;
*To export, select &#039;&#039;&#039;&#039;&#039;File -&amp;gt;Export -&amp;gt; Trainz Mesh and Animation&#039;&#039;&#039;&#039;&#039;.  In the dialog box make sure the Export Animation Data checkbox is checked.  &lt;br /&gt;
&lt;br /&gt;
[[Image:Blender Simple Anim Tute-Exporting.jpg|x200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== CONFIG.TXT ==&lt;br /&gt;
&lt;br /&gt;
The config.txt for the asset should look something like this:&lt;br /&gt;
&lt;br /&gt;
 kuid                                    &amp;lt;kuid:xxx:xxx&amp;gt;&lt;br /&gt;
 username                                &amp;quot;AAA Bouncing Beachball&amp;quot;&lt;br /&gt;
 description                             &amp;quot;Beachball animation scenery asset&amp;quot;&lt;br /&gt;
 trainz-build                            3.5&lt;br /&gt;
 kind                                    &amp;quot;scenery&amp;quot;&lt;br /&gt;
 category-era                            &amp;quot;1800s&amp;quot;&lt;br /&gt;
 category-class                          &amp;quot;XVG&amp;quot;&lt;br /&gt;
 category-region                         &amp;quot;00&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 mesh-table&lt;br /&gt;
 {&lt;br /&gt;
   default&lt;br /&gt;
   {&lt;br /&gt;
     mesh                                &amp;quot;beachball.im&amp;quot;&lt;br /&gt;
     light                               1&lt;br /&gt;
     auto-create                         1&lt;br /&gt;
     anim                                &amp;quot;beachball.kin&amp;quot;&lt;br /&gt;
     animation-loop-speed                1.00&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 thumbnails&lt;br /&gt;
 {&lt;br /&gt;
   0&lt;br /&gt;
   {&lt;br /&gt;
     image                               &amp;quot;$screenshot$.jpg&amp;quot;&lt;br /&gt;
     width                               240&lt;br /&gt;
     height                              180&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Note the use of the tags &amp;quot;anim&amp;quot; and &amp;quot;animation-loop-speed&amp;quot;.  A value of 1 for animation-loop-speed gives normal animation.  You can slow or speed up the animation with different values.&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
This has been a very simple introduction to animation for Trainz with Blender.  The key points to remember are:&lt;br /&gt;
&lt;br /&gt;
:*Meshes cannot be animated for Trainz.  Create a lattice for each mesh, make the mesh a child of the lattice and animate the lattice.&lt;br /&gt;
:*Lattices must be identified with the &amp;quot;b.r.&amp;quot; naming convention. &lt;br /&gt;
:*All lattices must be a child of b.r.main.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= The beachball in Trainz Surveyor =&lt;br /&gt;
&lt;br /&gt;
Here is the beachball in Trainz Surveyor bouncing next to another test asset of a simple lighthouse with a flashing cursor.&lt;br /&gt;
&lt;br /&gt;
[[Image:Blender Simple Anim Tute-In Trainz.jpg|x200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
[[HowTo/Export_from_Blender_using_FBX]]&lt;br /&gt;
[[FBX_file_format]]&lt;br /&gt;
&lt;br /&gt;
==Return to Index==&lt;br /&gt;
 &lt;br /&gt;
[[HowToGuides|&amp;lt;&amp;lt; How To Guides]]&lt;br /&gt;
&lt;br /&gt;
[[Category:How-to guides]]&lt;/div&gt;</summary>
		<author><name>Thatchapthere</name></author>
	</entry>
</feed>