Irrlicht 3D stuff


Some stuff related to the Irrlicht 3D engine.
Take a look at H-Craft Championship - a game done with the Irrlicht engine: www.irrgheist.com.
If you want to hire me as freelancer - I'm always very happy when I get Irrlicht related projects :-)




Last edit: 25.nov.2010
Free models (maybe more to come)
Last edit: 2009/02/14

I'm no modeler, but it's good enough for testing ;-) No restrictions whatever for usage, but I wouldn't like it if you would claim it to be your own stuff or if you try to sell it somewhere without changes. I like to hear feedback, especially about stuff I can improve. I might (no guarantee) release any improvements, additional textures and changes others make and send me at this place. Well, as long as you don't put restrictions on it.

easy_room
Based on my own rooms. Textures are mostly based on www.cgtextures.com and some small ones just from browsing google until I found something which looked good enough to use. The .zip should contain (hopefully) all Blender files as well as an .obj usable directly in Irrlicht. No restrictions from my side from using it in any way you like.
easy_room easy_room.zip

adam
My first human model. Everything is made from scratch. Unfortunately it sometimes shows, especially for the animations. Exported as b3d files. adam_base.b3d contains the mesh in a T-Pose and all adam_ani*.b3d files contain only animation data. adam_ani.blend contains the current blender file and adam_mirrormod.blend contains the last mesh which still has the mirror modifier applied.
adam_idle adam090214.zip



Scripts
Last edit: 2009/12/29

b3d_export.patch is a patch for the blender b3d exporter from gandalf found on http://www.gandaldf.com The page seems to be down currently, I hope he will put it online again soon ... until then you can get the already patched script from me: b3d_export.py (patched)
My patch added two changes:
First it allows to export animations additionally from first to last frame (previously the current settings of the timeline had always been used). The second change allows to enable/disable exporting of specific b3d nodes. So to export without animations you can disable "Animation Nodes" and to export only animations you can disable "Texture Nodes", "Brush Nodes" and "Mesh Nodes". So this allows to export base-mesh and animations separately.
b3d_export.patch (for B3D_Exporter_2.06, you don't need it if you downloaded the version from my page)


Last edit: 2007/4/26
Irrlicht engine version used in H-Craft Championship: irrlicht_hcraft_v1_2.tar.gz.
I'm using an engineversion with minor modifications. I do always try to get the changes which are 'OK' back in the original engine and recommend using that one. Sometimes it might also happen that code which is put online here, is also already included in the engine. I've put our version online for those who are interested. It's a wild mix of patches, minor improvements, ugly hacks, does mix irrlicht version 0.14 up to current svn versions and includes also some things from spintz (mainly the VBO's). To my knowledge the major changes to irrlicht are currently:
- Includes a profiler
- A lot of minor GUI changes, but the GUI system in Irrlicht 1.3 is way better now.
- Vertex Buffer Objects (OpenGL only)
- DDS (compressed textures) support (OpenGL only)
- Some fixes to get smooth .x Animations
- Some changes to get some more comfort in the filesystem (but careful - those changes need also changes in textureloading!)
- I only cared about OpenGL, so DirectX is not guaranteed to run
- And a lot of minor stuff


Last edit: 2007/4/26
Some codes and articles in the irrlichtforum which might be of interest:
- Doing internationalization with irrlicht for Cyrillic
- Code for a very small Space Invaders done in Irrlicht as part of the Newyears challenge 2006/2007
- A simple speed profiler which works with irrlicht


Last edit: 2010/01/22
Truetypefonts from zgock from this post.
My version contains a few bugfixes (mostly for memory leaks, but also for font-height) and is adapted to a newer Irrlicht version.
To get it working you also need to link freetype (http://www.freetype.org/) to your project. I tested it with freetype 2.3.5.
gui_freetype_font.cpp
gui_freetype_font.h

For more comfort I have created two more classes. The simpler one is a fontmanager which you can just drop in your project and it will make the memory-management for the fonts easier.
font_manager.cpp
font_manager.h

If you also need serialization (loading and saving the gui-elements together with fonts) the fontmanager won't be enough. To do that we need a fontfactory. That is not supported so far in Irrlicht so you will have to patch Irrlicht itself when you need that (there are reasons why this patch isn't yet in Irrlicht). Once you have patched Irrlicht you can use the the factory, which looks and works rather similar to the fontmanager.
font_factory.patch(for svn 2407 older versions can be found in my older patch series)
gui_font_factory.cpp
gui_font_factory.h


Last edit: 2007/4/9
COctTreeSceneNodeTriangleSelector does use the octree which is already available when creating an COctTreeSceneNode. Usually that octree is only used for rendering the scenenode, but with my class it can also be used for the triangle selector. The reason for this was that creating COctTreeTriangleSelector, which is usually used, takes a very long time for complex models. I had also to make some changes in COctTreeSceneNode so i put those files here also. Then engineversion i use myself is currently a mix of Irrlicht 0.14 to Irrlicht 1.2 and svn so i can't guarantee that this code will run. But chances are high that it will work if you copy those files in irrlicht svn or 1.1 sources and add the COctTreeSceneNodeTriangleSelector files to the irrlicht project. But you should backup of the old COctTreeSceneNode sources before!
COctTreeSceneNode.cpp
COctTreeSceneNode.h
COctTreeSceneNodeTriangleSelector.cpp
COctTreeSceneNodeTriangleSelector.h


Last edit: 2010/01/17
A simple stringtable implementation. It needs tinyXml to work.
string_table_simple.cpp
string_table_simple.h


Last edit: 2010/01/17
A more complex stringtable implementation that supports strings with parameters. It also needs tinyXml to work.
Additionally it needs a few more files, I hope I didn't forget any.
string_table.cpp
string_table.h
globals.h
helper_str.cpp
helper_str.h
convert_utf.h
convert_utf.c


Last edit: 2007/8/3
Sometimes you need more than one timer in your game. For example you have often one global timer which runs always, while you mostly also need a game-timer which must be paused while your game is in pause-mode. That's why i made a wrapper around the irrlicht timer. You can create several instances of this timer class. You need to call Tick() for each instance regularly.
timer.cpp
timer.h


Last edit: 2009/9/23
Lightmaps from Maya to Irrlicht.
There are a few ways to create and import lightmaps in irrlicht, but none of those worked for us (Btw. if you don't know what lightmaps are check it here). What we did was to create the lightmaps in the modeller and export the scene as .obj files once with the lightmap texture and once as the usual scene. I wrote a small tool to merge those two .obj files (resulting in a file called .lmo) and modified the .obj loader so it can work with those .lmo files.

Converter for obj to lmo:
Compile with g++ obj2lmo.cpp -o obj2lmo
Call it as follows: obj2lmo yourmap.obj yourlightmap.obj texture_lightmap.tga and it will create a file called yourmap.lmo
obj2lmo.cpp

You can just add the lmo loader by adding the files to your project and calling sceneManager->addExternalMeshLoader for it. You will also need to add fast_atof.h to the project which can be found in the irrlicht sources.
CLMOMeshFileLoader.cpp
CLMOMeshFileLoader.h