<<Previous Archive | Next Archive>>

How to do illustrations

Did I already mention that I would like to be able to draw? One or two times, I guess :)
Stan published a short demo how to do a nice illustration, interesting.

irrEdit 0.4 released

So now now there is one more functional free lightmap generator available in this world, I just released irrEdit 0.4. I wrote a short tutorial on light mapping with irrEdit, would be nice if you could tell me if it is helpful or not. I hope it's now again a bit easier to create free/open souce/indie games and realtime 3d scenes with that tool.
If you want to load those lightmapped scenes in Irrlicht 1.1, you might need to apply a patch included in the irrEdit download, or simply use the latest version from the SVN. In addition, a lot more has happened, but I wrote most of it down here.

There and back again

So I'm back from the mediterranean Irrlicht and Bolzplatz promotion and marketing tour. Here is a picture I took on one of the expos, it's me on the right with the bolzplatz t-shirt, next to me the expo manager, behind us the conference room.

Back in Vienna, only ~200 mails waiting in my inbox. And what a shock: I'm barely one week away and Pluto isn't a planet anymore. At least gamedev.net has announced the release of Irrlicht 1.1, three weeks late but anyway. I've also had time to read the whole iX with the article about Irrlicht in it, and also stumbled over an announcement of the product I'm working on for my employer. It's about 2% the size of the article about my hobby project in the same journal, which feels a bit strange.
BTW: Comments have been disabled last week on this blog (thanks, spammers) and are now active again, happy commenting. :)

Irrlicht in iX and good bye

There is an article about open source 3d engines in the iX, a very popular german IT journal. Crystal Space, Ogre and Irrlicht get mentioned. Hybrid was very quick and already reviewed it, here's an extract:

"Irrlicht gets pretty good results (who wonders :-) ). Remarkable points in the feature comparison (top-down from the table): free license, directX8 support, software renderer, many mesh importer, collision detection, versatile particle system, water scene node, many animation types. Things missing: Sound, exporter from 3d modelling tools (they even did not knew about the .irr format at the time writing), few shadow techniques, no Cg. The detailed report highlights the small memory footprint of Irrlicht and its speed, as well as the software renderers which make it suitable for embedded applications. The Ogre loader is explicitly named, probably due to Ogre being also part of the report. irrEdit is shortly mentioned, maybe due to the original topic on game engines (which all three aren't really).
The overall result for the two other engines is that CS is only used in academia and thus not really relevant. Ogre is used in commercial games and has good integrations into commercial 3d modellers. But the separation of several features into modules makes it more complicated to use all features, and many features are also available in Irrlicht. Moreover, Irrlicht is considered more active and with a decent potential "

irrlicht in ix

Nice to be mentioned there, and especially nice that the author apparently liked Irrlicht.

Now for something completely different: For the next week, I'm probably not going to be online or blogging, instead you'll find me on exactly this beach. :-) I hope I'm going to answer some of the remaining mails and take a look into the forum before I take off, sorry that I didn't update irrlicht.sf.net with all the new projects you've sent me, I'm doing this in 2 weeks, promised. Finally, here's a screenshot of a new feature of the lightmapper of irrEdit, which will be released when I'm back, too: The possibility of setting other meshes as light receiver and/or occluder.

Bye. :)

About Weather Gods

Here is a small hint for you, if you ever want to book a holiday: Before doing so, take a look at the weather forecasts. Not the forecasts of the country where you want to go, but the ones of the city where you live.
Imagine you've spotted one or two nice destination countries/isles and hotels, and you want to book them during the next time. If some evil weather god doesn't like you, he'll make it rain heavily during the short period between your decision and the actual booking. And during this period, all your fellow citizens will go mad because of the rain, assuming that it will never stop (or whatever), and will book out every hotel and isle you liked. Gna.

GTA Coke Style

Funny coke commercial, GTA style.

irrEdit light map generator making progress

Last week I made some progress with irrEdit, and also improved some parts of Irrlicht during this process. I enhanced the light map generator a bit, but the coolest new feature is that irrEdit is now able to save and of course reload scenes which have been created or modified by the lightmapper. Which makes it usable, finally. It was a lot of work, more than I had thought. This is a screen shot of the first created, saved and then realoaded lightmapped scene, made in irrEdit:

So what did I have to do to make all this work? First, I needed a way to write out modified meshes. I thought a bit about what file format to use, and decided to go for COLLADA, because it is quite popular currently. Irrlicht already is able to load COLLADA files and it was also easily possible to squeeze Irrlicht's materials and vertex formats into there. After some programming it worked, and the result was ok for me. Here's the proof :)

The nice side effect is now that irrEdit can export every mesh into COLLADA, which means .3ds, .obj, .b3d, ogre .mesh, .dmf, .oct, .x, .ms3d, .my3d, .csm, .lmts, .md2 and .bsp files. Cool. I also had to extend the Irrlicht COLLADA importer, to handle more than one texture coordinate set per mesh. The mesh writer isn't included in Irrlicht and will not ever, because IMO, a mesh writer has no place in a 3D rendering engine, and in this way, I can also include irrEdit specific meta data in the written meshes.
But writing COLLADA files wasn't everything I had to do, the hardest thing was the mesh file management. As you know, irrEdit is primary a scene graph editor. And the problem now is that a single mesh can be referenced more than once in a scene. Just like this:

irrEdit file management

Here, a file named 'room.3ds' has been imported, light mapped, then cloned twice and the clones again light mapped differently. As you can see on the right, irrEdit correctly created new mesh copies for every modified mesh and manages the serialization state of every file and its textures separetely and automagically if needed. This was a bit complicated to implement because I also had to track unmodified meshes and had to be aware to add the possibility of adding undo/redo functionality in irrEdit some day, but it works now.

Some features are still missing for the light mapper, but I think I'll finish them soon and release irrEdit 0.4 with the complete lightmapping tool included in about 3-4 weeks.

Network library wanted

For a very small project which I'm working on from time to time, I need a network library. I've searched the web for a fitting one, but I cannot decide which one would be best. Features I need would be:
I also thought about creating my own library, something like irrNET, but I've got a 3D library to manage already, and this would be too much time consuming. Altough it would be a lot of fun. :) I also thought about using RAKnet, but I need something really free. Ideas?

Planar mapping meshes

I'm not a 3D artist. And I have no idea how these artists are able to map a texture onto 3D geometry exactly how they want it to be. (Of course I know, but I am too stupid to get it look good). So I just added a new feature to my irrEdit development version.

Ah, that was easy. 10 lines of code. No fiddling with some external 3D software where I am to stupid to find the feature I need. :)

Irrlicht running on the PSP

Good news everybody: There is a new 3D engine available for the PSP! And it is free, although not open source. Look here. Nice, eh? What? The features listed there are looking familiar? That's right. That 'new' engine is actually Irrlicht. Simply ripped of by LTE studios, and as you can see in their API documentation they simply replaced every occurrence of 'irr' with 'engine'. Maybe to justify this, they are claiming they had to rewrite/optimize 80% of the engine code. Well, Irrlicht has about 2.5 MB of pure C++ code (just estimated, I'm blogging this not from home, don't have access to the code here), written by me and contributors over the last 5 years. So they have rewritten 2 MB (=80%) of code in 3 months? Pretty impressive. Bah.
But anyway, nice work, cool that they did it and cool that the Irrlicht code is useful for them and their users now, that's why I made Irrlicht open source :). Thanks that they are giving us the credit (the Irrlicht license does not even force that, and it looks like some evil companies even exploited this) and I hope maybe they are going to make the engine open source too. :) Keep up the good work guys, looking forward to see more of Irrlicht on PSP. :) But I think with your 'irr' to 'engine' renaming you might have some problems of getting all the good features of the currently new released Irrlicht 1.1. and future versions of Irrlicht into the LTE engine. :-/ (Picture stolen from here, hope I've not broken any law.)

How to integrate Irrlicht in a wxWidgets application

Especially since Irrlicht 1.1 and irrEdit 0.3 are released, I'm getting tons of mails asking how to integrate Irrlicht in an application written using wxWidgets, just like I did it with irrEdit. Here is a short howto:

There are two possibilities to display Irrlicht in wxWidgets.

A) Take a look at the 14th tutorial, I am showing how to use Irrlicht in a Win32 window there. This is done by creating the IrrlichtDevice with a parameter set to the HWND handle of the Win32 window. If you are using wxWidgets in Windows, you can get that HWND and simply set it. The method in wxWidgets for this is named GetHandle().

B) There is a second way which is a bit more difficult, and I am using it in irrEdit. It only works in Windows and only with the Software and Direct3D devices, and not with OpenGL, currently. The advantage of this method is that you can render into multiple windows with variable sizes, but only need one IrrlichtDevice. The method IVideoDriver::endScene() takes a windowId as parameter. Just set this to the window your want Irrlicht to render everything into (use GetHandle() again), and that's it.

Hope this helped a bit.

Irrlicht 1.1, irrEdit 0.3 out now

Hurray. Now I'm a bit tired.
(Sorry for all the mails waiting to be answered. Going to catch up on this next week.)

irrEdit Lightmapper explained

Recently I wrote a lightmapper and included it into irrEdit, the Irrlicht Editor, but I didn't release it yet because it's still a toy. Several questions arised and I'm going to answer some of them here. But first, here's a shot of the light map generator in action:

How does it work?

Simple. It generates a new mesh, with a new texture coordinate set and meshbuffers, and draws lightmap pixels onto the new textures. That's it.

How fast is it?

Quite fast. Needs about half a second for a small room with 3 point lights and shadows enabled as shown above. But I didn't test it out with huge levels and hundreds of lights yet.

Why is it that fast?

I don't know. I just wrote it. Maybe because it's still simple.

What lighting model are you using?

Simple diffuse direct lighting. Global illumination to be implemented later maybe, would be possible without a lot of changes.

How much until it is finished and usable and released?

Depends on how much work I've still to do with Irrlicht. A month, two months maybe.

Piratenpartei Österreich

Since the problems with the pirate bay in sweden the Pirate Party has become more popular in Europe, a party now existing in numerous european countries. They are trying to change laws and politics in the area of copyright, DRM, privacy and patents. It now exists in Austria as well and in two months, it might be possible to vote them into our government.
The idea behind this party is nice, and I thought about voting for them. But the problem is: I'm a software developer. And I would loose a lot of money or even my job because of this, luckily I'm not a game developer anymore, for them it would be even worse. Why? The Pirate party wants to legalize the use of private pirate copies of copyrighted material. Nice, eh?

The Big Lebowski and 911

Two online video recommendations:
- Summary of The Big Lebowski, duration about 2 minutes, you'll love it even if you don't know the film.
- Loose Change 2nd Edition, duration about 1 hour 20 minutes worth watching it. Unrolling the events of September 11th, looking behind the scenes. Shocking. Some of the stuff shown there doesn't make sense at all, but some does and it's incredible.