350 likes | 458 Views
The Oceanyd Project aims to develop an immersive underwater visualization platform that leverages advanced terrain rendering techniques. Key project goals include importing topographic sonar data, loading diverse underwater objects like flora and fauna, path editing, and enhancing visual realism through texture mapping and special effects. The project supports multiple operating systems (Windows, Mac, Linux) and utilizes powerful tools like 3DTerragen and Visual C++. Key features include adaptive tessellation, optimized rendering algorithms, and robust file loading capabilities, ensuring better portability and visual quality.
E N D
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 ] * [ -1 3 -3 1 ] * [ p0 ] [ 2 -5 4 -1 ] [ p1 ] [ -1 0 1 0 ] [ p2 ] [ 0 2 0 0 ] [ 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
Oceanyd Project • Benchmark • Athlon 64 3200+ (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: http://www.llnl.gov/graphics/ROAM • http://www2.ravensoft.com/users/ggribb/plane%20extraction.pdf