MONASH UNIVERSITY
SCHOOL OF COMPUTER SCIENCE AND SOFTWARE ENGINEERING
HONOURS YEAR

FIT4012 : Procedural modelling, animation
& artificial life in computer graphics

Assignment Notes


Title :

The Alpine Tour

Date Due: Refer to main page
Weight: 100% of your final mark for this unit
Submission: CD/DVD-ROM

 

Specifications:

Bicycle road racing is a competition that pits cyclists against one another out on the open road, often up and down hilly or mountainous terrain (fig. 1). Riders start together and must complete a fixed course before crossing the finish line ahead of their rivals. Use agent-based/behavioural modelling methods to create a field of road racing cyclists and procedural modelling to create a mountainous cycling course.

Fig. 1: An image of a road cyclists in the mountains pinched from somewhere on the WWW.

The cyclists: Your cyclists will need to be modelled as spheres with a mass and velocity. Cyclists of different sizes (they are mostly made of water) will have different power generation capabilities and different energy consumption requirements. They will need reasonable capabilities to accelerate themselves and their bicycles by consuming energy from their limited on-board supply. Movement at constant speed also requires energy to overcome air-resistance. This drag force can be calculated easily by assuming that the riders are spheres moving through air. It must be countered by force applied by the cyclist or they will gradually come to a halt. Climbing hills will benefit the lighter riders who have a good power-to-weight ratio. Descending is a skill that some cyclists excel at.

The cyclists' behaviour: Riders must stay on the road and avoid colliding with one another. Colliding cyclists have their velocity reset to zero every time they collide. Cyclists may occassionally hit the edge of the road and have their velocity reset to zero. Their position remains fixed at the edge of the road until they start to move on the road properly. In this simulation, since there are no corners, add a random element proportional to speed that causes riders to crash off the road.

Cyclists must aim to finish the race in first place. If a rider is sitting behind another rider of larger or identical radius, and their separation is less than "some amount" that is proportional to the radius of the frontmost rider multiplied by a speed scaling factor (the faster the cyclists are moving, the farther back the follower can be to gain a slipstreaming effect), the following rider saves some percentage (often up to 30%) of the energy they would normally consume to maintain the speed at which they are riding because the drag they experience is reduced. If the frontmost rider is smaller than the rearmost rider, the rearmost rider saves less energy. The technique of sitting "on the wheel" of another cyclist is called drafting (fig. 2).

Fig. 2: An image of drafting cyclists in a race called a "Team Sprint", taken by Phil O'Connor, 2000 (linked from here).

Devise a simple system for riders to follow behavioural rules using a system like Reynold's boids model. These strategies will need to be parameterised in some way so that you can manually enter them, or automatically generate them and apply them to different riders. To start with, just get the riders to ride on a straight road without colliding. Once this is working the model's complexity can be increased as follows.

Each rider can always detect what the riders immediately to the side are doing (i.e. their size, position, velocity and acceleration can be known and a response can be made). They can also always see what riders in front are doing up to some number of bike lengths ahead. Each rider might look behind themselves and at all other nearby locations on the road at some regular interval. Perhaps there could be a loss of steering accuracy and therefore an added risk of crashing into a nearby rider or off the road for riders who look around and concentrate too little!

Riders always know how far remains until the finish line is reached. Their strategies and behaviours may be triggered therefore by either: (i) the behaviour of other riders they see; (ii) the distance to the race finish; (iii) their energy stores and other internal states (iv) the slope of the road.

Some example behaviours: Riders may elect to spend energy to accelerate in order to catch the back of a rider that is ahead of them in order to save energy in the future by "drafting" behind them, then they may accelerate rapidly from behind the rider in front as the finish line approaches. Riders may measure their effort and ride a constant speed hoping nobody else can keep up with them. Riders may start slowly and ride faster and faster until they run out of energy, hoping that nobody is able to stay with them. Riders may start very fast in order to leave other riders behind at the start and then ride at a constant, measured pace to the finish hoping that nobody catches them. Riders may accelerate on the climbs, hoping to lose heavier riders. Riders may accelerate on the descent, hoping other riders will lose control and crash. You can come up with your own race tactics and pit them against others.

The course: Model the road in 2D as shown in figure 3. Add procedurally generated mountains and valleys so that the race is different every time it is run. Movement is possible for cyclists to the left and right of the road (i.e. cyclists move into or away from the screen to pass other riders but make sure your road has a limited width so that riders can get blocked in behind others), as well as along it and up and down the mountains.

All your code should be written in C or C++ and should run under a UNIX (or derivative) operating system. The models should be visualised in OpenGL. Riders can be drawn as circles on a line using 2D graphics if you wish (fig. 3)

Fig. 3: A sample visualisation of the cyclists and road.

You will need to research behavioural modelling techniques. This will involve reading papers and books, not just the WWW and the lecture notes. Prepare a bibliography document detailing the references you have consulted in the course of your research. Write a paragraph describing the contents of each reference you have consulted. The paragraph should be specific about what the reference contained that was of value (or not) for your assignment.

Marking breakdown:

A distributed behavioural model and a physical simulation of: (i) the cyclists riding on the road (up and down); (ii) drafting; (iii) handling collisions.

[65]
Simple model of energy expenditure of cyclists for acceleration, constant velocity maintenance, climbing, descending etc. [10]
Cyclists engage in race tactics that are based on the behaviour of other cyclists [15]
Bibliography: only published books, conference and journal papers count for marks [10]
Bonus: the best races and extra features may receive some bonus marks. Don't overdo it, your total mark is capped at 100. Please discuss with the lecturer anything you are planning to do to be sure your idea will receive bonus marks. <=10

Submission Details:

The assignment is due at the time specified on the main page.

Submit all of the files specified below on a CD/DVD-ROM clearly labelled with your name and ID number. Submissions will be accepted at the General Office in building 63 only.

You will need to include the following in your submission:

Documentation is important. Marks are allocated within each section for the research you have done. Documentation submitted should include:

Each file of your source code must contain the follwing at the top:

 /* 
  * This software is the original work of <Your Full Name>. ID: <Your ID> 
  * This software is submitted in partial fulfillment of the 
  * requirements for the degree of <Your Degree>, 
  * Monash University
  */ 

You are encouraged to consult reference material as widely as possible, but remember the code you write MUST be your own work. Make sure you think about, and understand, the processes involved rather than blindly copying the work of others.

Please be realistic about what you can achieve given the time constraints. Students invariably spend far too much time on this assignment. As much fun as it is, any time above 50 hours would be better spent on other activities. (e.g. fishing in the Monash pond)

Late assignments will incur mark penalties according to the Fibonacci sequence multiplied by a lecturer-determined scaling factor (e.g. 0.5, 1 or 100). An assignment that is one day late will receive a one mark penalty multiplied by the scaling factor. Assignments two days late will receive a 2 mark penalty, three days late, 3 marks, each multiplied by the factor. The sequence is [1],1,2,3,5,8,13,21... (times the factor). This applies for all days including public holidays and weekends so please submit your assignments punctually!


[ FIT4012 Home Page ]