Oceanyd Project Under-water visualisation
Introduction Project Goals: Import topographic data (sonar) Objects loading (fauna, flora…) Path Edition Texturing & FX Portability (Win, Mac, Linux)
Plan Project Base: 3DTerragen A previous terrain visualization project R.O.A.M based
3DTerragen & Oceanyd Tools IDE : Visual C++ Express 2005 XCode API & SDK : wxWidgets GLEW OpenGL Langage : C++
3DTerragen
Visualisation Algorithm: « Real time Optimally Adaptating Meshes » (Duchaineau) Patches meshing Adaptative Tessellation « Split and merge » algorithm Cutting criteria Recursive rendering
3DTerragen Limits Unoptimized rendering loop Culling 2,5D Path editor to simple Memory usage Reduced portability
Plan Additionnal developments : XYZ file loading Sonar RAW data
Projet Oceanyd XYZ file loading : Sonar RAW data Depth is inversed Data parasiting Filtering is needed Possible support of XYZB files Biocenose additional data
Filtrage Modified Top Hat Filtering :
Plan Additionnal developments : XYZ file loading Rendering engine optimizations
Oceanyd Project Rendering engine optimization : 3D Frustum culling Additionnal tessellation criterias Vertex Buffers Elements ordering
Oceanyd Project 3D Frustum culling :
Oceanyd Project 3D Frustum culling : OpenGL frustum retrieval M = View * Proj Plane normalization Tests on half-spaces Point Box Sphere
Oceanyd Project Additionnal tessellation criterias : Available thank to the culling Resolution steps Of Mipmapping inspiration Better triangles repartitions Optimisation for hardware Z-Buffer Quick sort on distances Front to back
Projet Oceanyd Vertex Buffer Batching (minimise the API calls) Interlaced Indexed Array : Uses system RAM Object : Uses VRAM (+ AGP/PCI-e)
Oceanyd Project Elements ordering 3 types of objets (fauna, flora, others…) Fauna and others are independents Flora are world dependents (patch dependency) Optimized Culling
Plan Addtionnal developments : XYZ file loading Rendering engine optimizations New path editor
Oceanyd Project Paths Use Catmull-rom splines Connect the control points q(t) = 0.5 * [ t^3 t^2 t 1 ] * [ ] * [ p0 ] [ ] [ p1 ] [ ] [ p2 ] [ ] [ p3 ] Must detect landscape collisions
Oceanyd Project Path Checkpoint class : Add properties for each point (like time pause) Computed in 4 steps : Estimate the segment length Insert additionnal points Compute the new arc Elevate points if landscape collision
Oceanyd Project Path
Plan Additionnal developments XYZ file loading Rendering engine optimizations New path editor Better visual quality
Oceanyd Project Better visual rendering Texturing UV Planar Mapping S and T parametrisation Number of tiles / terrain size Animation Alpha masking Water plane Skybox
Oceanyd Project Better visual quality FX Caustics using (multitexturing) Submarine picture stretching Animate the projection matrix Volumetric fog Immersion Underwater flow movement Cinetic (simulates a submarine scooter)
Plan Additionnal developments : XYZ file loading Rendering engine optimizations New path editor Better visual quality Multi-files support
Oceanyd Project Multi-files support Bitmaps PGM, PPM BMP (grey, 8/24 bits + RLE) TGA (grey, 8/24/32 bits + RLE) Texture class Automatic format detection OpenGL texture loading
Oceanyd Project Mutli-files support 3D Loading 3DS triangulated files Instancing Materials, textures and multiples objets VBA & VBO display Object3D class Model loading Instancing Compute bounding volumes
Plan Développements effectués : XYZ file loading Rendering engine optimizations New path editor Better visual quality Multi-files support Portability
Oceanyd Project Portability wxWidgets, OpenGL Compilers behaviors Word representations Little / Big Endian Byte swapping Much additionnal programming workload
Results
Oceanyd Project Benchmark Athlon (2Ghz), 1Go RAM 400Mhz, Geforce6600GT 128 MO PCI Express 16X, Windows XP Pro SP2 3DTerragen VS Oceanyd : 100k hi-res textured triangles and FXs (Oceanyd disadvantaged).
Oceanyd Project Results More than 2 times faster Portable! Better object code Facilitation of further implementations 24 classes Open to receive new files formats
Oceanyd Project Futurs developments –Fog on objects –LOD on objects –Additionnal FXs (God Light,…) –Model animation (key frames) –A.I –Scene script editor
Oceanyd Project Ressources ROAM: %20extraction.pdf %20extraction.pdf