Vision based Augmented Reality Objective-C library - iphone

I'm looking for an Objective-C library / or just help in building a vision-based augmented reality application that does not rely on visual markers.
Qualcomm's is perfect, but only on Android (iOS is coming, but not soon enough). Any body know any other similar libraries?

QCAR for iOS has recently been released into public beta.

The only one I'm aware of is String, and I've become aware of that only via this iPhone + Kinect AR video (YouTube link) that recently did the rounds. So I've no direct experience of using it and no opinion on it, but I nevertheless think it qualifies as an answer to your question. It's commercial, but I think Qualcomm's is too.

Benjamin Loulier created a VRToolKit sample application for the iPhone that is based on the ARToolKitPlus framework. This sample uses the framework to track specific markers within the environment and allows you to overlay objects on them. I've seen some even more impressive demonstrations of this framework for using the camera to augment reality.
However, the ARToolKit framework (the parent of ARToolKitPlus) is by default available under the GPL license, which generally makes it incompatible with the App Store (and with commercial applications in general). You can purchase a commercial-use license for this framework from ARToolworks, if you need to use this within a non-GPL application.
Additionally, you might look into OpenCV for recognizing and tracking features in the environment. I've heard reports of people getting fairly decent performance out of it on iOS devices, even for more complex operations.
I've done some limited work myself in processing the video from the iPhone camera using the GPU, but nothing like what ARToolKit or OpenCV provides.

Have you looked at Aurasma http://www.aurasma.com/? They let you build custom apps with their system, which might suit your needs.

Related

iOS only 3D engine/SDK for C++

I'm researching which engine/sdk I should use for 3D iOS development in C++
Although there have been questions like this, I haven't found the best solution for my requirements so I'm looking forward to hear your experiences.
Unity and UDK are not what I'm looking for, due to lack of control.
Shiva3D looks interesting but don't need the extra editor
ninevehgl no skinned models and no C++
Marmalade perfect but multi-platform not required
requirements:
licensed or open source, preferably licensed which means a more extended sdk/engine
iOS iPhone/iPad, multi platform with android not preferred.
fast loading of both rigid and skinned/rigged 3d models
C++
My current choice would be Marmalade which I have been testing for a while now but I've had some issues where results differ from device to device so that's why i prefer an iOS only option. And most games I see using Marmalade are just using it to port an existing iOS app to android and not publishing to iOS.
Perhaps you can try PowerVR Insider SDK.
It contains an app framework
It's in C++
It contains modules to load 3d models
Nice math lib with vector and matrix support
http://www.imgtec.com/powervr/insider/powervr-insider.asp
Also consider cocos3d library. It is free and robust for iPad/iPhone and utilizes OpenGLES 1.1/2.0. You can load models from Wavefront OBJ format or directly into the interface.

Anything similar to XNA for Android or IOS?

I want to start creating games for Android/IOS. I have already created 2D games using XNA and I want to publish them on other platforms even PCs but my highest priority is Mobile platforms. As I said I am familiar with XNA so I need a similar Engine for 2D. It would be great if I could write once and publish on many platforms. Please dont suggest Unity or Unreal. They are not that easy when it comes to 2D.
By similar I mean, for example, how easy to draw a sprite on the screen.
Note: I am working on Windows so no Mac suggestions please.
Regards,
You may also want to consider MonoGame ( https://github.com/mono/MonoGame/ ) as that is also an Open Source, OpenGL implementation of XNA that currently has support for iOS, Android, MacOS X, Windows and recently Linux. It is now all ES 2.0 on the mobile platforms. Our biggest change is that we now support Windows 8, and have a DirectX 11 backend thanks to SharpDX. We now also have initial PlayStation mobile support.
Actually ExEn, is a fork of MonoGame( originally called XNATouch ).
For a list of games on the AppStore or Android Market place and even NaLC, currently using MonoGame look here -
http://monogame.codeplex.com/
I hope this helps.
D.
You might want to keep up on the project called ExEn, which has already successfully ported some XNA samples and smaller games to iPhone and Android. It requires relatively little work to port and refactor to these platforms.
I suggest you check out AndEngine, its an open-source 2d open-gl based game engine that has a strong community. If you want something that you can make cross platform games with check out LibGDX It too is free, open source and based on openGl but it also allows for 3d games. It is also cross platform so a game you write for android can be compiled for, Windows, MacOS (see below), Linux. It also has a really strong community.
Regarding iOS and OSX games you really can't make them unless you buy a Mac. Apple doesn't distribute their SDK for use on any other platform but their own. That said you could maybe get something working under VMWare
Check out MOAI SDK. It's completely free and open-source. It is in beta right now but it is still pretty good. Crimson Pirates for iOS was developed with it.
Right now it supports iOS, Android, Mac, Windows, and Linux. Really good. I thought I liked Cocos2D-x, which is a C++ variant of Cocos2d-iphone supporting windows, iOS (not Mac), and Android but not truely supporting desktop kinda made me like MOAI more.
You can use C++ with MOAI or you can use Lua (they highly encourage using Lua). Being built in C++ is really great because you get access to a vast amount of libraries and you can easily bind them to Lua.
You should try games development with cocos2d.
Cocos2d is one of the best 2d engines for ios/Android I have come across.
http://www.cocos2d-iphone.org/
It is openGL based free engine.
Regards,
Sam
These might be useful to you. However, the first two aren't free, but they have editions for both iOS and Android.
iOS:
http://ios.xamarin.com/
Android:
http://android.xamarin.com/
I've never used either of them, but it's something I've been looking into a bit.
Apparently it lets you run C# and .NET code on both iOS and Android which is pretty cool considering how much easier drawing and things like that are in XNA compared to Open GL ES 2.0. Not to mention the fact that you'd be using C# instead of objective C.
There's also a free open source version sponsored by the same people who make the two I listed above. This one lets you run C# and .NET code on Windows, Linux, and Mac OS X.
http://www.mono-project.com/Main_Page
I have been researching this topic intensively over the last few weeks.
I think the best solution for you is Marmalade, formerly known as Airplay SDK. It is actually more Windows-oriented than Mac (work in Visual Studio), although you still need a Mac for the final step of getting a signed app onto the store. It sounds like a very capable pure C++ product with iOS and Android as well as a bunch of other platforms, Personal license with splash screen $150 pa, single seat Professional $500 pa for all platforms. They have a 45 day trial license which I'm currently using.
I was tempted by MonoGame, could live with the $400 price tag for each platform (for the needed MonoTouch) but it is just way too buggy. The final straw was a combination of a bug causing it to crash all the samples on iOS5 and that keyboard input is broken on iOS.
Too be fair, I'm pretty sure that is all on the MonoGame side and was very impressed with how well MonoTouch worked and was looking forward to programming in c# with LINQ et al.
Since it is not obvious from the other answers, it should be noted to those who are unaware that the ExEn project and the MonoGame projects both build on the Monotouch platform from Xamarin (formerly from Novell) - which is a prerequisite for both for iOS games.
The Xamarin projects was mentioned in another answer as an alternative to Xna, but is really not. Monotouch and Mono for Android are a way to run C# and .NET on iPhone/iPad and Android.
Game development at least on the iPhone side, is typically done using OpenGL and OpenGL is also wrapped in Monotouch. The Xna implementations in Exen and MonoGame also uses OpenGL as the foundation as far as I know.
It should also be noted that Monotouch and Mono for Android are commercial products.
BTW: Exen also compiles to other platforms e.g. silverlight.

Monotouch vs Flash CS5 for iPhone App Development

With the recent loosening of the Apple Developer licence on third-party development platforms, I have had a brief look into app development with Monotouch and Flash CS5 but am unsure of which to develop with. I am competent in both C# and ActionScript so the language isn't so much the issue (but i dislike objective-c so please don't suggest it).
What I would like to know is which development platform (if either) has the bigger advantages in terms of execution speed (FPS in games) etc. (Assuming that the code efficiency be of the same degree on both). Also if there are any other advantages/disadvantages between them I would love to know. (Please also ignore pricing, i am purely looking at this from a development point of view).
Cheers.
If you are looking into Mono, you might also want to check out Unity.
I started working through their tutorials last week and am having a blast. They have support for making iOS games with C#, JS, and Boo (Similar to Python). They offer a no cost stripped down version and a more advanced one for a price.
Along with the detailed tutorials on their website in pdf format, this site also provides video tuts specific to the iPhone, which you might enjoy. 3D Buzz
Here is a write-up on the unity site about how their framework integrates with Visual Studio/Mono Unity FAQS. They use their own C# compiler, but you can still work from VS or their Mono implementation.
I would strongly suggest using Monotouch over CS5. I've only really used Monotouch, so my answer won't be complete but I can tell you about my experiences with it.
Although it is only a subset of Mono, it brings a lot of C# wonderful features to the iPhone and it has a 1:1 binding with the native APIs which means you're learning how to develop for the iphone using the native APIs. Due to the fact it is a 1:1 binding, if you come across a problem, you can always see how it's done in Objective-C and then apply it to C#.
Granted, Monotouch does come at a price, I've found the price worth it due to the constant updates and the amazing speed at which the support staff will respond to any queries.
There is a great community envolving around it too - see Monotouch.info as example, which will link you to many great articles to get you on your way.

Should I go for Flash/Java for iPhone development or continue with Apple tools?

As Apple has removed the restriction for java and flash should I go for these tools or just continue developing iPhone/iPad apps using Apple tools(Xcode, objective C .. etc).
I want to know the benefits of using apple tool instead of java or flash.
Thanks
Java is not an option anyway. There is no Java runtime for the iPhone that you can use to produce apps.
This is a no brainer. For iPhone, use Apple's SDK. You'll get latest APIs first than in any other platform, better performance, and, what's even more important, you are sure that Apple will keep pushing its API. With other products (like Java, Flash or Mono) you will always fear they changing their policies when they want. No guarantees.
It really depends on what kinds of apps you are making.
If you are just making a basic app, that you want to look like the standard Apple apps, you shouldn't switch.
If you really rely on Flash as a base, you should use that.
If you have little experience with Objective-C and prefer to code in C#/.NET, you may go for MonoTouch.
It really depends on your preferations, but if you want the most stable, reliable, and supported platform, you should go with Objective-C.
In my eyes, you should really only be using anything other than the standard Objective-C if it is utterly necessary, as others have pointed out; with Apple, you get the latest API's first, better performance, etc.
For new development I would jump in and use Apple's frameworks with Objective-C. If you're entering a new country you should speak their language. However, which development framework you choose will be largely dependent on whether or not you have an existing product. If you're just trying to target a new platform with an existing code-base it may be in your best interest to use an intermediary framework like MonoTouch or Adobe's Packager for iPhone.
If your codebase is Java, you'll be starting from scratch in Objective-C. Java is not currently available in any form on iOS.
If your codebase is in ActionScript 3, you may want to explore Adobe's Packager for iPhone. It will likely have a shorter path to market if your are porting an app already developed on ActionScript 3, but you will always be at the mercy of Adobe's intermediate layers. I know less about the Adobe bindings and how your application actually compiles, so I can't speak to any additional technical-risks there.
If your codebase is in C#, you may want to look at Novell's MonoTouch. Again, this may result in a shorter time to market. You still need to develop on a Mac (MonoDevelop only works on a Mac), and some .NET APIs are not available on Mono.
In any other circumstance I'd pick up Objective-C and use Apple's SDK directly. It's always tough to learn a new language (especially one as different as Objective-C), but it's worth it in the end.
Use the tool that will make the most sense for your goals and the experience you want to provide your users. Apple's lifting of restrictions only removes one risk: that using a framework not endorsed by Apple will be the sole reason for App Store rejection. The lifting of restrictions will not remove other risks that may exist like:
Continued support by third-party vendors (Novell, Adobe) of their frameworks.
Inability to target/test against the newest version of iOS until third-party frameworks add official support.

Sharing Code between Flash Apps and iPhone Apps

I am interested in writing games for the iPhone and the Web. Ideally, there would be one language that I could write my games in and it would work on both platforms. I know this is not the case, so what is the best way to leverage code between iPhone apps (Objective-C/C++) and Flash SWFs (ActionScript)?
This maybe of some help
It uses the NME library which will allows code to mostly be written to the Flash 9 API and create the C++ for XCode to compile and run on the iPhone and Touch. This creates a path to port Flash games to iPhone/Touch.
Unfortunately, Flash and Objective-C are very, very different - and it's unlikely that a Flash player will be available for the iPhone in the near future. The native input methods used in Flash games - the keyboard and mouse - don't lend themselves well to the iPhone. While Apple could make Flash run on the iPhone, most Flash games would be totally unplayable (or feel very unnatural. They'd have to overlay a keyboard probably?). With the success of the App Store and native iPhone games, I think it's very unlikely you'll see Flash support anytime soon.
You might want to consider using a game development tool like Unity instead of Flash in the future. Unity allows you to create both 2D and 3D games, and you can program them in various .NET scripting languages. Once you've created the game, you can cross-compile it for web (their own plugin, not Flash), iPhone, or the desktop.
I know that doesn't help much since you have an existing codebase, but it might be something to consider for the future!
My company is developing a toolchain that allows compiling ActionScript3 to native code for mobile devices.
It now supports Windows Mobile and Symbian, and iPhone supported will be released in a couple of weeks.
Check it out at: http://developer.openplug.com/
BR
Guilhem
Adobe Alchemy looks promising. It is not released yet, but from their website:
Alchemy is a research project that allows users to compile C and C++ code that is targeted to run on the open source ActionScript Virtual Machine (AVM2).
This would allow iPhone apps and Web apps to share non OS-dependent C/C++ code, which is a very exciting prospect.
One option would be building everything in unity. The engine facilitates building the same game project to any of the following platforms:
Webplayer
OS X
Windows
iPhone
Wii
Actually, the iPhone supports Flash technically (see Developer creates Flash for iPhone and Flash Installer Update #2). It is just Apple's crippleware restrictions that prevent installation.
Other than that, there's really not much you can do. Flash/ActionScript and Objective-C are radically different. You can have a central server store data, but that doesn't solve the duplicated logic.
If you're already willing to use ActionScript you could go all the way over to the dark side and switch to Javascript. That's the only common language supported by your clients (web and iPhone).
How comfortable you are with either development environment certainly plays a role here. If you are a die-hard Objective C and a super star Actionscript programmer then doing both shouldn't be much of a problem. It will be lots of work of course, but not a problem.
However, if you are neither or only skilled at Actionscript then I suggest you focus on Flash/Actionscript for the time being. Eventually Flash will be available on the iPhone anyway. When that happens you can already have a number of apps ready to be quickly ported to iPhone. Also keep in mind. There are more portable devices out there than just iPhone. Getting your apps running on other devices might be worth it in the mean time.
Just keep in mind when you're developing your apps now that at one point you also want to run these apps on the iPhone. So make 'm in such a way that they can be controlled with an iPhone as well.
Updating this old QA with new information. The recently released monkey development framework deploys to both iOS and Flash: http://www.monkeycoder.co.nz/
It's so new that I wouldn't necessarily recommend it, but it has a great pedigree: the creator made Blitz3D and BlitzMax before, and those were great game development tools.
That said, I would strongly recommend a combo like Corona for iOS and Flash for web, so that you're using optimal tools for each platform.