Best engine for my project?

Anything and everything that's related to OGRE or the wider graphics field that doesn't fit into the other forums.
Post Reply
primem0ver
Gnoblar
Posts: 10
Joined: Fri Mar 22, 2013 8:28 am

Best engine for my project?

Post by primem0ver »

Hello all. I have been trying to decide between Ogre and Irrlicht for a graphics engine. Even a commercial engine would be acceptable as long as it didn't have a ridiculous (or even significant) royalty requirement. I have done some reading on various forums that debate this question and I am leaning towards Ogre because I have heard that in the long run it is easier to maintain for large projects (which this is). However... I have some specific requirements that I am uncertain if Ogre can accommodate and some of these I had a real problem overcoming when I tried it out over a year ago. I thought I would post my requirements here so that I can get peoples thoughts/feedback.
  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 see this brief summary and this journal article). 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).
Your feedback will be very much appreciated!
AgentC
Kobold
Posts: 33
Joined: Tue Apr 24, 2012 11:24 am
x 5

Re: Best engine for my project?

Post by AgentC »

Regardless of what 3D graphics engine you end up using, the combination of Qt and mobile rings alarm bells. Qt is a huge (for a mobile device) set of libraries, and on Android it is typically deployed by the Ministro application, which downloads the libraries from the internet and installs them globally on the device for any Qt-using application. This may lead into a poor install experience and negative reviews by users.

If your application will only be used by professionals who know what they're getting, then this isn't much of an issue. On the other hand, if your project is kind of an "engine" and professionals will use it to create user-deployable applications, and these applications should be slim and quick to install, then it (again) is an issue.
User avatar
spacegaier
OGRE Team Member
OGRE Team Member
Posts: 4304
Joined: Mon Feb 04, 2008 2:02 pm
Location: Germany
x 135
Contact:

Re: Best engine for my project?

Post by spacegaier »

Had the same initial reaction with Qt + mobile as the poster before me.

Given that I don't have time right now to cover all points: You might want to have a look at Ogitor, which is an Ogre editor using Qt as the GUI library. So this integration is not a problem.
Ogre Admin [Admin, Dev, PR, Finance, Wiki, etc.] | BasicOgreFramework | AdvancedOgreFramework
Don't know what to do in your spare time? Help the Ogre wiki grow! Or squash a bug...
User avatar
Kojack
OGRE Moderator
OGRE Moderator
Posts: 7157
Joined: Sun Jan 25, 2004 7:35 am
Location: Brisbane, Australia
x 534

Re: Best engine for my project?

Post by Kojack »

primem0ver wrote:
  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.
I don't know about QT, but in general use you can choose a manual resolution of any value you want by doing this line before calling root->initialise():
m_root->getRenderSystem()->setConfigOption("Video Mode", "222 x 111 @ 32-bit colour");

It's for QT4, but here's an example of putting Ogre into a QT widget: http://www.ogre3d.org/tikiwiki/tiki-ind ... e=Cookbook
It reads the widget's resolution, sets ogre's res to the same (using my line above), inits ogre's root without making an automatic window, then creates a manual window that attaches to the QT widget.
primem0ver wrote:[*]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).
I'm not sure I see what you are trying to do with using directional lights to simulate moving around a light instead of just using a point light.
It's easy to do in shaders though. Or off the top of my head you could use something like the MovableObject::Listener's objectRendering callback to change the light (haven't tried that myself).
primem0ver wrote:[*]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 see this brief summary and this journal article). 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.
There are multiple ways to make geometry in Ogre. The easiest way for procedural meshes is the ManualObject class. It gives an easy opengl inspired interface to defining vertex and index data. It supports triangle lists, fans, strips as well as lines and points. Colours, texture coords and normals are supported too.
primem0ver wrote:[*]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?
That's not really possible (the "accurately and completely" part). Ogre is a real time 3d engine. Programs like Max/Blender/Maya do things that aren't easily possible in real time (which is why their editing interface doesn't look as good as rendered output, and rendering can take hours). Things like complex materials can't be easily ported to a realtime engine (Unity, Unreal, Ogre, whatever) without emulating the entire modeller's pipeline. There's other limits like the number of bones is usually limited in real time (in directx 9 it's 256, with 4 bone indices per vertex) while modellers aren't limited.
That said, Ogre's exporters do a good job of most of it. Materials and shaders are harder, but animation and geometry is typically good. You still need to model for real time use, that can't be avoided no matter what exporter you use. (I've had Unity handle loading of a max file badly while Ogre's EasyOgre exporter did fine).
primem0ver wrote:[*]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.
camera->getCameraToViewportRay(x,y);
This converts screen coordinates to a world ray.
primem0ver wrote:[*]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.
You can tell renderables like the ManualObject class to use uniform view and projection transforms. This makes them exist in screen space, good for drawing 2d stuff. Ogre's Overlay subsystem can do text rendering on the screen, or there's a ton of GUI libraries available (CEGUI, MyGUI, QUickGUI, Gorilla, LibRocket, Noesis, etc).
primem0ver wrote: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.
[*] I must be able to integrate it with sound, video clips, scripting (most likely LUA), and even force feedback devices (eventually).
Sound, scripting, force feedback and physics aren't directly related to Ogre, you can use whatever you want. Some libraries have Ogre wrappers (for things like physics) but I prefer doing that manually, it's pretty easy.
primem0ver
Gnoblar
Posts: 10
Joined: Fri Mar 22, 2013 8:28 am

Re: Best engine for my project?

Post by primem0ver »

Thanks for the feedback. Let me address your suggestions/advice...
AgentC wrote:Regardless of what 3D graphics engine you end up using, the combination of Qt and mobile rings alarm bells. Qt is a huge (for a mobile device) set of libraries, and on Android it is typically deployed by the Ministro application, which downloads the libraries from the internet and installs them globally on the device for any Qt-using application. This may lead into a poor install experience and negative reviews by users.

If your application will only be used by professionals who know what they're getting, then this isn't much of an issue. On the other hand, if your project is kind of an "engine" and professionals will use it to create user-deployable applications, and these applications should be slim and quick to install, then it (again) is an issue.
Yeah... this is a big hopeful. I really need to be able to port it using a multi-faceted platform independent library. I will be porting to Apple products too if they are willing to deal with my refusal to pay their developing fees (Why they charge developers money for their sdk is beyond me. Not even Microsoft does that.). The application will be fairly large for a mobile device but hopefully there is a way around this issue. As I said earlier, this application will not be available for phones. But the industry it is being developed for has a good number of tablet users.

Thanks Kojak for your feedback and especially your "getting started" tips. I can explain an issue you were wondering about:
Kojak wrote:I'm not sure I see what you are trying to do with using directional lights to simulate moving around a light instead of just using a point light.
It's easy to do in shaders though. Or off the top of my head you could use something like the MovableObject::Listener's objectRendering callback to change the light (haven't tried that myself).
If you haven't guessed by now, this project requires astronomical and some geological modelling. I have already tried using point lighting in DirectX because using a single light was the most direct approach since I didn't originally think of changing the direction of a directional light. Unfortunately using a point source for a star does not adequately light the planets since I need to light exactly half of any sphere in the scene no matter where it is located. By nature, a point light casts part of the half in shadow. I also used several points positioned in a sphere but that had weird effects on the sun object itself. So in my DirectX app, I finally resorted to changing the angle of the directional lighting when drawing a specific object.

I also need to be able to turn lighting on and off for certain types of objects as well as changing light sources. Comets for example will be dark when too far from a star and fully lit when close.
frostbyte
Orc Shaman
Posts: 737
Joined: Fri May 31, 2013 2:28 am
x 65

Re: Best engine for my project?

Post by frostbyte »

I have been trying to decide between Ogre and Irrlicht for a graphics engine
well, dont expect people here to recommend irrlicht - after all this is the ogre user's forum so i guess folks here choose to go with ogre...
AFAIK both have about the same capabilties...iv'e heard that irrlicht is easier to use - didn't check this...
one thing i am able to say for sure is that the community around ogre is realy great and very helpful...and lots of 3rd party stuff and reading material is availble...
OGRE is not a very easy to use engine and there is no steep learning curve, never the less it is very flexible and alows you to do just about anything you want....
One more alternative is using https://code.google.com/p/gamekit/ this way you don't realy have to decide between ogre/irrlicht + you get free lua,sound,physics,blender,whatever integration out of the box, but then again i'm not realy familliar with gamekit and it's community/support/bugs- and prefer writing my own stuff...
your'e questions are becoming quite specific - so my guess is that you choose to go with ogre...in that case i recommend you first search the forum for answers...
i've seen a number of project's related to astronomy/stars/lights so my guess is that ogre user's have already dealed with this topics...
any way good luck...

Edit iv'e had a visit( again )to the game-kit website -
can't realy recommend on it - looks a bit messy...lack of doc/support/community, not very much updated( irrlicht branch stopped development since 2010... )
i think its more focused on using ogre as a back-end for blender's node editor or somthing like that..didn't realy get what they try to achieve( lack of doc... )
Last edited by frostbyte on Thu Oct 09, 2014 1:42 am, edited 10 times in total.
the woods are lovely dark and deep
but i have promises to keep
and miles to code before i sleep
and miles to code before i sleep..

coolest videos link( two minutes paper )...
https://www.youtube.com/user/keeroyz/videos
AgentC
Kobold
Posts: 33
Joined: Tue Apr 24, 2012 11:24 am
x 5

Re: Best engine for my project?

Post by AgentC »

Regarding iOS, it's free to test on a simulator; testing on actual hardware and publishing on the App Store is where the developer fee comes in. That said, if you plan on not paying I guess Apple will be quite happy to not take your software. :)
frostbyte
Orc Shaman
Posts: 737
Joined: Fri May 31, 2013 2:28 am
x 65

Re: Best engine for my project?

Post by frostbyte »

Regarding iOS, it's free to test on a simulator
funny- like in a resturant where the water is free, but a glass costs money.... :D
the woods are lovely dark and deep
but i have promises to keep
and miles to code before i sleep
and miles to code before i sleep..

coolest videos link( two minutes paper )...
https://www.youtube.com/user/keeroyz/videos
xrgo
OGRE Expert User
OGRE Expert User
Posts: 1148
Joined: Sat Jul 06, 2013 10:59 pm
Location: Chile
x 168

Re: Best engine for my project?

Post by xrgo »

frostbyte wrote:
One more alternative is using https://code.google.com/p/gamekit/ this way you don't realy have to decide between ogre/irrlicht + you get free lua,sound,physics,blender,whatever integration out of the box, but then again i'm not realy familliar with gamekit and it's community/support/bugs- and prefer writing my own stuff...

Edit iv'e had a visit( again )to the game-kit website -
can't realy recommend on it - looks a bit messy...lack of doc/support/community, not very much updated( irrlicht branch stopped development since 2010... )
i think its more focused on using ogre as a back-end for blender's node editor or somthing like that..didn't realy get what they try to achieve( lack of doc... )
We use gamekit with ogre in our company but just for desktop and with a lot of work, using our own shaders, and its amazing. We love the fact that we can load everything directly from blender! But its recommended only if you are an advance user because it has a lot of things missing/wrong so you have to fixed it by yourself. We think its an awesome project it really sad that its so forgoten
frostbyte
Orc Shaman
Posts: 737
Joined: Fri May 31, 2013 2:28 am
x 65

Re: Best engine for my project?

Post by frostbyte »

But its recommended only if you are an advance user
yeah thats what i figured, and thats why i could'nt realy recommend it, it felt like you have to dive into the source code...
how do you find doc/community( or lack of them...) expiriance, is'nt it just more work at the end then just using regular ogre plugins/addons...
my feeling is that it could've been a great api( probably is in away...) if it was just more supported/documented/organized/fixed....
wondering whats your opinion on those issues?
the woods are lovely dark and deep
but i have promises to keep
and miles to code before i sleep
and miles to code before i sleep..

coolest videos link( two minutes paper )...
https://www.youtube.com/user/keeroyz/videos
primem0ver
Gnoblar
Posts: 10
Joined: Fri Mar 22, 2013 8:28 am

Re: Best engine for my project?

Post by primem0ver »

Thanks for the feedback so far.
AgentC wrote:Regarding iOS, it's free to test on a simulator; testing on actual hardware and publishing on the App Store is where the developer fee comes in. That said, if you plan on not paying I guess Apple will be quite happy to not take your software. :)
Does that go for the mac too? (I presume so). I will cross that bridge when I come to it. I have a feeling they may "want" (not really want... but concede) to deal when the time comes... I know that sounds naive. And maybe it is. But... I have my reasons for believing they might.

As it stands I am probably going to try and see how far I can get with Ogre. My biggest concern with Ogre right now after the advise of Kojak is still the lighting issue. I REALLY would like more freedom with lighting and if anyone has any links to resources they would be appreciated.
AgentC
Kobold
Posts: 33
Joined: Tue Apr 24, 2012 11:24 am
x 5

Re: Best engine for my project?

Post by AgentC »

For Mac you can just publish your software wherever you want. But if you want to publish through the Mac App Store then you have to be a registered (paid) developer.
Post Reply