So far I've mainly been reading up on various literature and working on setting up the basic MFC GUI framework (more on this coming soon). As far as I can tell, the basic game plan is as follows:
Implicit Surface Formulation
- Use a relatively small number of particles to create a particle-based viscoelastic fluid simulation, tweaking the parameters (e.g. no plasticity, no stickiness) till I get something that looks reasonably like mercury - or at least something that appears to have high surface tension
- Use the particles to get an implicit (metaball) formulation of the surface - e.g. the sum of spherical gaussian functions, the center of each located at the center of the particles.
- Now, to render the implicit formulation, constrain "floater" particles to the implicit surface and use repulsion and fission to adaptively get a uniform distribution.
- Polygonize these points into a triangle mesh.
- Render the mesh in real time with OpenGL using smooth shading and environmental mapping for the reflection.
- Allow for interaction with the liquid, e.g. mouse strokes exert an external force on the particles
- Interface with the Omni haptic device to allow for applying forces and force feedback
So that's the basic plan. As you can see, there is quite a bit to do, barring any unforeseen issues. However, hopefully by sticking to a tight schedule, I will be able to accomplish most (if not all) of these goals on time.
I like your ambitious project. Have you considered using CUDA or OpenCL to run your simulation on the GPU?
ReplyDeleteAlso, why are you using MFC for the GUI? Unless you already know it really well, I would advise against it. In industry, we would never start a new project using MFC. Lots of game companies are moving to writing tools in C# with WinForms or WPF.
If you need a C++ GUI, consider using Qt or C++/CLI so you have access to the .NET GUI options.
Thanks for the support Pat!
ReplyDeleteYou echoed my sentiments from earlier in the week, I should have commented formally ... we did nip this MFC thing in the bud thankfully!
Yeah, Qt was much nicer. I'm thinking right now that using CUDA to simulate on the GPU will be a bit out of the scope of this project but it's a great idea for future work. For now, I think I want to focus on getting something to work on the CPU albeit maybe with less detail.
ReplyDelete