October 14, 2010

openBVE v1.2.8 and increased rendering speed, openBVE v1.2.9 development branch with cross-platform .NET plugin support, Cross-City South v2.0 update, and openBVE performance with budget versus high-end CPUs, and discrete versus on-board graphics

Posted by Anthony_B on October 14, 2010 at 00:20
Screenshot
Updated: 16th October 2010 @ 22:50 UTC

openBVE v1.2.8 released, with significant rendering speed improvements

openBVE Logo openBVE v1.2.8 was released recently, which includes a reorganised renderer which can provide significantly higher framerates than the old renderer found in v1.2.7.4. This is achieved by rendering opaque faces (i.e. faces without alpha), using OpenGL display lists. There are two ways to enjoy the performance increase; if you currently have low framerates, then the boost could make routes more enjoyable, however if you already have high framerates, then you can increase the viewing distance significantly so that you can see much further away from the train, whilst maintaining similar framerates to those you are already used to seeing. You can visit the Official openBVE Homepage for the download and to read the changelog, as well as read this thread on the openBVE forum for more information.

Here are some framerate and image quality comparisons which I conducted on my main development PC (Core 2 Quad Q9650 / GeForce GTX 260), showing some notable improvements:

On the left is openBVE v1.2.7.4, and on the right, the new v1.2.8:

Screenshot Screenshot
Screenshot Screenshot
Screenshot Screenshot
Screenshot Screenshot

openBVE’s default viewing distance is 600 metres, however, here are some screenshots showing what the upcoming Watford Junction to Rugby route looks like with an increased viewing distance of 2000m. This particularly benefits the straight sections of this route, allowing you to see more than one upcoming signal at the same time. Thanks to the new renderer, it’ s possible to significantly increase the viewing distance, while still having very playable framerates on a good computer with reasonably detailed exterior car objects:

Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot

Most people are reporting better performance with the new renderer, however if you notice any previously unseen stuttering with the new renderer and detailed routes, I’d really appreciate it if you could contact me with some information about your computer’s specifications and the route being used, as it might be useful for me to know, when I draw up recommended system requirements and openBVE settings, particularly for the upcoming Watford Junction to Rugby project. Thanks.

openBVE v1.2.9 development branch released, enabling support for cross-platform .NET train plugins

openBVE Logo The latest version 1.2.9 development branch of openBVE, includes support for .NET assemblies (plugins), which enables cross-platform plugin compatibility, just as with openBVE itself. With previous versions of openBVE, and of course BVE Trainsim, only Win32 C++ plugins were supported, which limited their use to the Microsoft Windows platform, leaving Linux and Mac users to rely on openBVE’s built-in safety systems only, with a great deal of functionality found in plugin enabled trains unavailable. With .NET assemblies, these can be written in a variety of languages which target the .NET framework, such as C# or Visual Basic .NET, and users of non-Windows operating systems can also enjoy enhanced train functionality once new .NET plugins start to appear.

Anyone with at least some programming experience can visit the .NET assembly train plugin section on the official openBVE website, to download template projects to help you get started. If you’ve already developed a Win32 C++ plugin previously, you might prefer to look at the “C# project files (for updating from Win32 plugins)” download specifically. Anyone interested in making general comments can do so in this thread on the openBVE forum, while anyone wanting to help improve the design of the plugin API by making suggestions, can visit this thread instead.

I’ve started writing a replacement .NET plugin for the class 323, although I’ll design it such that it could be used with other trains too. I’ll release the new .NET assembly and publish the source code when there’s something worth showing, unless someone else writes a plugin which is sufficiently good enough, before me.

Screenshot
Edit (16th October): I forgot to mention that some .NET assemblies are already available; the plugins for the 1000, 2000 and 9000 series trains used by the Chashinai Railway have been ported to C# by odakyufan, and you can download them here (at the bottom of the page). These might be helpful if you’d like to see some example source code and structure, although bear in mind that openBVE .NET plugin support is still experimental at this stage, so you may need to check for both openBVE and plugin updates in future.

Of course, if you’re a more advanced non-Windows user and just want to enjoy driving trains, then you too can now experience some of the best in-cab system functionality available for openBVE. Here’s the openBVE v1.2.9.2 development release, with Chashinai Railway’s Misaki Line, and the 9000 series train with fully functional .NET plugin enabled safety systems, running in Ubuntu 10.04 32-bit Linux (itself running within a virtual machine under Windows 7 64-bit, in this case):

Screenshot
Chashinai Railway Misaki Line, and 9000 series train
with .NET plugin enabled safety systems, used
with openBVE v1.2.9.2 in Linux

Birmingham Cross-City South v2.0 update

Railsimroutes LogoIf you’ve been keeping an eye on the news infobox at the top left of the blog (or my Projects page), you’ll have noticed that I’ve been continuing work on the pointwork along the Cross-City South route, and I’ve also been working on updating the pointwork on the approach to Birmingham New Street as well. All pointwork between Alvechurch and Five Ways is now finished, and ready for animation to be applied prior to release. The pointwork on the approach to Birmingham New Street is a rather difficult task though. At this location, there are single and double slips, switched diamond crossings and three-way points, all crammed into a rather small space, and all located on quite a sharp curve. There are also a variety of point machines, including electric, hydraulic clamp-lock, and Westinghouse electro-pneumatic types, as well as cast manganese steel and conventional frogs. I like to model these kinds of details, so I’ve spent quite some time working on this area – I’m not finished yet, but will be shortly. Cross-City South was originally designed with a 25 metre block length in mind, however the pointwork doesn’t fit neatly, so much of the pointwork is contained in two large set-piece objects instead. I always felt that this task was going to be the hardest part of the Cross-City South v2.0 upgrade, as it’s rather tedious and difficult (and indeed I was right), however for me, the route wouldn’t be complete without it, as I want Cross-City South v2.0 to be of the same standard as Watford Junction to Rugby, so I’ll endure the pain.

Here’s a screenshot of one of the Birmingham New Street pointwork objects:

Screenshot

At first glance it doesn’t look like much, but on closer inspection, it’s actually rather detailed and intricate. This object features 4076 vertices, and loads 9 textures. Each rail is carefully texture mapped, to ensure that the Pandrol rail fasteners are as closely lined up with the underlying sleepers as possible, and that the inside of the railhead as depicted in the texture, matches the mapping on the object. Depending upon the location of a rail within the point assembly, different kinds of rail fasteners are depicted. If you examine the existing equivalent object in Cross-City South v1.31, you’ll notice that that old object is afflicted with z-fighting issues; I’ve taken special care to ensure that this doesn’t happen with the new version. In the case of the cast manganese steel frogs, these feature a combination of 3D geometry and use of a photographic texture of the prototype, to create the desired 3D effect:

Screenshot Screenshot Screenshot

Each fishplate is also modelled in 3D, and these are also responsible for much of the vertex count, incidentally – this also means that they can be easily removed to create a lower detail object, however. Each point blade has a texture depicting baseplates beneath it, and where the tie bar assemblies will go, oil-stained ballast is featured. The object has also been designed in such a way, that animating any of the point blades is very easy to do in future. I’ll post a screenshot of the object within the route, once I’ve finished the second of these pointwork objects, improved the appearance of New Street station a bit, and finished some other things.

Prior to starting on the New Street pointwork updates, I also spent some time working on the Kings Norton area. In the existing Cross-City South v1.31, I didn’t lay any track in the sidings to the west of the station, and instead, I included a simple texture depicting a pair of tracks on a flat surface to the right of the loop siding. Cross-City South v1.31 was designed for BVE Trainsim 2 and 4 with their cab-only view and lower resolution, of course, so there wasn’t much point in modelling the extra tracks. With openBVE, it’s well worth adding them, however:

Screenshot

Here are some screenshots of the updated pointwork and track geometry at Kings Norton (I’ll replace these points with the more recently installed concrete sleeper versions soon):

Screenshot Screenshot Screenshot

You might have noticed that scenery has been improved a little in those previous three screenshots; I’m currrently adding the embankment/tree alpha shadow technique I developed for Watford Junction to Rugby, throughout the Cross-City South route as well. Here are a few more screenshots showing the latest scenery enhancements I’ve been working on, as well as little things like extended length sleepers beneath electric point machines, and disused trackbeds:

Screenshot Screenshot Screenshot Screenshot


Budget versus high-end CPUs, discrete graphics cards versus on-board graphics, and openBVE/Watford Junction to Rugby performance

Information IconSometimes I see people talking about poor framerates or image quality in 3D games which they use, such as openBVE, or others. Upon finding out about the system specifications in use, the cause of the low performance, in the case of Windows 7 and Vista, is often due to inferior graphics drivers being used (i.e. those bundled with Windows by default or obtained via Windows Update, rather than from the graphics card manufacturer). However, the other frequent cause of unsatisfactory performance, is a slow graphics card, and sometimes, a slow CPU.

Personally, I’ve used less-than-stellar graphics cards in my desktop PCs for use with openBVE, but being a geek, I’ve never used on-board graphics solutions (integrated on the motherboard) in a desktop PC before, as I’ve always dismissed them as not being up to much. It occurred to me that perhaps I was being too hasty in writing integrated graphics off, as I’ve never actually tried to play games on such a solution in a desktop PC myself. The same goes for budget CPUs, such as those in Intel’s Celeron or AMD’s Sempron lines – I’ve never been interested in them as I’ve always viewed them as merely cut-down versions of “real” fully-featured CPUs, such as those in Intel’s Pentium and Core product lines, or AMD’s Athlon and Phenom lines.

So, I thought I’d test openBVE on a contemporary budget PC to find out what it was capable of, with the cheapest of Intel’s newer CPUs that I could find – a socket LGA 775 based Celeron E3300 with the Wolfdale-3M core (the same core used in Core 2 E7xxx and Pentium Dual Core E5/6xxx processors), which runs at 2.5 GHz with 1MB of Level 2 cache. This CPU is combined with the cheapest of all graphics solutions – on-board graphics integrated onto the motherboard – in the form of Intel’s “Graphics Media Accelerator” X4500, which is a part of the G41 Express “Eaglelake” chipset. I was also curious to find something out – if a choice has to be made between a better CPU or a better graphics card, which is the best to go for where openBVE is concerned?

I ran the hardware in a few configurations, and tested openBVE’s performance with my upcoming Watford Junction to Rugby route. Here are the results, and in all cases, the best image quality that each graphics solution is capable of was selected, and in all except the last test (number 4), the following constants apply:

CPU: Intel Celeron E3300 @ 2.5 GHz
RAM: 2 GB PC-6400 DDR2 SDRAM (dual-channel configuration)
Operating System: Windows XP Home Edition (32-bit)
openBVE version: 1.2.8 (Sharp transparency, 1920×1200 fullscreen, 600m viewing distance)

Two locations were used for measuring framerates: Watford Junction, and Bourne End Junction.

Test setup 1:

Graphics: Intel GMA X4500 (G41 Express Chipset, 128MB shared video memory) [Antialisasing: n/a, Anisotropic Filtering: 2x]

Framerates (fps)
Watford Junction 12
Bourne End Junction 9

Test setup 2:

Graphics: AMD/ATI Radeon HD 2600 Pro (256MB DDR2) [Antialisasing: 8x, Anisotropic Filtering: 16x]

Framerates (fps)
Watford Junction 34
Bourne End Junction 24

Test setup 3:

Graphics: NVIDIA GeForce GTX 260 (896 MB GDDR3) [Antialisasing: 16xQ, Anisotropic Filtering: 16x]

Framerates (fps)
Watford Junction 118
Bourne End Junction 101

Test setup 4:

Lastly for comparison purposes, here’s what we get when the GeForce GTX 260 is paired with a faster and more powerful quad-core CPU:

CPU: Intel Core 2 Quad Q9650 @ 3 GHz
Graphics: NVIDIA GeForce GTX 260 (896 MB GDDR3) [Antialisasing: 16xQ, Anisotropic Filtering: 16x]
RAM: 4 GB PC-6400 DDR2 SDRAM (dual-channel configuration)

Framerates (fps)
Watford Junction 179
Bourne End Junction 160

From these results, we can see that the budget Celeron E3300 is actually a rather nice CPU (which isn’t too surprising I suppose, given the architecture in use), and more than good enough for highly detailed routes such as Watford Junction to Rugby when paired with a decent graphics card. By comparing the two GeForce GTX 260 results, we can see that the speed of the CPU matters, however performance is also very clearly determined by the graphics hardware, and I would say that it’s the more important factor when it comes to openBVE performance. While I didn’t test the Core 2 Quad CPU with Intel’s GMA X4500 integrated graphics, I think it’s highly unlikely that framerates would have been much higher with this combination (overclocking the Celeron E3300 from 2.5GHz to 2.92GHz, made a difference of only around 1 fps when the integrated GMA X4500 was used). Intel’s on-board graphics is simply too slow, and the image quality is a bit poorer too, as there is no antialiasing, and the anistropic filtering level is rather limited (compare this screenshot using Intel’s GMA X4500, and a screenshot using the GeForce GTX 260). Intel’s driver control panel claims to support 16x anisotropic filtering, although openBVE/OpenGL reports that 2x is the maximum supported. The framerates don’t tell the entire story either though, as the much faster GeForce GTX 260 graphics card also gives more fluid and stutter-free performance than the budget Radeon HD 2600 Pro does. This is especially true when large textures, animated objects and higher levels of antialiasing and anisotropic filtering are used, as well.

So, if anyone is thinking of upgrading their computer soon and would like to run something like Watford Junction to Rugby, and money is tight, then my advice would be to bias your budget in favour of getting the best graphics card possible, while trying to keep some balance between the CPU and GPU in terms of what each is capable of. For the energy conscious amongst you, also bear in mind that newer generation graphics hardware tends to be more power efficient for a given level of performance. While quad core CPUs are nice to have, dual core CPUs are just fine, too. Indeed, running openBVE on only two of the four cores of the C2Q Q9650 CPU, by setting the affinity for the OpenBve.exe process accordingly, makes only a small difference to performance. Running openBVE on only a single core, even at 3 GHz, does result in performance being halved though, therefore I can’t recommend a single core CPU any more, when dual core CPUs are so common now. Of course, if you can live without the rich graphics or geometrical complexity of the latest openBVE routes, and only want to run less demanding examples, or those previously designed for BVE Trainsim, then even the cheapest contemporary hardware including on-board graphics, may suit your needs just fine where openBVE is concerned, if you don’t mind losing a little image quality and have realistic expectations.
For example: [ Uchibo – Intel GMA X4500 | X-City South v1.31 – Intel GMA X4500 | Saijou Line – Intel GMA X4500 ]

September 5, 2010

Transition curves and superelevated track created using the Object Bender tool, and Cross-City South v2.0 progress update

Posted by Anthony_B on September 5, 2010 at 07:30

Railsimroutes LogoI’ve been doing some more work on Cross-City South v2.0 during the past couple of weeks or so, and I’ve been making good use of odakyufan’s new Object Bender tool, where incidentally, the code was so well written and the functionality comprehensive enough, that Object Bender has been made into an official openBVE tool. Please see the new Object Bender section on the official openBVE homepage for more information: Developing for openBVE: Object Bender.

The output from the tool is such, that I’ve decided to replace all the curved track objects used in the Cross-City South route with new objects generated by Object Bender (from a set of “template” objects which form the intial segment in each type of track – please see here for an example of what I mean), and later I’ll do the same with Watford Junction to Rugby, too. I had already manually created a full range of suitable UK style track objects incorporating cant, as well as objects to be used in transition curves, however these objects had one rail lowered and the other raised in height, to suit the cant model used in older versions of openBVE (therefore enabling the wheels to be visibly touching the rails at all times in earlier versions). openBVE v1.2.7.3 features an improved superelevation model however, where one rail is raised above the other (which remains at the same level), so the existing objects were no longer so suitable.

I had started to make some progress in manually modifying my existing objects, however Object Bender has now saved me many days of work, possibly weeks, thereby preserving my sanity and enabling me to easily generate a much more comprehensive range of superelevated track and transition curve objects to create some very nice results, even better than what I’ve shown in Watford Junction to Rugby for a long time now. The slight downside is that the generated objects have a larger filesize compared to the objects I’d entirely hand-written, however Object Bender’s command line arguments also let me automate and recreate many hundreds of track objects, from a handful of source objects, with great ease via shell scripts. This benefit is simply too good to pass up – if I decide that I want to improve or alter my depiction of track in future, all I have to do is edit the handful of template objects and I can recreate the entire library of track objects with just a double-click. An example batch file for Windows users, based on the one which I’ve written for myself, can be found below, along with a sample shell script for Linux users too.

Here’s a selection of screenshots to demonstrate what nice results can be gained quickly, thanks to Object Bender and a little object building skill:

Screenshot Screenshot Screenshot Screenshot Screenshot
Birmingham Cross-City South v2.0 with superelevated track and transition curves, created via
odakyufan’s Object Bender tool. Also note the embankment (dike) with curved cable trough
in the last screenshot, with the vegetation handled via Object Bender’s /a command-line
argument (please see the Object Bender documention for a tutorial).

One problem I have encountered during the latest Cross-City South superlevated track upgrade so far, is how to accomodate pointwork (switches) on superelevated curves. There are examples of this at Longbridge, between Northfield and Kings Norton, and just after Kings Norton, too. On Watford Junction to Rugby, I took the easy option and handled such situations by transitioning back to uncanted track on either side of points (only with the visual representation of the track – the cant applied via the .Curve command remained constant throughout the points). With Cross-City South v2.0, I’ve decided to gradually alter the height of the other tracks leading towards and away from crossovers connecting superelevated tracks instead, while also rotating the point objects around the Z-axis. This way, the crossover itself is superelevated to the same degree as the tracks being crossed between, which looks better visually, and I presume it’s also more prototypically accurate. Here’s an example between Northfield and Kings Norton, with some new custom pointwork objects I’ve been working on for this location (amongst others):

Screenshot Screenshot Screenshot
Birmingham Cross-City South v2.0 with superelevated track and custom-built crossovers.
Note the clamp-lock point machines, too.
Note: For those of you familiar with the real Cross-City South, please be aware that these screenshots depict the line prior to the recent track renewals on the real-life route. I’ll work on the renewed track (plus such changes as the upgraded 70mph / 112km/h sections beteween Redditch and Northfield), once I’ve sorted out a few more remaining tasks along the route, such as realigning overhead wire objects due to altered curve radii, improving the stations, and finishing the remaining scenery objects which need to be updated with new textures, 3D trees and vegetation.

Object Bender has most definitely made route building easier and more enjoyable for me, however one problem which needed to be solved, was that when a track object is superelevated, the terminating height of the ballast shoulders on either side of the sleepers is also altered. In a route, and depending upon the design of the track objects, this can lead to gaps appearing between tracks running side-by-side, and between the ballast portion of the track objects and dikes (i.e. the embankment beneath the track):

Screenshot
Depending on the design of track objects, gaps can appear
between the ballast shoulder and dike, or a parallel track,
when superelevation is applied via Object Bender.

I’ve solved this problem, by expanding the ballast shoulder in the track object to include two faces at increasing angles, such that at the maximum level of visible cant I’ll ever apply in my routes (160mm in my case), no gaps appear and the cable trough isn’t obscured, while I can continue to use only one template object for creating the full range of curved track pieces, at differing degrees of superelevation, via Object Bender. The ballast portions of the dike objects are also extended. This solution does lead to more faces being rendered, but hopefully it’s not too much of an issue, performance wise. Here’s a screenshot:

Screenshot
Extended ballast shoulders in both the track and dike objects,
to remove visible gaps when cant is applied via Object Bender.

Screenshot Screenshot
Screenshot Screenshot
On the left, are the original objects, and on the right, the new versions. Note the custom vertex normals
applied to the ballast shoulders in the last screenshot, to help remove the angled appearance
which might otherwise be visible with certain lighting parameters.

Object Bender supports some markup which can be applied to template objects before they’re processed, for example, to determine the desired texture coordinate shifting in generated segments (please see the Object Bender documention on the openBVE homepage for more information – I think the tutorial is clear enough that I don’t need to explain it further). I was originally going to suggest expanding the supported markup a little, so that Object Bender could be instructed to leave the X and/or Y coordinates of any vertex as it is in the original template object, which would for example, solve the ballast shoulder issue above in an easier way for the object creator. However, I quite like the appearance of the solution I came up with, so I don’t think such a change to Object Bender is too important, but might be nice to have, nevertheless.

Lastly, for more advanced users, or beginners feeling more adventurous, here’s a sample batch file for Windows users, and a bash script for Linux users, which you can adapt and expand if you want to automatically create a range of curved objects using Object Bender’s command line interface, rather than the GUI. There is a simple example of a suitable batch file included in the Object Bender documention, however rather more can be done with batch files/shell scripts. These following example scripts use variables to reduce the amount of duplicated text that you might otherwise need to type, and they also create a logfile which you can read, which is handy if you’re generating a large number of objects, to more easily check for any errors which might have occured during a lengthy object bending batch process.

For the Windows batch file, you need to give it a .bat extension. The text highlighted in red (including the less/greater than characters), should be replaced by any paths or filenames which are appropriate for your purposes. Where <Your_File_To_Append> is concerned, this object file could contain fishplates for example, or overhead wires, which are appended to the object generated in the previous line (please see here for more information). You can see fishplates added to my curved wooden sleeper based track objects in the above Cross-City South v2.0 screenshots – this is how they were appended to the files generated via Object Bender.

Sample batch file using Object Bender to automate curved object creation (Windows users):

@echo off

rem Set variables (paths and extension for all files)
set objectbender_path=<Path_To_Folder_Containing_ObjectBender>\
set exe=ObjectBender.exe
set obj_source=<Path_To_Your_Source_Object_Folder>\
set obj_final=<Path_To_Your_Route_Object_Folder>\

rem Clear the screen and ask user for confirmation
cls
echo Proceed with object creation? This will overwrite any existing files.
echo Press Ctrl+C to cancel, or any other key to proceed . . .
pause > nul

echo.
echo.
echo Processing files and creating log. Please wait . . .

rem Create a new log file with time stamp
echo ___________________________________ > %objectbender_path%objectbender_log.txt
echo New log [%date% at %time%] >> %objectbender_path%objectbender_log.txt
echo. >> %objectbender_path%objectbender_log.txt

rem Use Object Bender to create finished objects from templates

rem 500m right curve
%objectbender_path%%exe% %obj_source%<Your_Source_File> %obj_final%<Your_500m_Right_Track_Object> /n=5 /s=5 /b=25 /r=500 /g=1435 /u=80 /v=80 >> %objectbender_path%objectbender_log.txt
%objectbender_path%%exe% %obj_source%<Your_File_To_Append> %obj_final%<Your_500m_Right_Track_Object> /a /n=1 /s=25 /b=25 /r=500 /g=1435 /u=80 /v=80 >> %objectbender_path%objectbender_log.txt

rem 600m right curve
%objectbender_path%%exe% %obj_source%<Your_Source_File> %obj_final%<Your_600m_Right_Track_Object> /n=5 /s=5 /b=25 /r=600 /g=1435 /u=80 /v=80 >> %objectbender_path%objectbender_log.txt
%objectbender_path%%exe% %obj_source%<Your_File_To_Append> %obj_final%<Your_600m_Right_Track_Object> /a /n=1 /s=25 /b=25 /r=600 /g=1435 /u=80 /v=80 >> %objectbender_path%objectbender_log.txt

rem 700m right curve, etc. . .

Linux users can adapt the following shell script to make use of Object Bender for automating the creation of multiple files. Your script should be given a .sh file extension, and be made executable (for example: chmod +x myscript.sh). The script can be executed from the Terminal prompt by typing, for example: ./myscript.sh). Don’t forget that Object Bender requires Mono to be installed, too.

Screenshot
Important note: Object Bender determines whether a command line argument is a pathname, or another command line argument, based upon whether or not the argument string begins with a ‘/’ character. In Unix based operating systems, this character is the directory separator character, so if you supply a path which begins with ‘/’ (such as /home/username/etc), it will be interpreted as a command line argument which is other than a pathname, and the tool won’t work as expected. You can get around this by supplying relative pathnames (i.e. ../yourfolder/etc), or by using the following modified version of the tool, in which I’ve altered the program to intepret the ‘-‘ character as a non-path command line argument instead (the recompiled executable is temporarily available here, with source code modifications here as well (also requires the official Object Bender source code from the openBVE homepage). The following script assumes the modified executable is being used:
Sample shell script using Object Bender to automate curved object creation (Linux users):

#!/bin/bash

# Set variables (paths and extension for all files)
objectbender_path=<Path_To_Folder_Containing_ObjectBender>/
exe=ObjectBender.exe
obj_source=<Path_To_Your_Source_Object_Folder>
obj_final=<Path_To_Your_Route_Object_Folder>

# Clear the screen and ask user for confirmation
clear
echo "Proceed with object creation? This will overwrite any existing files."
read -s -n 1 -p "Press Ctrl+C to cancel, or any other key to continue . . ."
echo
echo
echo "Processing files and creating log. Please wait . . ."

# Create a new log file with time stamp
echo _____________________________________ > $objectbender_path/objectbender_log
echo New log [$(date)] >> $objectbender_path/objectbender_log
echo >> $objectbender_path/objectbender_log

# Use Object Bender to create finished objects from templates

# 500m right curve
mono $objectbender_path/$exe $obj_source/<Your_Source_File> $obj_final/<Your_500m_Right_Track_Object> -n=5 -s=5 -b=25 -r=500 -g=1435 -u=80 -v=80 >> $objectbender_path/objectbender_log
mono $objectbender_path/$exe $obj_source/<Your_File_To_Append> $obj_final/<Your_500m_Right_Track_Object> -a -n=1 -s=25 -b=25 -r=500 -g=1435 -u=80 -v=80 >> $objectbender_path/objectbender_log

# 600m right curve
mono $objectbender_path/$exe $obj_source/<Your_Source_File> $obj_final/<Your_600m_Right_Track_Object> -n=5 -s=5 -b=25 -r=600 -g=1435 -u=80 -v=80 >> $objectbender_path/objectbender_log
mono $objectbender_path/$exe $obj_source/<Your_File_To_Append> $obj_final/<Your_600m_Right_Track_Object> -a -n=1 -s=25 -b=25 -r=600 -g=1435 -u=80 -v=80 >> $objectbender_path/objectbender_log

# 700m right curve, etc. . .

exit 0

If you need any help with using Object Bender or writing scripts to automate curved object creation, please feel free to ask. 🙂

July 11, 2010

openBVE v1.2.7.0 released, new Railsimroutes.net site design, Cross-City South v1.31.07 and miscellaneous project updates, Watford Junction to Rugby screenshot featured in the UK’s PC Gamer Magazine, Genova Brignole – Recco route (as far as Genova Nervi) released

Posted by Anthony_B on July 11, 2010 at 06:00

openBVE v1.2.7.0 released

openBVE LogoToday sees the release of openBVE v1.2.7.0, and some interesting changes have taken place. To begin with, the handling of key and joystick buttons has been revised, and key repeat is now possible. This means that you can hold a key down, and after a short delay, the keypress will be repeated continuously until the key is released again. I’m glad that openBVE now supports this functionality, and this is great for quickly moving a power handle to the limit of it’s travel without having to keep tapping the key, or for sounding the horn in a long and loud fashion, for example. The fly-by camera has also been improved, and now, the leading vehicle (of the nearest train) is tracked by the camera, which is great for loco-hauled trains in particular. 🙂

Superelevation is now simulated differently as well; in previous versions, when cant was applied, the train would simply rotate around it’s z-axis, but now, the outer wheel is raised instead. Cant is also interpolated better now, leading to smoother transitions between differing levels of cant. I’m currently rebuilding the canted track objects used by my routes to make better use of these openBVE improvements, such that the wheels will remain on the rails when passing along superelevated track, and the cant transitions at either end of such sections:


Superelevation and wheel-rail interaction in openBVE v1.2.7.0 and Cross-City South v1.4 - click to enlarge
Superelevation and wheel-rail interaction in openBVE v1.2.7.0 and Cross-City South v1.4 - click to enlarge
Screenshot showing superelevation in openBVE v1.2.7.0 and Cross-City South v2.0.
Note the wheels touching the rails throughout the transition curve (scenery is not finished yet).

Cant behaviour can also be adjusted now, via the new 'Options.CantBehavior' command. Previously, cant was always applied towards the curve centre, i.e. banking inwards, and this couldn’t be overidden. Also, it wasn’t possible to have cant on straight track. Now though, cant be in either direction, regardless of the direction of the curve, and cant can be applied on straight track too. How might this be useful for simulating a real railway? Well, on the 11th July last year (exactly a year ago as it happens), I was unexpectedly invited for a visit to the preserved Gloucestershire and Warwickshire Railway, and this line has a curve known as Chicken curve, and one peculiar feature was that the cant at this location leaned outward from the curve rather than inwards. So, openBVE can simulate this too, now. Class 20 “chopper” (20154) was our traction on the day, and here’s a photo for fans of the class 20, which I took before we departed from Toddington:


In the cab of a class 20 loco at Toddington, on the Gloucestershire and Warwickshire Railway - click to enlarge

In the cab of a class 20 loco at Toddington, on the
preserved Gloucestershire and Warwickshire Railway.

The simulation of track inaccuracy has been overhauled, too. Previously, the familiar cab and vehicle sway was achieved with horizontal and vertical movement, but now, cant inaccuracy and bounce is also modelled, and cars rock from side to side as well as moving vertically and horizontally. While we were testing the new inaccuracy model, I found that this was an interesting way to represent the effect of travelling over more poorly maintained jointed rails. I’ve made some adjustments to the track accuracy in the newly udpated Cross-City South v1.31.07 (see below for download), and travelling over pointwork or on the jointed rail sections of the Cross-City South, should be a little more interesting now, especially when the class 323’s 3D cab is used. 🙂

Essentially, I think .Accuracy values of 0 to 2.0 are suitable for continuous welded rail, and values of 2.1 to 4 are suitable for jointed rails. I’m aware that not everyone may be sure about the new inaccuracy model, however I think it works well when used sensibly, and I would also point out that the development release has been publicly available for testing for at least three weeks, so if you don’t like it, you’ve missed your chance to give feedback prior to the latest stable release. Nevertheless, if you have any comments, please let us know. Personally I prefer the new algorithm and enjoy the representation it can give when accompanied by the sounds of jointed rails, but some may prefer the old; please give it a try with the updated Cross-City South v1.31.07 and class 323 3D cab though (see below), as this update shows what the new inaccuracy model can do. Also bear in mind that you may only prefer the old algorithm because you’re used to it, not because it was more realistic; the old algorithm had it’s limitations.

Also, BVE4 style timetable textures can now be displayed when 3D cabs are used, and not just with legacy 2D panels, although this is considered an experimental feature. The timetable texture can be shown as part of the in-game user interface overlay, or as part of a 3D cab (animated object); if the latter is not specifically catered for within the 3D cab, then the former is the default behaviour. Adding BVE4 style timetables to a 3D cab is easy to do; I would recommend simply creating an object with a four-vertex mesh and default texture applied (which is shown if there is no timetable image to display), and add this object to your panel.animated file. Then, make use of the new 'TextureOverride =' command:

Object for timetable texture (timetable.csv):

CreateMeshBuilder
AddVertex,-0.35,2.9,11.52
AddVertex,-0.06,2.9,11.52
AddVertex,-0.06,2.6,11.52
AddVertex,-0.35,2.6,11.52
AddFace,0,1,2,3

LoadTexture,some_suitable_default_texture.png
SetTextureCoordinates,0, 0, 0
SetTextureCoordinates,1, 1, 0
SetTextureCoordinates,2, 1, 1
SetTextureCoordinates,3, 0, 1

Addition to panel.animated file:

[Object]
States = 3d_cab\timetable.csv
TextureOverride = timetable

I’ve added the aforementioned timetable functionality to the class 323’s 3D cab, but it’s commented out by default, as displaying the timetable images via openBVE’s UI overlay makes more sense where the Cross-City South and class 323 are concerned, plus the feature is still experimental.

You can download the update here, and if you want to experiment with the 'TextureOverride =' command, please see the included ‘Readme_3DCab.txt’ file:

3D cab for unrefurbished class 323 – July 2010 [1.7 MiB]

For more detailed information about the new cant behaviour, and timetable support in .animated objects, please read the official openBVE documentation. For details of all the changes introduced with the v1.2.7.0 release of openBVE, including those not mentioned here, please see the changelog.

Cross-City South v1.31.07 update

Railsimroutes LogoAs openBVE v1.2.7.0 has been released, I’ve updated Cross-City South v1.31 to remove an obsolete timetable texture, changed some of the timetable images to make them suitable for both openBVE and BVE4, and made adjustments to track inaccuracy to take better advantage of openBVE v1.2.7.0’s new track inaccuracy model. I’ve renamed the route folders to more clearly indicate which sets of routes should be used with openBVE, BVE 4 or BVE 2, as well. I’ve also decided to finally split the openBVE routes away from the BVE 4 routes, as testing every openBVE improvement across numerous route files for 100% backwards compatibility with BVE 4 is somewhat inconvenient, and this also lets me get rid of all those pesky "detail levels" in the openBVE route folder, as these simply aren’t needed with openBVE. The new naming convention is as follows, and should be much clearer (the BVE 2 foldername is as it is, so it’ll fit within the size constraints of BVE 2’s small file selection list):

▪ <YourPath>\Railway\Route\Bham_XCitySouth_BVE2\

▪ <YourPath>\Railway\Route\Birmingham_Cross-City_South_BVE4\

▪ <YourPath>\Railway\Route\Birmingham_Cross-City_South_openBVE\

Cross-City South v1.31.05 users can download a smaller update here, which updates v1.31.05 to v1.31.07:

v1.31.07 update for existing Cross-City South v1.31.05 users [1.03 MiB]

If you have an earlier version of Cross-City South installed, or you’re not sure which version you already have, please download the full version instead.

Screenshot
Important note: Please delete the existing Birmingham Cross-City South folders in your Railway\Route\ folder, before installing Cross-City South v1.31.07, whether it’s the update being installed, or the full version! If you don’t, you’ll end up with four Cross-City South route folders rather than three, and you might not be sure which is the right folder to use (incidentally, this is the reason why I haven’t changed the folder names until now).

Genova Brignole – Recco route (as far as Genova Nervi thus far) for openBVE released

Information IconI wanted to mention that a fantastic new route has been released for openBVE, the Italian Genova Brignole – Recco route (as far as Genova Nervi thus far, and 8.1 Km in length). This is one of the most graphically excellent routes I’ve seen to date, with superb textures, and I’m impressed; the route is beautiful. There are some animated objects to enjoy, and staggered catenary as well, which is great to see; pedantic people like me will note that some registration arms pull in the wrong direction, though. 😉

You’ll likely need to read the included PDF instructions before operating the newly released ALn501 – Minuetto v2 train, but it’s well worth the effort. Incidentally, the train comes with some very detailed exterior car objects. These look very nice, although they would benefit from the addition of custom normals to smoothly shade some of the surfaces. Please note that these exterior car objects may have quite an impact on your framerate; even on my Core 2 Quad Q9650 / GeForce GTX 260 system, I get around 30fps in the external view, which is down from anywhere between 80 – 300 fps in the cab view. If you have a slow PC, you may want to stay in the cab. I’m looking forward to seeing this route develop further. 🙂

Screenshot Screenshot
Screenshot Screenshot
The Italian Genova Brignole – Recco route (as far as Genova Nervi thus far), available
from BVEMania (Trenomania) (see the Download section)

Miscellaneous news

Railsimroutes LogoI’m officially announcing the Railsimroutes.net UK Railway Infrastructure Object Library today, which will contain all the objects and textures which are shared between my two upcoming openBVE route projects, Birmingham Cross-City South v2.0, and Watford Junction to Rugby v1.0. This library will be maintained by me, and all developers will be welcome to install and use this library with their own projects, without any conditions or requirement to seek permission.

The library will contain all sorts of objects, including track, catenary, signals, lineside objects, some basic scenery, and so-on, which might help to make new routes easier to develop. It will also have the advantage, that whenever I update the library, perhaps with higher quality textures or better objects, any routes which call upon the library, will also get updated. I’ll plan it carefully, to ensure that changes remain backwards compatible. I anticipate that the library will be released along with Cross-City South v2.0 initially, and then it’ll receive it’s first update when Watford Junction to Rugby is ready.


Railsimroutes.net - UK Railway Infrastructure Object Library banner

UK Railway Infrastructure Object Library
[Now in development]

Next, as you may have noticed, I’ve decided to increase the version number of my upcoming Cross-City South upgrade for openBVE, from version 1.4, to version 2.0. I think I’m making enough changes and enhancements to the route, to justify a version 2.0 release instead. 🙂

I’ve also updated the openBVE Help and Information section to cover the installation of openBVE in Ubuntu 10.04 (Lucid Lynx). It’s hard to imagine how installing openBVE via the Ubuntu Software Centre could be any easier, and installing openBVE via this method, also makes installing and running the latest official openBVE release with Mono, easier too. I’ve decided to remove the instructions explaining how to run openBVE with Wine, as I’m experiencing problems with the version of Wine available for install with Ubuntu 10.04, relating to GDI+ (and the problem isn’t just occurring with openBVE, either). Perhaps something to do with a Beta release of Wine being supplied rather than a stable release, I don’t know. Running with Mono is much easier though, if you can live without plugin DLLs.

Screenshot Screenshot
openBVE Help and Information updated for Ubuntu 10.04 users

I was lucky enough to have one of my screenshots published in the July issue of the UK edition of PC Gamer magazine, where I also gave a brief overview of the work being undertaken on openBVE 2. I will admit that it was nice to handle such a press enquiry! Here’s the screenshot which was chosen for the article, shown amongst screenshots of various simulators, such as Railworks, X-Plane, Sail Simulator, Space Shuttle Mission Simulator, and others:

Thumbnail image
The Watford Junction to Rugby screenshot chosen to appear in simulation
article “The Realists”, in the July 2010 issue of the UK edition of the
best selling PC Gamer magazine.

Incidentally, I also want to apologise for the lack of progress with my routes, and for posting so many screenshots and not delivering anything, which I feel that some of you are not impressed by. This is mainly due to me working on openBVE 2, which means that I don’t have much time to devote to the routes at the moment. openBVE 2 is a priority though, and a fantastic experience for me, so I hope fans of my routes will understand. Besides, both routes will run even better in openBVE 2, anyway. I know that the routes look more-or-less finished already, but they’re not – there are such issues as missing track in places, performance optimisations which still to be carried out, and an entire missing station to deal with at Rugby, to name but a few examples. I don’t make a habit of releasing junk and expecting people to be happy with it, so the projects won’t be released until I’m satisfied that a decent standard of quality has been achieved; that doesn’t mean they have to be perfect in every way, just not a disappointment.

New Railsimroutes.net site design

Railsimroutes LogoAs regular visitors will have hopefully noticed, I’ve redesigned the website, as I felt it needed an update, and I also wanted to put some updated website design skills into practice. The site was last redesigned in 2007 with a theme called “Modern”, characterised by a metallic grey colour scheme and smoothly shaded backgrounds, where Windows users would have been greeted with the Tahoma font throughout, and it was designed to be XHTML 1.0 and CSS Level 2 compliant. However, the content of the site wasn’t reorganised very much since the time of the previous “Retro Blue” design, and over time it became somewhat cluttered and untidy in my view.

This latest redesign is the fourth incarnation of the site, with a new theme called “Clarity” (hopefully it might live up to it’s name ;)). The new design is meant to be clearer, better organised, and easier to read. The site has been completely rebuilt from scratch; PHP is now used as well as HTML, and much of the site is XHTML 1.1 and CSS Level 3 compliant. I’ve tested the new site using Firefox 3, Internet Explorer 8, Opera 10, Chrome 5, and Safari 5, and everything works well. The site also works just fine in Internet Explorer 7 and earlier too (tested as far back as IE 5.5), but if you use one of those older Microsoft browsers, you might notice a minor rendering issue around the style selector dropdown box in the footer of each page. Essentially, I’m not happy having to devote much time to dealing with the quirks of browsers which aren’t properly compliant with more recent web standards, partly because it’s just annoying, but also because catering for them can lead to such browsers outliving their welcome (IE 6 springs to mind!). So, if you use Internet Explorer 7 or earlier and want perfect rendering, I would recommend upgrading to Internet Explorer 8 if possible, which is just fine.

I’ve also decided to reorganise the content of the site somewhat. The navigation bar has been expanded with the addition of Gallery and Help links, and the Projects and Downloads section has been overhauled to place emphasis on active projects, and non-help related information. Much more background information and history concerning my route projects is provided now, and information and downloads should be easier to find when they’re ready for release. You’ll also find a "What I’m currently working on" infobox at the top right of this page, which you can check to see what I’m up to, between blog posts. 🙂

I’ve taken the decision to remove some old sections of the site which never received much of my attention, and I’ve moved my old BVE 2 and 4 add-ons into their own de-emphasised legacy add-ons section, as they’re not really reflective of the quality of work I’m now producing; the emphasis is now placed on my upcoming openBVE projects instead. I’ve also introduced a sitemap, as a couple of people have indicated that some information was harder to find, previously.

I’ve also used a different selection of fonts this time:

  • Windows 7 and Vista users will get the Segoe UI font throughout (along with the rather nice Consolas for code snippets), giving the best appearance.
  • Windows XP users will also get the Segoe UI font, if Windows Live Essentials applications have been installed (for example, Messenger, Mail, Photo Gallery or Writer), or if Office 2007/2010 has been installed. XP users will also get the Consolas font with Office 2007/2010, or this can be downloaded free from Microsoft’s website. If neither Windows Live Essentials or Office 2007/2010 have been installed, but the free Microsoft Powerpoint Viewer 2007 is installed, then Candara (along with Consolas) will be seen instead. If none of these have been installed, then Trebuchet MS (along with Courier New for code snippets) will be seen, which are fonts included with Windows XP.
  • Others will likely see generic sans serif and monospace fonts (although these look very nice in Ubuntu Linux, for example).

Incidentally, I experimented with CSS3’s @font-face declaration for embedding fonts, so that a consistent text style would be seen regardless of which fonts are installed locally on someone’s computer. This does indeed work fine, but I haven’t yet decided upon a set of fonts which I like, and which are also released with acceptable non-restrictive licencing terms, so that I can host the fonts on my own server without issues. I’ll explore this again in future, however.

More observant visitors will have noticed that I’ve also renamed the site slightly. I’ve dropped the “UK” part of “Rail Sim Routes UK”, and the site is now called “Railsimroutes.net” instead. The site is still available via two domain names, railsimroutes.net and railsimroutes.co.uk; I have no plans to retire the .co.uk domain, although you might want to update your bookmarks if you still use it.

Anyway, I hope you like the new Railsimroutes.net design. 🙂

May 14, 2010

Animated digital station clocks for openBVE, and 3D cab for 1992 stock released at BVE Routes & Trains

Posted by Anthony_B on May 14, 2010 at 06:50

Animated digital station clocks

Railsimroutes LogoopenBVE/DemoRoute1 screenshot - click to enlargeI’m not sure if any other openBVE developers have attempted this yet, but a feature I’ve been wanting to add to my routes for some time now, is animated digital station clocks which show the actual in-game time. Of course, we’ve seen a very nice working analogue station clock featured in » DemoRoute1 « (see right), but a digital clock would be useful, too.

I studied the functions in DemoRoute1’s analogue clock .animated file, along with openBVE 1’s source code to see how the display of in-game time is handled, and eventually opted to use multiplication rather than division in my functions as per the animated object in DemoRoute1. You can find some details of the finished set of files below.


Animated digital clock shown in the openBVE Object Viewer utility -- click to download sample files

Animated 24-hour digital clock shown in the openBVE Object Viewer utility.
Sample files can be downloaded here.

Please feel free to download and use the above files if you’d like to adapt them for your own route, all you need to do is create an enclosure for the digits, and translate or resize the digits, to suit your own needs. The digital clock consists of an object which shows a single digit from a texture containing a strip of digits from 0-9, a separator, and a black background. The .animated file is as follows:

digital_clock.animated:

[Object]
States = back.csv
Position = 0, 0, 0

; Hours

[Object]
States = digit.csv
Position = -0.51, 0, 0
TextureShiftYFunction = 0.1 * floor[mod[time * 0.000277777777777778, 24] * 0.1]

[Object]
States = digit.csv
Position = -0.33, 0, 0
TextureShiftYFunction = 0.1 * floor[mod[time * 0.000277777777777778, 24]]

[Object]
States = digit_separator.csv
Position = -0.21, 0, 0

; Minutes

[Object]
States = digit.csv
Position = -0.09, 0, 0
TextureShiftYFunction = 0.1 * floor[mod[time * 0.0166666666666667, 60] * 0.1]

[Object]
States = digit.csv
Position = 0.09, 0, 0
TextureShiftYFunction = 0.1 * floor[time * 0.0166666666666667]

[Object]
States = digit_separator.csv
Position = 0.21, 0, 0
StateFunction = value == 0
RefreshRate = 0.5

; Seconds

[Object]
States = digit.csv
Position = 0.33, 0, 0
TextureShiftYFunction = 0.1 * floor[mod[time, 60] * 0.1]

[Object]
States = digit.csv
Position = 0.51, 0, 0
TextureShiftYFunction = 0.1 * floor[time]

Note: The purpose of the mod[] function used in displaying the hour digits, is to ensure that the displayed time wraps around back to 00 when passing midnight, rather than 24 or higher being displayed.

Here’s a screenshot of the above working digital clock, adapted for use in a prototypical structure at Kings Langley on the Watford Junction to Rugby route; note the displayed time on the clock, matching the in-game time shown at the bottom left of the screen:


openBVE / Watford Junction to Rugby screenshot showing animated digital clock - click to enlarge

openBVE / Watford Junction to Rugby screenshot showing animated digital clock — click to enlarge
Note: Station nameboard textures created using » Station Nameboard Generator v2 «
Horizontal Rule

3D cab for 1992 stock released

Information IconI also just wanted to briefly mention that a new openBVE 3D cab has been released for the London Underground 1992 stock, with animated features including a traction/brake controller, speedometer, and working in-cab CCTV monitor. Night-illuminated cab indicators and screens are also included, and the overall effect created by the cab is very nice, despite a couple of initial teething problems. The 3D cab is an add-on for the BVE4 1992TS, which needs to be installed first; both downloads can be found at » http://bveroutes-trains.co.uk «. A note on installing the 3D cab — at the time of writing, I noticed that the 3D cab download contains an incorrect folder structure, i.e. there’s no “1992TS” subfolder included, and the files could easily end up accidentally being placed in your Train folder directly instead, which won’t work, of course. You will need to be careful as to where you choose to extract the files. For further information, you might like to monitor » this thread « on the BVE Exchange forum.

Screenshot
openBVE / 1992 Stock screenshot
» Download from http://bveroutes-trains.co.uk «