0805122213_What_I_am_up_to

What do I, a Computer Engineering Undergrad from Canada, and an architecture and urbanism undergrad from Brazil have in common? We are both working at Canada's University of British Columbia Fisheries Centre doing data visualization using Blender:

Lenfest Ocean Future Project Ocean visualization project

This is no Finding Nemo, but hey it is in realtime!

BlenderNation ran an article on this project a while back, in a nutshell the Fisheries Centre wants to use scientific simulation data to drive a realistic 3d visualization of an underwater ecosystem.  A complex simulation program provides Blender with the fish population and other environment variables, Blender uses this data to display an animated view of the ocean in realtime.  A team of 6 had been working on it for the past few month.  Dalai Felinto and I are fortunate enough to step in and take over the Blender component of the project.


I have worked with UBC for just over a week on this project, but I am developing even more respect for the do-it-all philosophy of Blender.  It is a joy to have the prototyping, modeling, texturing, animation, game design and python scripting functionality all accessible within a single UI.  I am happy because I don't have to learn 20 different applications.  My employer is happy too because productivity is through the roof!  I don't even think Hollywood production is this streamlined.


Another aspect of this project that excites me is the fact that I have never seen the Blender GameEngine pushed so far.  AI, culling, flocking, GLSL, LOD, network, UI, sound, XML parser, we got all that.

underwater visualization

Swimming in dangerous water


Blender is without its flaws.  Because of the nature of this project, the focus is on automation and dynamic generation of entities.  With about 2000 lines of python code that is executed roughly 30 times a second to ensure an independent AI for each fish; ~100,000 triangles on screen at any given time; we are seeing some serious performance bottlenecks.  Python can't be easily parallelized, duplicate objects can't be batched, and there is currently no support for DDS texture compression.  So far, we are managing fine, but I can't stop asking myself the 'what if blender...?' questions.

Of course, with all the features that Project Apricot promises to deliver, we will definetly see significant improvement in the Blender GameEngine before the end of the summer.  

And lastly, here is a video teaser of what we have done. Remember this is REALTIME stuff!

Stay tuned. I'll keep you informed!



Comments



A Mike Pan Design.