So far, I hadn’t try to morph 3D objects to other 3D objects and I thought it’s something tricky to do. Today, I realized how simple and easy it is when I wrote this small test:
If you carefully choose the 3D models to have the same number of polygons, and to meet a few topological requirements, then you only need to interpolate the values of the meshes’ vectors, normals (and materials, textures, whatever you need) and draw the intermediate mesh every time. As interpolation parameter you can choose the values of a positive function that varies from 0 to 1 and backwards (I used (sin(msecs/factor) + 1)/2) to have that continuously changing effect. And that’s all!
Some days ago I came up with the idea of a keyboard that can be used without having to type the letters. The user just stands in front of a camera and scrolls the letters by moving his head or hands to the appropriate direction…
More specifically, the following features were added:
1) Procedural perlin noise (fBm) clouds.
2) Bump mapping with normal maps.
The improved rendering code is implemented with GLSL shaders, and requires shader model 3.0 capable graphics hardware.
Here is a video that shows the effects… (Unfortunately not the best quality video since gtk-recordmydesktop was not the best choice for recording!) Anyway, you can see the bump mapping and the clouds! 🙂
Many thanks to the Stellarium development team and the ESA SOCIS organization team for giving me the opportunity to participate in the project! 🙂
Here are some screenshots of the new planet rendering in the Stellarium software, implemented as part of the European Space Agency Summer of Code in Space. I implemented a bump mapping algorithm (using normal maps) in GLSL shaders and I integrated it into the Stellarium application (C++). The planets are ellipsoids. There are still many different things to be done for further improving the project, these are just some samples.
(Many thanks to my mentor Fabien Chéreau and the Stellarium development team for giving me the opportunity to participate in the ESA SOCIS, as well as to the organizers of the summer of code!!)*
Screenshots of the moon at night:
Screenshots of the moon when there’s still daylight:
A very simplistic snakeball game (not yet complete) I made for fun using C++, OpenGL and OpenCV 🙂
In the video I use a flashlight to move the cursor and collect the balls that appear at random positions. I track the flashlight by locating the largest and brightest blob on each frame and calculating the center of its bounding rectangle.