A terrain rendering approach (part 1)

There are several methods to create and display a terrain, in real-time. In this post, I will explain the approach I followed on the demo I’m writing for my work at Igalia. Some work is still in progress.

The terrain had to meet the following requirements:

• its size should be arbitrary
• parts outside the viewer’s field of view should be culled

Morphing test

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! ðŸ˜€

The test is here: https://bitbucket.org/eleni-hikiko/morphing and it includes an obj with a scene with 3 meshes that meet the morphing requirementsÂ  (I only used the first two meshes here).

Kinect helloworld – under construction

A few days ago I decided to write the most useless program in the world: a kinect program that makes you appear invisible… As it always happens on the Internet someone had already written it (here is his project called the “Invisible Man”:

– very inspirational!) so, I wrote the “invisible woman” that didn’t exist so far… :p Here’s a first video. The program is still under construction, I plan to change a lot of things and first of all my background texture:

Winnie: a framebuffer window system

A few weeks ago, I started a minimal window system, which performs software rendering on the linux /dev/fb0. My aim was to learn some systems programming and familiarize myself with concepts like event and device handling, memory management, window management, drawing on the framebuffer, IPC mechanisms etc (and certainly not to create a full linux window system! :)p) I call the program winnie and the code is available on github here: https://github.com/hikiko/winnie/tree/winnie.clients-as-plugins, https://github.com/hikiko/winnie and lp.

The program is not finished yet and I don’t know if I ever finish it, since I came up with new project ideas again.. Nevertheless, you can see some videos of the development stages below if you are interested (most recent first):

A virtual keyboard

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…

And here it is:

New Stellarium features

As part of the ESA Summer of Code in Space 2011 I improved Stellarium planet rendering (here is a previous post about the project).

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! ðŸ™‚