By Joe Wee, Things3D
What seems like a lifetime ago - 5 internet years, my friend and business partner, Chris Byatte and I decided that we would venture into the world of 3D printing and reinvent how smart 3D prints would interact with their digital counterparts through Internet of Things and NFC technologies. We amassed a handful of patent filings and a few trusted early adopter-partners in the licensing world, but couldn’t solve an underlying problem of the business - the 3D prints were simply not that good, and the price points were too high. It turned out there wasn’t much point in making the prints ‘smart’ if no-one was going to buy them. However, I digress. The reason for sharing this piece of nostalgia is that this journey led us to developing a native 3D rendering engine for iPhone - which we needed as part of the mobile experience when interacting with a smart 3D Print. This engine has now evolved into Emcore3D - a super lightweight 3D Rendering Engine developed exclusively for iOS - strategically positioned to allow iOS developers to work with 3D models in their augmented reality games and applications.
First of all, let me address the elephant in the room. What on earth compelled us to develop our own 3D engine five years ago? Surely, there was an off-the-shelf engine we could have used? Please let me outline our requirements. We needed an SDK that we could easily and cost effectively integrate into our native iOS project (written natively in Objective-C) to display a 3D model that we were 3D-printing. We only needed iOS support – secretly because we are all Apple fanboys here – and also iOS was and still is the best device to launch any apps for – period. The requirement could not have been more straight forward. However, did we get a straight forward answer? Heck No! We looked at Unity but it wasn’t native and very complicated (No, thank you. I don’t want to use, or learn a new scripting language just to display a 3D model in my app. Call me a purist, but I refuse). We looked at Unreal-Engine – more than x00Mb addition to the app size and over engineered for our needs. Apple’s native SceneKit was in beta I recall but it was resource intensive to convert our 3D model formats to allow it to work seamlessly. Also, we needed direct support of media (video, audio and image) on the 3D model textures, including direct machine learning support - which is time consuming to integrate from scratch. In a nutshell, we didn’t have a choice but to build our own rendering engine. Fast forward to the present day – but, alas, the state of the market when it comes to an easy-to-use native 3D engine for iOS hasn’t changed much. Every cloud comes with a silver lining though...
Over the last couple of years, we have been developing a collaborative social mapping platform with Emcore3D powering its 3D rendering requirements (think Pokemon-Go for everything - but more about this project and its imminent launch in my next article!). We decided a few months back that we should make Emcore3D available for iOS developers like us who have a requirement to render 3D models in their AR/VR apps, without having to jump through hoops the way we had to. This year, as it turns out – we have fate smiling on us as the market for augmented reality applications enters an exciting new phase as we witness the perfect storm of mass proliferation of supported devices delivering the CPU muscle, camera definition and battery life that is needed to fuel immersive and rich mobile AR experiences. The mass market adoption of AR through ubiquitous apps such as Instagram, Snap, Facebook, and Pokemon- Go, along with the groundswell of support from the likes of Apple with ARKit providing low- level world tracking to more developers. For native Apple iOS developers, we have amazing news - Emcore3D is now available to render your 3D models so that you can work directly with ARKit to build these experiences.
Emcore3D combines a high-performance rendering engine with a descriptive API for import, manipulation, and rendering of 3D assets with customised shaders, FBX support, integrated media support (think displaying a live video stream on a 3D Television, or playing an mp3 through a 3D radio, or a Harry Potter-style 3D picture frame served from a cloud), machine learning support (think real time recognition of objects around you using Apple’s ML), to name a few exciting features. By the way, it is also VR ready - so this will be useful when VR goes mainstream .. huh ... one day. It supports both Metal (currently in beta) and OpenGL, so no more worries when OpenGL is no longer supported in the future - simply switch a flag and it will just run on Metal on your device. Yes, all this is built in as we have already done the hard work in integrating these cool amazing features into the engine. I won’t bore you further with the technical details which you can peruse on our product website.
In summary, this article is obviously a shameless plug for our new 3D Engine SDK - Emcore3D which is now available to download from www.emcore3d.com. Seriously though, if you are a native iOS developer wanting to create AR experiences with 3D models – Emcore3D is the one for you – we broke the pain barrier so that you don’t have to! At long last, on the digital horizon, there’s the tantalising prospect of the opening up of mobile AR for the mass. With rumours of an Apple based tethered smart glasses later this year, we could not be more excited for the prospects of this market. The floodgates are well and truly open for a more digitally connected AR world and Emcore3D is positioned to help developers put 3D models in this augmented world. The world does need a super- ‘3D-AR’ engine!
- 15th May, 2019
back to all blog entries