Rendering Text in WebGL

Just like OpenGL and most rendering engines that I know of, WebGL has no builtin support for text rendering. And on top of that, I can’t use the approach we use in PointLine at the moment. PointLine gets the outlines for the characters from the Windows GDI. So I was looking for something cross platform.

Searching on the internet there are two main approaches:

  1. Render the alphabet or the word in question to an image, and then use that image to texture some triangles.
  2. Trace the outlines of the characters and triangulate the polygons.

Although I prefer the second approach, I found an example of the first that looked simple enough on nehe. It was based on FreeType and for OpenGL.  I started converting it to WebGL, but it was not as easy as it looked. It makes heavy use of display lists which are not available in WebGL.

So I looked further, and found the FTGL library which is also based on FreeType. It sounded like just what I need, but for OpenGL. So, I extended the library to allow me to extract the triangles for processing in WebGL. I sent my patch to the FTGL developers and hope for inclusion.

Meanwhile I can render texts in WebGL with my modified version of FTGL …  of course it’s only so easy to do when using Wt::WGLWidget from the excellent witty library.

Here is my research prototype which now has text.

Here are the important parts of how it’s done with the modified libftgl:

Continue reading “Rendering Text in WebGL”

Is Windows 7 based on MS DOS?

Yesterday I copied an InstallAware Project on the Jenkins continuous integration server. The copy always failed to build while the original succeeded. They were really the same at this point, so WTF!!!

In the InstallAware forum I found out that the path name was getting too long. Well, yes, the name of the copied jenkins project was slightly longer and thus the resulting path had some more characters.

In the installaware forum they say that Windows still has a limit of 256 character for absolute paths. According to Wikipedia, the limitation doesn’t come from the filesystem. So it must be somewhere in the OS. Now, Microsoft told us that WindowsNT which Windows7 is based on, was no longer based on MS DOS. Were they lying? I mean, this is a 64 bit operating system with limitations from its 16 bit pre-pre-pre-pre-predecessor….

A co worker ran into the same limitation lately when trying to copy a folder structure from linux to Windows.

PointLineWeb research prototype

Google employees can spend 20% of their working time for their own projects. We at cubx (The CAD development department recently split from BORM) have now something similar. We get to spend every second friday afternoon for some projects of our own. The only restriction is that it has to do with computer graphics.

I chose a project that I had in mind for almost as long as I have been working for BORM. I wanted to run PointLine as a web service on a linux box. Wit the old core, that was so tightly tied to MFC, this would have been impossible. But the new unfinished core is designed to be platform independent. So, I took it as a base.

Some three years ago, I looked at vrml and x3d for the 3d in browser part. These standards didn’t have as broad support as I thought. You couldn’t do much without buying proprietary browser plugins. So I never made much progress on that. But then came WebGL. All mayor Browsers support it natively, and on top  of that, my favourite web application framework recently got a WebGl widget.

So far, my research prototype doesn’t do much, but I already learned a lot that I can also use in my everyday work. I gained a better understanding of rendering pipelines, learned about shaders and ray picking …

As a side project, I set up a jenkins continous integration server that compiles the project on ubuntu and windows after every commit. Additionally, I learned about CPack, so that the result of the jenkins build is a binary deb package ready to install.

You can see the web application as it progresses here:

http://webglcad.ulrichard.ch

Usually, I would also provide a link to the sources, but this is closed source, sorry…

Accepting BitCoin

As of today, we accept BitCoin as payment method for our tandem flights at paraeasy.ch

BitCoin is a decentralized online currency. It was in the news lately. While banks and politicians made it sound bad, it’s actually a great experiment. True, it has some shortcomings, but these shouldn’t bother us for the next couple of years.

If you want to learn more about BitCoin, check out these podcasts:

http://chaosradio.ccc.de/cr169.html

http://linuxoutlaws.com/podcast/215

http://chaosradio.ccc.de/cre182.html

http://www.weusecoins.com/

Convert news web page into rss feed

At the company I work (BORM), we have an internal web page with the company news. We’re required to log in and check every once in a while.

Now to get notified automatically, wehen some news are to be discovered, I hacked together a PHP script that logs in, downloads and parses the news. It then serves an rss xml file to my feed reader.

In the past I didn’t do a lot of PHP scripting. Only editing some bits and pieces. So this is my biggest endeavor to PHP.

Tested with liferea and BeyondPod.

I won’t tell you where the script can be accessed, as the company news requires login. But the script itself is here:

Continue reading “Convert news web page into rss feed”

Google Body Browser

I knew google can read my mind.

For some time now I was looking for something like GoogleEarth for human anatomy. I even thought about asking Google to make something like that.

Now I learned they did just that. They even did it as a showcase for WebGL which is part of the upcoming HTML5 standard.

Have a look at http://bodybrowser.googlelabs.com/

You will need a browser with WebGL support. At the moment the beta versions of Firefox and Chrome are known to work well.

My first Android App

Yesterday, my first Android App hit the Market. Just search for flightpred and you should find it. It should run on any device running Android 1.5 and above. The App doesn’t do a lot so far. Essentially, it downloads an xml file from the flightpred server and displays the predictions for how many kilometers it thinks are possible to fly in the next three days in some flying sites on the small screen. Later I also want to add a GoogleMapsView with the circles like on the flightpred website.

I used to develop some small projects and my diploma work in Java some ten years ago. Since then the language progressed noticeably. I especially like the templatized containers. Back in the days, the containers were not type safe and I always had to cast when accessing elements. Also, the lambda’s look good.