See what's going on with flipcode!




 


Submitted by Alex Babkin, posted on 10 March 2005



Image Description, by Alex Babkin


Statement: This is a sailboat simulator, which is a model of how a sailboat would behave in real life in response to actions of the user controlling it and changing weather conditions. In addition, the "god mode controls" would be available that would allow a user to change the wind behavior. The simulation is set in an environment consisting of limited area of terrain with multiple water bodies in it (rivers, lakes, etc.) For enhanced realism, sky would be rendered above the setting and ripples on the water.

The project will involve completing the following subtasks: modeling the boat and the terrain; drawing and implementing a sky-cube; implementing reflections and procedurally generated bump-mapping for the water plane; physical simulation of floating body dynamics, interaction of cloth with the wind (sails and a flag); implementing a reasonable UI that will allow a user to control the boat with steering (rudders) and changing the orientation of the sail planes. Also it will allow to change viewing angles of the camera, to be able to observe the boat from all reasonable angles.

The uniqueness and how elaborate this project is, is what makes it interesting and challenging.

Goals: All of the physical phenomena in the dynamics simulation should be visualized as physically plausible, at least to the "naked eye". (i.e. if the user will not analyze it too much) The environment should be made looking reasonably realistic, which will be achieved by using techniques that were described in the “Statement” paragraph. In general, the user should feel that the visual feedback of the simulator is natural and would resemble that of how a real sailboat would look in real life.

Technical outline: Cloth physics simulation is based on the works of Xavier Provot 1995. In essence, it suggests using a network of springs to model a piece of cloth, updating each 'node' every time step by performing Euler integration of all the internal and external forces that act upon each node in the model.

Floating solid body physics is calculated straightforwardly using Euler integration on the standard physics formulas.

Terrain is a standard gray-scale image based heightmap mesh. For improved realism it is textured and lit.

Waterplane reflection effect is achieved through first rendering from underneath of the waterplane, and then appropriately texture-mapping the result onto the waterplane while performing the main rendering pass, procedurally perturbing the texture coordinates to create a ripple effect.

A standard skybox (textured 3d box around the camera) is used to create the sky and an illusion of 'infinite' environment.

The boat was modeled in an external 3d modeler and imported into the simulator through an *.obj importer.

A convenient UI for controlling the boat is the use of mouse and keyboard buttons and moving the mouse while holding down appropriate buttons to perform desired actions. A compass control will be used to show the current orientation of the camera relative to the orientation of the terrain.

Bibliography: "Deformation Constraints in a Mass-Spring Model to Describe Rigid Cloth Behavior", Xavier Provot, 1995

More screenshots: http://www.geocities.com/ababkin/sailsim/sailsim.html



[prev]
Image of the Day Gallery
www.flipcode.com

[next]


 


Copyright 1999-2008 (C) FLIPCODE.COM and/or the original content author(s). All rights reserved.
Please read our Terms, Conditions, and Privacy information.