With various Augmented Reality applications in PTC's product portfolio the technical aspects and use cases could leave you with some questions.
Did you know that we do not only have a full blown Augmented Reality SDK but offer also the possibility for a easy to use integration with live sensor data coming in via ThingWorx?
This blog post hopefully clarifies some of the questions around what can be done with Vuforia SDK and ThingWorx Studio.
Welcome to the real world
In the real world, or the "real reality" (sounds weird, but it's basically what you can see with your own eyes - no augmentation involved) there are various objects. These might look the same - or not. Just take the following example... that's what we perceive when looking at things around us:
These objects are recognized via shapes, contrasts (black & white) and whatever defines the actual form.
Vuforia SDK is able to recognize those objects via it's built-in object recognition capabilities.
However, there might be limits - depending on the use cases...
While buildings could be distinguished by their form, playing cards could be distinguished via their suits and nominations. The machines however, they all look the same, they probably all are the same.
Combining the real world with a virtual world
"Augmented Reality" will allow to enhance this physical object with virtual properties, e.g. overlay its CAD-Model or overlay some animations for a better gaming experience. Check out this video for the Genesis Augmented Reality Trading Card Game example.
Object Recognition allows to put actual names to what the (digital) eye can see:
Once the object is recognized and identified all kinds of virtual attributes can be added. Vuforia SDK allows to do this with e.g. Unity.
As all of the machines are basically the same... they look the same, come from the same manufacturer and behave the same, identification can only be done via a manual effort, e.g. selecting the actual machine manually within an app (via a menu etc.). This manual selection process will then map a generic form and shape of the machine to the actual physical machine you can see and touch just in front of you.
In an app this might be necessary if you can recognize the generic form of a playing card but forgot to implement the suit and nominations. In that case, either extend the recognition part, or choose a drop-down list when the card is identified to choose the actual card in front of you.
How do ThingMarks fit in?
Using the functionality of Vuforia SDK, ThingWorx Studio combines the power of Vuforia (AR) with the power of ThingWorx (live sensor data / object information).
In an industry environment I could select the correct machine I'm looking at. However, what's the identifier? It is probably written somewhere on the back of the machine with lots of other information, so I don't really know what to look for.
Therefore I could be looking at any machine, but without the identifier I can not retrieve information for my machine.
ThingWorx Studio uses ThingMarks. They work similar to a QR-Code and allow for direct identification of individual machines. So instead of choosing manually in the app, the ThingMark automatically chooses the correct object and relates that ID to a Thing Entity in ThingWorx.
In above image, the ThingMark allows to a) identify we're looking at a machine and b) are looking at the specific machine A03
It's basic point and shoot. Scan the ThingMark with your mobile device and you're directly taken to this particular experience for this particular machine.
In this case, it's not the machine that defines our object's properties and shapes and contrasts and sizes etc.
In this case, it's the ThingMark that's the object being recognized.
That's quite a difference.
So now, in an additional step, we're using the power of Vuforia to identify individual machines by a ThingMark.
Recognition is driven by the ThingMark's shape which includes an encoded object ID (the QR-code looking pattern).
How does ThingWorx fit in?
After recognizing the machine, ThingWorx studio provides the link between this specific object (or its instance) and the ThingWorx Thing Entity we've defined in ThingWorx Studio.
This allows to retrieve individual properties, services, events, alerts etc. directly via ThingWorx.
Those values are unique per object, not per shape!
So this allows to directly look at temperature, level and failure-indicator for the actual machine in front of us:
Bridging the gap
ThingWorx Studio is used to bridge the gap between Vuforia and its Augmented Reality capabilites as well as ThingWorx and its Internet of Things (IoT) capabilities.
ThingWorx Studio uses parts of both applications, adds own functionality and defines its own product category: Connected Augmented Reality
There are quite some components involved in this:
This can be split into two processes: developing and experiencing
- Create a new experience in ThingWorx Studio, map the experience to the ThingMark ID, map the experience to a Thing Entity in ThingWorx.
- Publish the experience to the Experience Server.
- Scan the ThingMark with the ThingWorx View app.
- ThingWorx View will utilize Vuforia to recognize the ThingMark
- ThingWorx View will load the data and the model(s) for this ThingMark from the Experience Server
- ThingWorx View will automatically receive and update the experience you're viewing with live data from the ThingWorx platform
There are quite some videos, tutorial, best practices etc. available on how to develop and experience the world of ThingWorx Studio.
Check out ThingWorx Studio Resources: Getting Started Guides, Tutorials, Troubleshooting for the Article Hub and quite a lot of good stuff!
To get more information visit the product pages at
If you're looking for help, these might be of interest:
- https://developer.vuforia.com/support for Vuforia SDK
- https://community.thingworx.com/community/studio for ThingWorx Studio
- https://community.thingworx.com/community/developers for ThingWorx
- https://support.ptc.com/ for ThingWorx
Get involved, create your own experience.
It's fun, it's quite easy and well... it looks good, too!