Best engine for my project?

If you are a new Irrlicht Engine user, and have a newbie-question, this is the forum for you. You may also post general programming questions here.
Post Reply
primem0ver
Posts: 57
Joined: Sat Oct 11, 2014 11:07 pm

Best engine for my project?

Post by primem0ver »

I asked this exact same question in the Ogre forums. I am trying to decide between ogre and irrlicht. I would also be open to a commercial engine that allows low level access and does NOT charge extreme royalty fees. (Charges a flat rate for example). I am leaning towards ogre because this is a large, long term project that will involve some upkeep and a lot of post-development development (because new material will be created on a regular basis). So the reason I lean towards ogre is because I have heard that it is easier to maintain. There is one big problem with ogre though. And that is that #3 doesn't seem possible (see list below). SO... the main question I want to ask THIS forum in addition to what they think of my requirements (and how irrlicht will meet them) is WHY is ogre more maintainable? Is it because of its use of config files? If I were to use irrlicht, could I overcome this maintainability problem? (by writing my own configuration classes in my program for example?) Or is it more complicated than that?

Here is my list of requirements:
  1. The most important aspect of my project is that it will not normally be run in full-screen mode. The project is based on the Qt GUI framework and will use a Qt widget to host the drawing surface. This means that the drawing surface must be sizeable to any dimension. I really could not figure out how to do this when I first tried Ogre3D out and so I am wondering if this is possible. The only modes it seemed I could choose from were standard resolution surfaces.
  2. The project must be portable to Windows, Android, Linux, and possibly even Mac and iOS. I also prefer to support both DirectX and OpenGL (Yes... I know this is all possible with this engine).
  3. I do not know much about shaders at this point in time and do not really want to have to understand them in order to get certain lighting features to work that I could easily do in DirectX but don't seem possible in this engine (as far as I have been able to look). I need to be able to have a directional light source whose angle changes for every item drawn in a scene (to simulate for example the lighting of objects moving around a large light source).
  4. I need to be able to easily define my own meshes mathematically using several algorithms, one of which I custom made in a DirectX application based on a specific spherical grid system (ISEA... for more info/details see http://www.pyxisinnovation.com/pyxwiki/ ... gonal_Grid and http://cs.sou.edu/~sahrk/dgg/pubs/gdggs03.pdf). The meshes involved must support both colored and multiple texture vertices, all with normals. These meshes must be easily optimized using custom fan and strip rendering. I am not saying that the optimization methods will be easy (indeed... this will be very complex)... but I must be able to specify how the object is to be rendered without using some obscure, hard-to-find or complex to implement method.
  5. I need to be able to accurately and completely import 3d art work created on various tools (most likely Blender, 3DSMax, and/or Maya). I know that there are converters out there but how up to date do these tend to be? And do they do the job well?
  6. Quick and easy screen coordinate-to 3d world ray-tracing is a must. Yes I know that I must provide/program the algorithm myself but I need to know that there is a way to do this between qt screen coordinates and ogre's 3d system.
  7. I need to be able to draw 2D objects within the 3D space. Shapes in a plane that are in the picture and text that overlays the scene. It would be nice to have some sort of interface engine too.
    A physics system will not be necessary early on but complete interaction with the 3d objects will be necessary. Eventually I need to be able to develop or find a physics engine.
  8. I must be able to integrate it with sound, video clips, scripting (most likely LUA), and even force feedback devices (eventually).
  9. And finally, this project is a very large undertaking with many different graphics and "gaming" demands depending on who is using the system. It must be able to work on lower end computers and tablets, even if that means downgrading the rendering some, depending on the machine. It will NOT be used on phones (too small of an interface).
As I have said above, I am now wondering if I will be better off with irrlicht... at least until I or someone I work with in the future can do shaders because of issue #3. Ogre has ways to meet all the rest of the criteria. However, Ogre doesn't seem to have a way to handle lighting in the scene because rendering is done internally. (As far as I know there is no equivalent to begin and end scene in Ogre where the scene is drawn by the programmer and lighting changes can be made per object while the scene is drawn). I cannot use a point light because a point light does not properly simulate a LARGE light source (like a sun shining on planets in orbit for example.. a point light will leave part of the half facing the light in shadow). But the toss up is between that and maintainability. Must I trade? Can I overcome this problem in Ogre (probably better answered by them... but they have yet to do that so I am assuming it may not be...)? Or is their a way to overcome the maintainability issue in irrlicht?

ALSO: are their nice plugins to irrlicht like their are for ogre?
hendu
Posts: 2600
Joined: Sat Dec 18, 2010 12:53 pm

Re: Best engine for my project?

Post by hendu »

Yes, irr fits all that. You can do #3 without shaders by using a light manager, its OnNodePreRender is called before each node.

Can't answer what you mean by maintainability, you need to be more elaborate on that.
CuteAlien
Admin
Posts: 9734
Joined: Mon Mar 06, 2006 2:25 pm
Location: Tübingen, Germany
Contact:

Re: Best engine for my project?

Post by CuteAlien »

1. Possible but expect some work to get it running on several platforms. I know people do that on Windows, but I remember also several posts about problems doing that in X11.
2. Possible, but again nothing in life is free - multiplatform will always have a few problems (from experience I'd say Windows/Linux is relatively easy while mobile platforms can be hell - it's harder to get stuff running well on different Android devices than getting it to run on different PC operating systems).
3. Lighting is possible, Shadows are more tricky. On mobile platforms you probably won't get around using shaders (in theory you can use fixed function pipeline there as well, but for speed reasons you have to optimize things like lights a lot and that needs shaders). If you want good shadows you will need shaders.
4. You can define your own meshes. Irrlicht supports currently 3 vertex types, see http://irrlicht.sourceforge.net/docu/_s ... ource.html
5. That's pretty much impossible as those tools can do way more things than realtime engines. There isn't even a format that allows losless exchange of all model information between those tools with all features. Figuring out an export/import pipeline that works for the specific features you need is always part of developing a 3d application. Irrlicht offers support for several formats. If those are not sufficient you can write your own importer (or extent an existing one).
6. See http://irrlicht.sourceforge.net/docu/cl ... nager.html
7. Irrlicht has a GUI system and it has scenenodes to draw text inside a 3d scene
8. Integrating can always be done, but Irrlicht just cares about 3D. If you want to integrate it with other tools you have to do so (well, for some stuff you might find out others did it already when you search around the forum)
9. Not so much an engine thing as something the application developer has to do (and he/she can use any engine for that).

Don't know what you mean with maintainability. Ogre has more maintainers (10 times as many developers as Irrlicht currently), so it's having more features. Irrlicht is simpler, so personally I find it easier to extent it myself and adapt it to my projects. For a big project (where you have a team of artists etc) I might consider using Ogre, for my usual 1-2 man team projects I find Irrlicht offers enough features for me and I find it easier to use (then again I used Irrlicht far more often than Ogre so I just know it better).
IRC: #irrlicht on irc.libera.chat
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
Post Reply