Tank Simulation

You can download the tank experiment from:

Download (Primary), 472 MB
Download (Secondary), 472 MB, (OneDrive).

I began work on the tank rig in early 2012 as a small side project.
I had originally started this work as an experiment to determine whether the simulation would be possible.
It has no practical use and was created mainly to provide an interesting test asset for developing my personal rendering framework.
If you want to reach out about the demo with performance, crashes, or general thoughts, you can contact me by emailing the derkreature at gmail dot com.

The rig uses a modified version of HACD to generate a hierarchy of concave shapes created from 2500 convex shapes.
Collisions between driven and non driven actors composed of these concave shapes drive the tread model.
The flag uses PhysX cloth and is driven through a static parent transform to the turret actor.

The asset is rendered using the physically based shading method proposed by Epic Games during Siggraph 2013:

I recently decided to convert the asset's materials to support physically based shading, stabilize the simulation and clean the project up for a public release. I plan to convert the rig to a raycast model later in 2015 to allow for the creation of a more complex and compelling demo.

Please ensure that you have the Visual Studio 2012 SP4 redistributable package installed. It can be found at:

The demo has been tested on Windows 7.x and Windows 8.x with a variety of NVIDIA GPUs (650M, 750M, GTX680, GTX690, and the TitanZ). 
No testing has been conducted with AMD GPUs. It should work, let me know if it does or doesn't!
Testing against the Windows 10 beta from early December 2014 was not possible due to the installation of VS2012 SP4 not being allowed.

Ensure that you are running Windows Aero (not Basic). 
The compositing step that Windows performs for mouse over will halve the framerate if you are running with the "Basic" theme.

Ensure that Chrome, Firefox and Internet Explorer are shutdown. 
Modern internet browsers appear to play merry hell with the Windows 8 scheduler.
The demo takes a little over 1GB of video memory depending on resolution. 

Ensure that you are not running anything else that allocates GPU memory (outside of Aero) before you start this puppy up.
While you will not TDR, resource paging will probably slow execution down to a crawl on a notebook.

The demo is divided into 3 executables:
Binary: bin64Opt/TankTestStripped.exe
Startup options: bin64Opt/tankStripped.init.xml
Run this executable first in order to determine whether it will be possible for you to run the more complex demo.
This is the most basic variant of the tank test.
All extended functionality has been stripped out in order to maintain a reasonable update rate for the simulation.
Testing has shown that a frame rate of 30 to 37fps on a 2012 Macbook Pro (GT650M) at a resolution of 1280x720 is achievable.


Binary: bin64Opt/TankTestSimple.exe
Startup options: bin64Opt/tankSimple.init.xml
This demo is a slight step up in complexity.
There are convex hulls present in the scene that you collide against.
Tread marks are computed using projected decals and dust is displayed when the treads move.

Binary: bin64Opt/TankTestSimple.exe
Startup options: bin64Opt/tankSimple.init.xml
All settings are enabled. 
This was the start of a much larger demo that I will release once I have moved the simulation to a raycast model. 

The input scheme was originally designed primarily for use with the Xbox controller for PC.
While Keyboard input supports all of the events as the console controller, the fidelity of tread drive control is less sophisticated.

Xbox controller:
Left Lower Trigger = left treads forward.
Left Upper Trigger = left treads reverse.
Right Lower Trigger = right treads forward.
Right Upper Trigger = right treads reverse.
(Both Lower Triggers together will move you forward, both Upper Triggers together will move the tank in reverse).

Left Stick Controller = Rotate camera.
Right Stick Controller = main gun and turret.
A Button = fire main gun
B Button = fire m60 ball gun
Y Button = fire turret m60
DPAD = ball turret gun.

Keyboard Controls:
F1/F2 = (Show / hide HUD). (The HUD contains ambient occlusion, depth of field, and filmic tone mapping switches).
F3/F4 = (Show / hide frame rate).
Numeral 1 = Reset entire simulation.
Numeral 2 = Break left tread assembly.
Numeral 3 = Break right tread assembly.
Numeral 4 = Hide block assembly.
Numeral 5 = Reset block assembly.
Numer W = Dolly camera in.
= Dolly camera out.
Arrows = Drive tank.
Spacebar = Fire canon.
Left Control = Fire turret m60.
G / D = Rotate turret around Y.
R / F = Rotate turret around X.

Mouse + Left Mouse Button: Rotate camera.
Mouse Scroll: Dolly camera in and out.
Mouse + Right Mouse Button: Pans on X, Y using view direction up and left tested against a scene ray intersection.