350 likes | 451 Vues
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.
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