Containing was a second year project at my polytechnic university, the assignment was to simulate the logistics process of the Rotterdam harbor, and visualize it on screen.
Big freighter ships arrive at the Rotterdam harbor, packed with 20ft containers, these containers need to be distributed onto trucks which will deliver the containers to their final destination. Only 20 trucks can simultaneously access the harbor, and each truck can only offload one 20ft container. Because of this bottleneck the containers need to be offloaded from the freighter ship and onto the Rotterdam harbor storage field. This offloading and storage allows the containers that will depart the earliest to be ordered at the top of the container stacks. The transportation of the containers happens happens entirely automated through computer controlled cranes and AGV (automation guided vehicles).
For the visualization part of the project, OpenGL was used though jogl as JAVA was a requirement. As an aside I attempted to write a c++ java plugin to sidestep the java requirement but ended up having issues with the translation code between java and c.
The controller and server applications communicate through sockets. Where the controller is responsible for scheduling the different operations that can be done on the cargo and the server is the simulator which visualizes the entire process in 3D. Again an ambitious endevour as the assigment only required a 2D visualization. All 3D models and textures were created from scratch by Pieter Witvoet.
One of the issues that I faced during this project was that the polygon count could become so high where the frame rate would drop to non interactive speeds, as there may be around tens of thousands of containers per scene (per frame). Back in 2006 this was an actual issue, as pushing vertices from Java was not very fast. Space partitioning and distance sorting was used to optimize rendering.