Irrlicht Engine
Encyclopedia
Irrlicht is an open source
3D engine
written in C++
. It is cross-platform, officially running on Windows
, Mac OS X
, Linux
and Windows CE
and due to its open nature ports to other systems are available, including Xbox
, PlayStation Portable
, SymbianOS and iPhone
.
Irrlicht is known for its small size and compatibility with new and older hardware alike, a shallow learning curve and a large friendly community. Unofficial bindings for many languages exist including .NET
, Java
, Perl
, Ruby
, Python
, FreeBASIC
, Lua, Delphi
, C++Builder, AutoIt
and even Game Maker
.
Irrlicht's development began in 2003 with only one developer, Nikolaus Gebhardt. Only after the 1.0 release of Irrlicht in 2006 the team grew to currently ten members, most of them being developers.
Irrlicht means "will-o'-the-wisp
" in German.
, DirectX
8 and 9, OpenGL ES
, and internal software rasterizers. External renderers and windowing systems plug in through simple interfaces, giving rise to community-made SDL
, iPhone
and SymbianOS devices.
The engine comes with a library of standard material renderers, allowing fallback materials where user hardware is unable to handle advanced techniques. New materials can be added to the engine at run-time, allowing users to write their own as required. In addition to legacy fixed-function pipeline materials, programmable Pixel and Vertex Shaders (1.1 to 3.0 and 4.0 using GLSL), ARB Fragment and Vertex Programs, HLSL and GLSL
materials are supported.
Irrlicht supports many file formats. It will load and display 3ds Max files, Quake 2 MD2 Models, Maya .obj objects, Quake 3 .bsp maps, Milkshape3D objects, and DirectX .x files. Additional format loaders have been written as external plugins.
Lights, cameras and 3D objects are managed as a tree of 'Scene Nodes', arbitrary groupable entities linked together in a scene graph
. These nodes are responsible for their own behaviour, but can also be managed by animators, each other, or manually by the user.
A large number of built-in node types exist and can be used together to make complex indoor and outdoor scenes. New nodes are trivial to make and can be added at runtime; many additional node types are available from the community. Node types packaged with Irrlicht include a terrain renderer and sky domes/boxes for outdoor rendering, BSP
s for indoor rendering, bone based animated meshes, stencil shadows, billboards and particle systems, water surfaces and primitives.
A skinnable
2D GUI
is available, supporting many controls and the ability for users to plug in their own (or community made) custom widgets at runtime. Irrlicht's internal event system provides mouse, keyboard, joystick and GUI events without having to rely on additional libraries.
Filesystem access is abstracted allowing platform-independent file and folder access, and transparent access to files within Zip
archives. Other IO features include an XML reader and writer, the ability to take screenshots, manipulate images and meshes and then save them in several different file formats.
Irrlicht's provides support for simple collision detection including mouse picking, but users are advised that this is not intended as a replacement for a full featured physics engine
.
world editor, developed by Nikolaus Gebhardt and other members of the company Ambiera. IrrEdit contains a radiosity lightmap
generator and a scripting interface using Squirrel scripts. Another newly-risen world editor is Sourena 3D World Editor and is at version 0.2 as of May 2010.
Since Irrlicht does not support sound by itself, Ambiera has also developed irrKlang, an audio library with an API similar to Irrlicht. Being developed by the same group, irrEdit supports the use of sounds in levels made by irrEdit for use with irrKlang-enabled compiled DLLs. Also among Ambiera's creations is irrXML, Irrlicht's XML parser.
Many physics libraries have had plugins and wrappers written for Irrlicht, including Nvidia
PhysX
, Bullet
, and Open Dynamics Engine
.
More extensions can be found in the Irrlicht forums and in the irrExt project, a side-project of Irrlicht for special purpose add-ons.
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...
3D engine
Game engine
A game engine is a system designed for the creation and development of video games. There are many game engines that are designed to work on video game consoles and personal computers...
written in C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...
. It is cross-platform, officially running on Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...
, Mac OS X
Mac OS X
Mac OS X is a series of Unix-based operating systems and graphical user interfaces developed, marketed, and sold by Apple Inc. Since 2002, has been included with all new Macintosh computer systems...
, Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...
and Windows CE
Windows CE
Microsoft Windows CE is an operating system developed by Microsoft for embedded systems. Windows CE is a distinct operating system and kernel, rather than a trimmed-down version of desktop Windows...
and due to its open nature ports to other systems are available, including Xbox
Xbox
The Xbox is a sixth-generation video game console manufactured by Microsoft. It was released on November 15, 2001 in North America, February 22, 2002 in Japan, and March 14, 2002 in Australia and Europe and is the predecessor to the Xbox 360. It was Microsoft's first foray into the gaming console...
, PlayStation Portable
PlayStation Portable
The is a handheld game console manufactured and marketed by Sony Corporation Development of the console was announced during E3 2003, and it was unveiled on , 2004, at a Sony press conference before E3 2004...
, SymbianOS and iPhone
IPhone
The iPhone is a line of Internet and multimedia-enabled smartphones marketed by Apple Inc. The first iPhone was unveiled by Steve Jobs, then CEO of Apple, on January 9, 2007, and released on June 29, 2007...
.
Irrlicht is known for its small size and compatibility with new and older hardware alike, a shallow learning curve and a large friendly community. Unofficial bindings for many languages exist including .NET
.NET Framework
The .NET Framework is a software framework that runs primarily on Microsoft Windows. It includes a large library and supports several programming languages which allows language interoperability...
, Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...
, Perl
Perl
Perl is a high-level, general-purpose, interpreted, dynamic programming language. Perl was originally developed by Larry Wall in 1987 as a general-purpose Unix scripting language to make report processing easier. Since then, it has undergone many changes and revisions and become widely popular...
, Ruby
Ruby (programming language)
Ruby is a dynamic, reflective, general-purpose object-oriented programming language that combines syntax inspired by Perl with Smalltalk-like features. Ruby originated in Japan during the mid-1990s and was first developed and designed by Yukihiro "Matz" Matsumoto...
, Python
Python (programming language)
Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...
, FreeBASIC
FreeBASIC
FreeBASIC is a free/open source , 32-bit BASIC compiler for Microsoft Windows, protected-mode DOS , Linux, FreeBSD and Xbox....
, Lua, Delphi
Delphi
Delphi is both an archaeological site and a modern town in Greece on the south-western spur of Mount Parnassus in the valley of Phocis.In Greek mythology, Delphi was the site of the Delphic oracle, the most important oracle in the classical Greek world, and a major site for the worship of the god...
, C++Builder, AutoIt
AutoIt
AutoIt is a freeware automation language for Microsoft Windows. In its earliest release, the software was primarily intended to create automation scripts for Microsoft Windows programs but has since grown to include enhancements in both programming language design and overall functionality.With...
and even Game Maker
Game Maker
GameMaker is a Windows and Mac IDE originally developed by Mark Overmars in the Delphi programming language. It is currently developed and published by YoYo Games, a software company in which Overmars is involved...
.
Irrlicht's development began in 2003 with only one developer, Nikolaus Gebhardt. Only after the 1.0 release of Irrlicht in 2006 the team grew to currently ten members, most of them being developers.
Irrlicht means "will-o'-the-wisp
Will-o'-the-wisp
A will-o'-the-wisp or ignis fatuus , also called a "will-o'-wisp", "jack-o'-lantern" , "hinkypunk", "corpse candle", "ghost-light", "spook-light", "fairy light", "friar's lantern", "hobby lantern", "ghost orb", or simply "wisp", is a ghostly light or lights sometimes seen at night or twilight over...
" in German.
Features
Irrlicht supports 3D rendering via OpenGLOpenGL
OpenGL is a standard specification defining a cross-language, cross-platform API for writing applications that produce 2D and 3D computer graphics. The interface consists of over 250 different function calls which can be used to draw complex three-dimensional scenes from simple primitives. OpenGL...
, DirectX
DirectX
Microsoft DirectX is a collection of application programming interfaces for handling tasks related to multimedia, especially game programming and video, on Microsoft platforms. Originally, the names of these APIs all began with Direct, such as Direct3D, DirectDraw, DirectMusic, DirectPlay,...
8 and 9, OpenGL ES
OpenGL ES
OpenGL for Embedded Systems is a subset of the OpenGL 3D graphics application programming interface designed for embedded systems such as mobile phones, PDAs, and video game consoles. OpenGL ES is managed by the not-for-profit technology consortium, the Khronos Group, Inc.- Versions :Several...
, and internal software rasterizers. External renderers and windowing systems plug in through simple interfaces, giving rise to community-made SDL
Simple DirectMedia Layer
Simple DirectMedia Layer is a cross-platform, free and open source multimedia library written in C that presents a simple interface to various platforms' graphics, sound, and input devices....
, iPhone
IPhone
The iPhone is a line of Internet and multimedia-enabled smartphones marketed by Apple Inc. The first iPhone was unveiled by Steve Jobs, then CEO of Apple, on January 9, 2007, and released on June 29, 2007...
and SymbianOS devices.
The engine comes with a library of standard material renderers, allowing fallback materials where user hardware is unable to handle advanced techniques. New materials can be added to the engine at run-time, allowing users to write their own as required. In addition to legacy fixed-function pipeline materials, programmable Pixel and Vertex Shaders (1.1 to 3.0 and 4.0 using GLSL), ARB Fragment and Vertex Programs, HLSL and GLSL
GLSL
OpenGL Shading Language , is a high-level shading language based on the syntax of the C programming language...
materials are supported.
Irrlicht supports many file formats. It will load and display 3ds Max files, Quake 2 MD2 Models, Maya .obj objects, Quake 3 .bsp maps, Milkshape3D objects, and DirectX .x files. Additional format loaders have been written as external plugins.
Lights, cameras and 3D objects are managed as a tree of 'Scene Nodes', arbitrary groupable entities linked together in a scene graph
Scene graph
A scene graph is a general data structure commonly used by vector-based graphics editing applications and modern computer games. Examples of such programs include Acrobat 3D, Adobe Illustrator, AutoCAD, CorelDRAW, OpenSceneGraph, OpenSG, VRML97, and X3D....
. These nodes are responsible for their own behaviour, but can also be managed by animators, each other, or manually by the user.
A large number of built-in node types exist and can be used together to make complex indoor and outdoor scenes. New nodes are trivial to make and can be added at runtime; many additional node types are available from the community. Node types packaged with Irrlicht include a terrain renderer and sky domes/boxes for outdoor rendering, BSP
Binary space partitioning
In computer science, binary space partitioning is a method for recursively subdividing a space into convex sets by hyperplanes. This subdivision gives rise to a representation of the scene by means of a tree data structure known as a BSP tree.Originally, this approach was proposed in 3D computer...
s for indoor rendering, bone based animated meshes, stencil shadows, billboards and particle systems, water surfaces and primitives.
A skinnable
Skin (computing)
In computing, a skin is a custom graphical appearance achieved by the use of a graphical user interface that can be applied to specific software and websites to suit the purpose, topic, or tastes of different users....
2D GUI
Gui
Gui or guee is a generic term to refer to grilled dishes in Korean cuisine. These most commonly have meat or fish as their primary ingredient, but may in some cases also comprise grilled vegetables or other vegetarian ingredients. The term derives from the verb, "gupda" in Korean, which literally...
is available, supporting many controls and the ability for users to plug in their own (or community made) custom widgets at runtime. Irrlicht's internal event system provides mouse, keyboard, joystick and GUI events without having to rely on additional libraries.
Filesystem access is abstracted allowing platform-independent file and folder access, and transparent access to files within Zip
ZIP (file format)
Zip is a file format used for data compression and archiving. A zip file contains one or more files that have been compressed, to reduce file size, or stored as is...
archives. Other IO features include an XML reader and writer, the ability to take screenshots, manipulate images and meshes and then save them in several different file formats.
Irrlicht's provides support for simple collision detection including mouse picking, but users are advised that this is not intended as a replacement for a full featured physics engine
Physics engine
A physics engine is computer software that provides an approximate simulation of certain physical systems, such as rigid body dynamics , soft body dynamics, and fluid dynamics, of use in the domains of computer graphics, video games and film. Their main uses are in video games , in which case the...
.
Engine extensions
Irrlicht was designed to be able to load and save the current scene to an XML file; this combined with the engine's open-source licensing model has attracted various programmers and developers to create world editors for Irrlicht to simplify the world-creation process. One such example is the irrEditIrrEdit
irrEdit is a freeware world editor created by Ambiera. It is designed to allow easy editing of Irrlicht Engine XML-Based level files, and is the official editor for the Irrlicht game engine, used to allow users of the Irrlicht engine to have a more highly supported file format...
world editor, developed by Nikolaus Gebhardt and other members of the company Ambiera. IrrEdit contains a radiosity lightmap
Lightmap
A lightmap is a data structure which contains the brightness of surfaces in 3d graphics applications such as video games. Lightmaps are precomputed and used for static objects. Quake was the first computer game to use lightmaps to augment rendering. Before lightmaps were invented, realtime...
generator and a scripting interface using Squirrel scripts. Another newly-risen world editor is Sourena 3D World Editor and is at version 0.2 as of May 2010.
Since Irrlicht does not support sound by itself, Ambiera has also developed irrKlang, an audio library with an API similar to Irrlicht. Being developed by the same group, irrEdit supports the use of sounds in levels made by irrEdit for use with irrKlang-enabled compiled DLLs. Also among Ambiera's creations is irrXML, Irrlicht's XML parser.
Many physics libraries have had plugins and wrappers written for Irrlicht, including Nvidia
NVIDIA
Nvidia is an American global technology company based in Santa Clara, California. Nvidia is best known for its graphics processors . Nvidia and chief rival AMD Graphics Techonologies have dominated the high performance GPU market, pushing other manufacturers to smaller, niche roles...
PhysX
PhysX
PhysX is a proprietary realtime physics engine middleware SDK developed by Ageia with the purchase of ETH Zurich spin-off NovodeX in 2004...
, Bullet
Bullet (software)
Bullet is an open source physics engine featuring 3D collision detection, soft body dynamics, and rigid body dynamics. It is used in games, and in visual effects in movies. The Bullet physics library is published under the zlib license. Erwin Coumans, its main author, worked for Sony Computer...
, and Open Dynamics Engine
Open Dynamics Engine
The Open Dynamics Engine is a physics engine in C/C++. Its two main components are a rigid body dynamics simulation engine and a collision detection engine...
.
More extensions can be found in the Irrlicht forums and in the irrExt project, a side-project of Irrlicht for special purpose add-ons.
See also
- OGREOGREOGRE is a scene-oriented, flexible 3D rendering engine written in C++ designed to make it easier and intuitive for developers to produce applications utilizing hardware-accelerated 3D graphics...
- OpenSceneGraphOpenSceneGraphOpenSceneGraph is an open source 3D graphics application programming interface, used by application developers in fields such as visual simulation, computer games, virtual reality, scientific visualization and modeling....
- Delta3DDelta3dDelta3D is an Open Source Software gaming/simulation engine API. Primarily managed and supported by the Modeling, Virtual Environments, and Simulation Institute at the Naval Postgraduate School in Monterey, California. Alion Science has also been a major contributor to enhancements and...
- CrystalSpace
- Visualization LibraryVisualization LibraryVisualization Library is an open source C++ middleware for 2D/3D graphics applications based on OpenGL 4, designed to develop portable applications for the Microsoft Windows, GNU/Linux/X11 and Mac OS X operating systems.-Design goals:...
External links
- Author's blog
- Irrlicht Engine Wiki at irrlicht3d.org
- DevMaster.net details and reviews of Irrlicht
- German Computer Magazine reviewed Irrlicht
- South African Game Development talking about Irrlicht
- An article series on using Irrlicht with Java
- Irrlicht in Linux Journal, April 2009
- A modified texture file used in Irrlicht sample program
- Irrlicht:The art of using GRASP patterns