History: SoC2012 Volume Rendering with LOD aimed at terrain
Preview of version: 21
- ยซ
- ยป
Table of contents
Project Information
Proposal and discussion thread: http://www.ogre3d.org/forums/viewtopic.php?f=13&t=69449
Mercurial repository: https://bitbucket.org/philiplb/ogrevolumeterrain/
Roadmap
Some objects on the following roadmap are pessimistically estimated like the implementation of Marching Cubes, some of them can be extended like whatnot like the material stuff. So the actual implementation might move. This roadmap is updated whenever something changes of course.
- Mai 21. - Mai 27.: GSoC start. Working on non ambigous Marching Cubes implementation.
- Mai 28. - June 03.: Marching Cubes done
- June 04. - June 10.: Working on LOD
- June 11. - June 17.: Working on LOD done
- June 18. - June 24.: Revisiting the octree generation, research on Adaptive Distance Fields as split policy and / or QEFs again or something completly different. Also making things somewhat more usable.
- June 25. - July 01.: New octree generation done
- July 02. - July 08.: Extending the triplanar texturing to a simple material system with some fallbacks
- July 09. - July 15.: Triplanar Texturing
- July 16. - July 22.: Triplanar Texturing done
- July 23. - July 29.: Move the actual volume rendering code to a plugin
- July 30. - August 05.: Testing, refactoring, optimizing, documentating, buffer
- August 06. - August 12.: Testing, refactoring, optimizing, documentating, buffer
- August 13. - August 19.: Testing, refactoring, optimizing, documentating, buffer
- August 20. - August 26.: Testing, refactoring, optimizing, documentating, buffer
- August 27. - August 31.: Final GSoC touches and handing in
Weekly Progress
2012-04-29
- Done so far: Some CSG VolumeSource, untested 3d texture VolumeSource, generating an Octree out of the volume with debug visualization
- Forked Ogres Repo
- Ported playground project from own application to an Ogre sample project
- Adjusted all code to Ogres style guide
- Wiki page created
2012-05-06
More warmup and making a comfortable environment.
- SDKTray TextBox, Main Sample class is registered as LogListener and fills it.
- Checkbox for showing and hiding the octree.
- Hotkey "h" hides/shows all UI elements, nice for screenshots.
- Read the first half of "Effective C++" 3rd edition to brush up my C++ knowledge. Highly recommended book!
2012-05-13
As the Summer of Code hasn't officially started yet and also my Thesis waits for some formal stuff, I tackled
mostly stuff which is nice but not super directly relevant to the LOD isosurfacing: Triplanar Texturing! And
some other small stuff. ๐
- Triplanar Texturing with a small test-mesh, implemented as CG shader.
- Finished "Effective C++". Now that went into detail...
- Began a DualCell class which currently just holds 8 corners and can add them to a manual object for debug visualization. Next step is to traverse the octree and generate the dual cell grid.
2012-05-20
Slowly actually getting started.
- Completed the CSG cube
- Implemented the construction of the dual grid with a (switchable) debug visualization
- Put a new roadmap in the Wiki
2012-05-28
Working...
- Added some first documentation.
- Implemented a MeshBuilder to build up a mesh from triangles using vertices and indices without duplicating vertices.
- Started with Marching Cubes.
2012-05-29
Because the previous entry had no screenshot. First working Marching Cubes! ๐
2012-06-03
First closed gaps.
- Added a checkbox to hide and show the actual mesh.
- Using the cells of the DualGrid for Marching Cubes now.
- Updated the roadmap as the Marching Cubes stuff was earlier done than expected.
- Implemented Marching Squares to triangulate the open parts of the (future) chunks.
2012-06-10
First rough LOD.
- Finished the triangulation via Marching Squares for the open parts of the chunks.
- Updated the roadmap, added the plugin point.
- Changed the Octree grid split method to use some kind of geometric error.
- Moved Mesh Generation to the class Chunk.
- Finished a first LOD version with chunks and approximated pixel error.
2012-06-17
Making things more usefull.
- Made the TextureSource working with some real data coming from the editor Acropora.
- Added the possibility (switched on per default) to use trilinear interpolation of the normal in TextureSource.
- Some big loading time optimizations.
- Added a CSGUnarySource as abstract parent class, CSGNegateSource is now a child class of it.
- Added a CSGScaleSource (CSGUnarySource is the parent class) which scales the given Source. Good for scaling a TextureSource to the desired size.