Dynamically Manage Step Data (Name, Description, and Image) for Vuforia studio Using a Thingworx?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Dynamically Manage Step Data (Name, Description, and Image) for Vuforia studio Using a Thingworx?
Hello ThingWorx Community,
I am working on integrating ThingWorx with Vuforia Studio for multiple AR experiences, each containing a series of steps with associated information. Currently, I store step details (name, description, and image) in a static JSON array inside the experience, like this:
let Companyarray = [
{
"name": "check 1",
"description": "main label and check bottom",
"src": "app/resources/Uploaded/pic.png",
},
{
"name": "check 2",
"description": "cable can be seen there on the right place",
"src":"app/resources/Uploaded/pic 2.png",
},
// More steps...
];
Goal: Make Step Data Fully Dynamic Without Editing the Experience
Instead of modifying the experience whenever step names, descriptions, or images change, I want to manage them dynamically from ThingWorx. My idea is to create a ThingWorx Mashup that allows users to:
- Select the Vuforia Experience they want to manage.
- Enter/edit step details (name & description) via input fields.
- Upload images for each step dynamically.
- Preview existing steps, showing the image alongside its name and description.
Once saved, these steps should be retrievable inside Vuforia Studio dynamically, so the experience pulls the latest data at runtime instead of using a static JSON array.
Implementation Idea
- Create an Infotable in ThingWorx to store step details (Name, Description, and Image URL).
- Develop a Mashup with parameters to select an experience and manage steps.
- Enable image upload functionality, storing images on ThingWorx and referencing their URLs in the Infotable.
- Vuforia Studio fetches step data dynamically from ThingWorx when loading the experience.
Questions:
- Is this a good approach, or is there a better way to handle it?
- Any best practices to ensure performance and scalability with multiple experiences?
I would love to hear your thoughts on the best approach to achieve this, as I have multiple experiences with different steps, and maintaining them manually is becoming inefficient.
Thanks in advance for your support!
Solved! Go to Solution.
- Labels:
-
Best Practices
-
Coding
-
Design
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
So the Experience, we created in the past, was designed for exactly this case you mentioned, and to replace the (company)array with a respond from a Thingworx Service
Experience Template
So in general you need to create a concept. A recommended one is seeing the Experience as a template. Like the video player which need video files, to show something. So your first task is to define which functionality is necessary, (next step, get step info, show step resources, feedback button, animation etc)
This template can get its data from Thingworx (so the video file to have the analogy). A recommended concept here is to use the Thing Model itself.
ThingWorx (Thing) Templates
Create a Thing Template, which defines the scope of your project you want to create. (So the data format like mp4, mkv. It defines where the video player find certain information like: description, name, chapter, audio ...)
This Thing Template defines in our case e.g. the name of the project, the step list as an Infotable, Services to load assets, Permissions to allow viewing permissions etc.
From this Thing Template we can now inherit Things e.g. by creating things via a Controller Thing we can create.
Mashup
The Controller Thing will then include all necessary Services, to create, modify and delete you projects. This one can be used by a Mashup or other Websites to populate it with data like images, text etc.
Note to upload and save images use a File Repository Thing and create a logical file structure in it! It act like a folder you can access e.g. create subfolders which are called like the project Thing name and put all files you uploaded into this folder, to reduce conflicts. In the Infotable just save the hyperlink to the image "/Thingworx/FileRepositories/..../Subfolder/myimage.png" or use 3rd Party services like buckets and save the hyperlink to the resource in the Infotable!
But this topic is to detailed to explain everything in detail in a thread post!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
So the Experience, we created in the past, was designed for exactly this case you mentioned, and to replace the (company)array with a respond from a Thingworx Service
Experience Template
So in general you need to create a concept. A recommended one is seeing the Experience as a template. Like the video player which need video files, to show something. So your first task is to define which functionality is necessary, (next step, get step info, show step resources, feedback button, animation etc)
This template can get its data from Thingworx (so the video file to have the analogy). A recommended concept here is to use the Thing Model itself.
ThingWorx (Thing) Templates
Create a Thing Template, which defines the scope of your project you want to create. (So the data format like mp4, mkv. It defines where the video player find certain information like: description, name, chapter, audio ...)
This Thing Template defines in our case e.g. the name of the project, the step list as an Infotable, Services to load assets, Permissions to allow viewing permissions etc.
From this Thing Template we can now inherit Things e.g. by creating things via a Controller Thing we can create.
Mashup
The Controller Thing will then include all necessary Services, to create, modify and delete you projects. This one can be used by a Mashup or other Websites to populate it with data like images, text etc.
Note to upload and save images use a File Repository Thing and create a logical file structure in it! It act like a folder you can access e.g. create subfolders which are called like the project Thing name and put all files you uploaded into this folder, to reduce conflicts. In the Infotable just save the hyperlink to the image "/Thingworx/FileRepositories/..../Subfolder/myimage.png" or use 3rd Party services like buckets and save the hyperlink to the resource in the Infotable!
But this topic is to detailed to explain everything in detail in a thread post!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Hi @MA8731174 ,
It appears that a response to this post answers your question. For the benefit of other Community Members who may have the same question, it would be great if you could designate the appropriate one as the Accepted Solution.
In the event that this response did not answer your question, please post your current status so that we can continue to support.
Thanks for using the PTC Community!
Regards,
