I have some 3D objects stored in 3D editor application specific (Blender/Solid/3DS) file format exported to OBJ+MTL files with optional textures in PNG/JPG files.
I would like to load these objects in OpenGL ES application on mobile phone (today for Android and in the near future for iOS too). And I don't want to write my own OBJ+MTL (or any other 3D format) parser. So I would like to use some 3D engine with support for loading 3D models (from OBJ+MTL or exported to 3D engine specific header/resource files from within my 3D editor) to achieve this.
I have some experience with Min3D framework, but it's a bit buggy at loading the files (also won't load material colors, only texture images), doesn't support OpenGL ES 2.0, and Obviously doesn't run on iOS.
I've seen the popular blender export script for C header files (http://iphonedevelopment.blogspot.com/2009/06/using-3d-models-from-blender-in-opengl.html) but I believe it doesn't support material color export (when texture image is not used).
Lately I've started to look at Unity 3D, but it seems to be a lot more than I need. I would need to pay for the features I won't be using (animation, game specific features, etc.) and also I'll need to integrate it with other parts of my mobile application.
What 3D engine/framework would you recommend ?
To summarize the requirements:
Ability to load 3D models + textures from OBJ+MTL(+PNG/JPG) or exported from 3D editor application (using plugin ?), with support for colored materials without textures
Supports Android (additional iOS support is very welcome)
Supports OpenGL ES 2.0
Free / Cheap
Easy integration with native code (Java is preferred for Android)
OpenSceneGraph supports loads of model types. I haven't tried to build any mobile apps with it, but there's a lot of chatter and some tutorials on the forums/mailing list about doing it, for both iOS and Android. Open Source.
http://www.openscenegraph.com
http://forum.openscenegraph.org/viewtopic.php?t=10076
EDIT: as a side note, if all you want to do is view your models, and you don't mind storing them in the cloud, you can just upload them to SketchFab:
http://sketchfab.com/faq
And view with Firefox mobile. iOS support would come whenever iOS browsers support full webGL.
They're using osg behind the scenes to read models, and I think OSGjs for front-end.
Related
Can anyone please tell me that will libgdx supports 3D like Unity3D and please tell me some games which are built on libgdx 3d if possible.
Your question is pretty general, but the libGDX 3D API is pretty stable, easy to use and has many features.
It can not only render basic 3D shapes like spheres and boxes, but also load complex models via .obj or .fbx files. It supports animations, normal and specular maps, a basic lighting system with point lights and directional lights. The latest version also added a high-performance 3D particle engine, including an editor to create those effects.
Furthermore it supports bullet physics which is a 3D physics engine which works pretty well with the 3D API of libGDX.
I'm currently developing a 3D game myself and I can only say that everything works really nicely. The performance is great and with my old laptop I can render several million textured tris with lighting at 60FPS. One example of an already published cross platform 3D game made with libGDX is Delver (its graphics are very simplistic though and do not show the capabilities of libGDX that well).
OK, so I just got this idea for a game. I already know how to develop for Android, so I though of developing for Android first.
The game (without revealing too much :D) will have a single shape onscreen all the time. It will have to smoothly change shape, color etc. in response to a few knobs/sliders on the screen.
As we do not have multiple shapes/objects I do not need any form of physics engine now. I need to be able to draw polygons and transition colors/gradients effortlessly. I'm targeting a high FPS for this game (think PewPew/2Fuse!)
Do I need OpenGL for this? If so, where can I learn it?
(I'm aware that OpenGL is difficult, and that it's time-consuming to learn.)
I can only offer some of my views. Programming a game is much about transferring artistic assets from the programs, in which they are created (3D modeling programs, Photoshop, Gimp, ...), into your own program. Whether you select OpenGL or Canvas is therefore somewhat dependent upon the nature of your assets (3D models, or bitmaps only, for example). You should be aware however, that on modern Android devices OpenGL ES support is universal and that on those devices the Canvas is implemented with OpenGL ES. Choosing OpenGL ES therefore eliminates one level of indirection. You also have libraries like Cocos2D that offer 2D APIs, but use OpenGL for implementation. To conclude, without top-notch artistic assets your game cannot succeed, if those are good however, even a game using the Canvas may succeed.
EDIT: I think you should proceed like this:
game design -> assets implementing game design -> API offering the shortest path towards the reproduction of the assets in your game
If your assets are polygon based (as you mention in a comment) you should go with OpenGL ES 2.0. OpenGL ES 2.0 is non-trivial to learn, but in learning it, you would gain some marketable skills and experience, and you could make work that is very "showy" for a programmer. Just be patient and try to understand how it works and not just "slop through it."
A great place to start learning is with a tutorial like this one.
Is there any high level 3D engine capable of displaying movie texture on both iOS and Android?
This would be for a project close to a virtual museum with video playing on some walls. The engine would also be able to import 3D model from 3DS Max.
I checked major 3D engines but did not find the ideal one. Unity3D for instance does not support movie texture.
I am wondering if I can avoid coding low level OpenGL code on each platform.
Unity does not support movie textures on mobile out of the box, but this Mobile Movie Texture plugin works quite well:
http://u3d.as/content/defiant-development-pty-ltd/mobile-movie-texture/2w1
p.s. I think it requires Unity Pro
Unity3D supports movie textures. Update: only for desktop, it seems.
An alternative that does appear to work is Bink from Rad Game Tools. This is just a (proprietary) video decoder library though that you'll most probably have to incorporate into your own engine (I believe I'm right in saying that you can specify the memory buffer the video is rendered to, so once you have the frame you can do whatever you like with it).
Can I Use both Adobe Flash cs5 and OpenGL to create an application on an android OS4.3 device?
I am creating a 3D chess game compatible for an android OS 4.3, so I am using eclipse and the SDK obviously.
The problem I have now is I am meant to make the chess pieces human like. For instance, the pawn pieces should look like miniature foot soldiers and the king piece should be a figure of a person sitting on a throne etc. I started with OpenGL but because I am new to it, I might not be able to carry put displaying the graphics with OpenGL. So I decided to use adobe flash cs5 to create the pieces and use OpenGL to make the chess board because I can do that and also because in my specs, I said I would be using OpenGL.
I want to know if this will actually work and also if there is a much easier way of doing this I just haven't thought of. Any suggestions would be appreciated, especially how to implement this with the A.I.
If anyone has a sample or an idea I could work with, I will also be very grateful.
Adobe has said that "Stage 3D" support will be coming to mobile devices in the future, but in the meantime, there are not any ways to accelerate 3D with Adobe AIR.
Although Away3D or another 2.5D library would be fast enough for the web or desktop, I am not sure how well this will work for mobile, as AIR moves slow enough even for 2D games.
Since chess is a relatively static game, you might be able to create 3D graphics, then render to 2D sprites. I was the lead engineer for a large Facebook game, and we used this approach. ALthough it required more file size, it worked very well for quality and performance. The end result was something similar to Diablo 1, but in a cowboy theme instead of medieval.
Although it does not have true 3D support, yet, you might also consider looking into NME. That Facebook game I made ran at 5-6 FPS using Flash, but topped 30 FPS using NME on my old Palm Pre (so not the fastest phone in the world). That might help give you extra overhead to be able to lean into rich graphics. The framework will also publish as a true C++ NDK application, so it is actually possible to extend or modify the framework (it's open source) with your own OpenGL calls.
Here's the website if you're interested: http://www.haxenme.org
I am facing a task to introduce some custom yet to be written written 3D games into our embedded Linux board. Our system is a custom Linux distribution. Main application is running with Qt and the plan is for this application to run games as separate processes that will overtake the screen while active. The board is capable of OpenGL ES2 and is on par with modern phones.
What are my options for a good, performant 3D graphics engine on such a platform?
Preferably I would love to have Unity3D, but it only supports Android. (Maybe there is a possibility to skip Android by providing only basic dependencies instead?)
Have a look at www.inka3d.com. The same engine also works on embedded linux with some more features (e.g. clip libraries of Maya can be used). Currently it works on BeagleBoard even with character animation at 30 fps and 1024x768.
Since you've decided on Qt for your UI, you definitely want a graphics library that's compatible with Qt.
So it sounds like OpenGL ES is exactly what you're looking for:
http://doc.qt.nokia.com/stable/qt-embeddedlinux-opengl.html
Qt for Embedded Linux provides support for integrating OpenGL ES for
drawing into a QGLWidget. The current implementation supports OpenGL
and 2D painting within a QGLWidget.
Q: Exactly what's holding you back (you didn't specify the exact board or any details about your toolchain/library vendors)?
PS:
You might also wish to look here:
http://doc.qt.nokia.com/stable/qt-embeddedlinux-opengl.html
The reference integration for OpenGL into Qt for Embedded Linux is for
the PowerVR chipset from Imagination Technologies. It consists of
two components: pvreglscreen, which provides the Qt for Embedded Linux
screen driver, and QWSWSEGL, which implements a plug-in to the PowerVR
EGL implementation to implement low-level OpenGL drawing surfaces.
PPS:
This is a great, great book on Linux Embedded: satisfaction guaranteed:
Embedded Linux Primer, Christopher Hallinan:
http://www.amazon.com/Embedded-Linux-Primer-Practical-Real-World/dp/0137017839/