|
[OpenGL home] |
Summary |
|
||
This page shows my first steps in navigation engine and 3D-programming. |
|||
The first step was to draw a few geometric primitives that could be used to build a ship: the hull (half-ellipsoid), the masts (cylinder), the sails (squares or triangles). I made pyramids and cones along the way. Each object taken individually is an easy job. That's when you need to put them together in a same picture that visibility testing introduces complications. I also made some investigations in skeletal animation: |
|||
I wanted my navigation engine as versatile as possible, to allow me model any kind of ship-of-the-sail. This led me to learn Object-Oriented Programming (OOP), which was definitely the way to go. I found this way of programming so appealing that I've always programmed OOP since then and have converted several of my previous work. This resulted in the Arsenal program, which allows to build a ship by defining all its relevant parameters:
Actually, the following factors were taken into account:
Once built, the ship could be manoeuvered in a very sketchy way. Mainly done for testing and debuggins. Nothing much exciting there: And finally, I was trying to give a 3D view of th ship. This is were I got stuck into Z-Buffer problems and I stopped the developpment. At some time I joined the "Beat To Quarter" team devoted to exactly this kind of simulations. They lacked a navigation engine though and I provided them with mine. However, I had to learn C++ to convert it in this language. This is at this step I added roll and wind cover to the model. For the first time I had the occasion to really see my ship moving on the seas and to see the model was quite realistic. This was a great moment to see that. Here is a snapshot of this demo. However, I had no control on the 3D part, and most of the project, therefore progress was slow and depended a lot on others' work. Moreover, C++ has definitely does not convey the same programming ease as Delphi. Even the OOP was lacking a few Delphi features and there was no speed increase (as I was hoping to find) to balance these inconveniencies. I came to a stall. Then I discovered OpenGL and GLScene, which made me feel I could
manage most of the 3D-programming myself. And this is where I am currently.
The latest version of the engine is in C++ and I shall have to port it
back to Delphi but I feel confident now that I shall be able to put everything
together in the near future and finally see my ship sailing on the oceans.
Naval ArchitectI have now ported back the engine to Delphi 6 and linked it to GLScene. The result is called "NavalArchitect" as the goal is for now to test the navigation model with ship increasingly complex. This program allows exactly that: build ships and test how they react. So far I've tested it only with a simple Viking ship, the one discovered in Gokstad. Only one square sail, but I'm going to add more and more sails.A dream is coming true! Tonight I saw for the first time something I was envisionning since several years: a three-masted frigate sailing across my computer screen! The sails are shadowing the wind from each other, something I had only "seen" and debugged while this frigate was just columns of numbers. In the picture below, the shades of green indicate how much wind they are receiving, which depends on their orientation in the wind and their position among the other sails. When a sail is taken aback, it takes an awkward red colour. In the end, these colours will be replaced by shape (billowing, flat, aback,...) and movements (shivering,...) in the sails. You can download this executable below. In the same zip file are three ship definition files: the Gokstad Viking boat, a fantasy two-masted Viking boat, and the frigate (dimensions inspired from the Blanford). |
|||
Arsenal: Executable NavalArchitect: Executable |
|||
Bibliography
Links
|
Contact the webmaster |
Updated 2.1.2004
|