AA - 05 project (Computer Graphics)

[ Aitana Neves Da Silva (SPH) – Arnaud Lagger (SSC) ]

 

Introduction

The goal of this project was to model in 3D a helicopter and its environment in openGL. As the helicopter had to be in a specific scenario, we chose to build an emergency helicopter in a mountain environment and the goal is to retrieve an objective to the base.

 

Modeling and implementation

The surface

The surface is a composition of triangles on the XZ plane, the Y coordinate being a random value between chosen values. On the top of this, two flat areas are integrated: one is the base (where the helicopter takes-off and where it must return after having caught the objective) and the other one is where the objective lies.

A snow texture is applied on the surface to enhance the realism.

 

The sky

The sky is simply a big textured sphere with a low number of polygons.

 

The helicopter

The helicopter was entirely made by hand (like every others components by the way) and consists of two ellipsoids (the main part), one cylinder (the tail part), 4 boxes and one sphere (main rotor), one box (tail rotor), four cylinders ans two boxes (for the lower part).

The rotors rotates according to the power we control with the keyboard.

A texture made by hand was added on the ellipsoids.

As the helicopter can move frontward, backward, leftside, rightside, spin clockwise and spin counterclockwise, it is difficult to stay in hover (staying in the same position). So we added a trick to allow it hovering easily. If we don't touch any key, the helicopter automatically gets progressively to a stable position in order to hover. This adds more realism to the helicopter motion and helps controlling the flying.

Considering physics, we limited the movements of the helicopter to realistic values. For instance, it is impossible to go faster than 300 km/h, and if we rotate too much, the helicopter will fall. Moreover, it is not possible to go outside of the range of the landscape, neither to reach the sky.

All the movements are processed according to the weight vector of the helicopter. The angles of the power vector determine the X, Y and Z movements.

 

Environment objects

Apart from the surface, the sky and the helicopter, we added some objects to enhance the beauty of the environment. At the base, an heliport is drawn on the surface and two buildings near the heliport represent the base.

The surface is randomly covered by trees, made by revolution.

Finally, the objective is a textured sphere.

 

Cameras

There are 5 types of cameras:

 

Commands

General

q exit the program

 

Helicopter

Arrow up frontward motion
Arrow down backward motion
Arrow left leftside motion
Arrow right rightside motion
   
Page up increase the power of the main rotor
Page down decrease the power of the main rotor
   
- spin (clockwise)
+ spin (counterclockwise)

 

Cameras

F1 behind view
F2 cockpit view
F3 from the base view
F4 pursuit view
F5 panoramic view
   
Home zoom in
End zoom out

 

World

f toggle fog

 

Rendering

All the rendering commands are directly accessible via the context menu.

 

Screenshots

The helicopter takes-off at the base

The helicopter flying above the base. We can appreciate the textures.

The helicopter reaches the objective.

View in wireframe.

We can switch the illumination to a fog mode.

 

Download

You can download here the game (setup) or the sources. The sources are a Visual .Net project, although you can import the C++ files on your favorite platform.

 

Conclusion

This project was interesting to do, as we both learnt openGL by practice and we enjoyed creating this helicopter game even we had spent a lot of time to achieve this result.