OceanViz: A realtime Blender underwater visualization

I had been lucky enough to be a part of a very cool project taking place at the Fisheries Centre at the University of British Columbia.  In a nut shell, we are trying to create a 3D underwater visualization using the Blender Game Engine to display scientific data in a more pleasing way.  Basically translating a stream of mind-numbing data:

into something prettier:

The visualization data is coming from EwE6, a well-respected ecosystem modeling software.  Blender uses inputs such as biomass, water turbidity and light level to create a realtime visualization that allows the user to ‘swim’ around in the ocean, watch the schools of fish interact, and see their population change over time.

To accomplish all this, the project consists of 3 layers:

The server core does all the heavy computation while the visualization layer does all the graphics, AI, as well as user interaction.  To facilitate the communication across these two separate processes, a third layer (called the GameClient) is created, providing the bridge.

Being a Blender artist, my main focus is on the visualization layer: the Blender Game Engine.  In the following few posts, I will outline the process in creating this application, and describe some of the issues we faced.  Please leave a comment if you are interested, it will motivate me to write more :)

11 thoughts on “OceanViz: A realtime Blender underwater visualization

  1. Hi Mike,

    > I will outline the process in creating this application, and describe some of the issues we faced.

    That sounds like it’s going to be very interesting!!!
    Am looking forward to reading it!

  2. Whoa! That’s mind-numbing indeed. The only phase I could probably understand myself is the Visualization aspect and nothing else. ^_^ Would love to know your process and some descriptions too in your next posts. Thanks.

    -Reyn

  3. That sounds like an awesome project. That screen of the app is lookin’ really good, too … any recent videos of it in action?

  4. Hi I knew about this project and I found it awesome.
    How did you get the caustics on the seafloor and how was the sea surface lighting coming from above made?
    I’m learning BGE and I’m actually trying to make a simple underwater game…
    Thank you!

    Giovanni

  5. @Giovanni, all the ‘special effects’, such as the gleam on the fish, the underwater caustics, is done with GLSL shaders.

  6. I’m very interested in how you did this. I hope to interface a Wii controller (Wiimote) for use in the Blender game engine and this could be useful info for such a task.

  7. A wiimote integration wouldn’t be hard, on WIndows, there is a very comprehensive library for .NET that lets you access every aspect of the controller. Then you can sent the data through to Python either via a socket connection, or using PythonDotNet directly to call .NET from Python.

  8. Hi, Mike

    We’re going to do a similar project to this one for school about a Bay here in Mexico using a simulation with Agents that generates data just like the data you use to do the animation, and the purpose of our project is exactly translate this data into something more friendly, so that everyone could see what’s going on in the simulation and not just professionals who can read the numeric data.

    Why did you use the VB Game Client instead of the Blender’s game engine?

  9. Tom,

    We used VB ‘middle-layer’ between the data source and the Game Engine in order to keep things modular.

    The data source (server) is very complex, and if we get the game engine to directly interact with the server, there is a good chance of something going wrong. Having a middle layer that simplifies the data helps to protect the integrity of the server, and also reduces the amount of work Blender has to do to parse the data.

  10. Your site is pretty cool to me and your topics are very relevant. I was browsing around and came across something you might find interesting. I was guilty of 3 of them with my sites. “99% of site owners are doing these 5 errors”. http://bit.ly/tJJczA You will be suprised how simple they are to fix.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>