Vuforia Studio Tech Tips
Recently active
Vuforia Studio Improved Image Target and Model Target generation Bug fixes and minor improvements Vuforia View Improved detection and tracking for Model Targets and Spatial Targets Bug fixes and minor improvements Experience Service Improved Image Target and Model Target generation Bug fixes and minor improvements
Vuforia Studio New 3D Button widget that supports HoloLens 2 articulated hand tracking (3D Eyewear projects only) Bug fixes and minor improvements Vuforia View Support for Microsoft HoloLens 2 Bug fixes and minor improvements Experience Service An 8.5.0 version of Experience Service was not released. However, Experience Service 8.4.6 will support the upcoming ThingWorx 8.5 release.
Vuforia Studio Bug fixes and minor improvements Vuforia View Bug fixes and minor improvements Experience Service An 8.4.7 version of Experience Service was not released
Vuforia Studio Bug fixes and minor improvements Vuforia View Vuforia View 8.4.6 is required for viewing Experiences that include Model Targets created with Vuforia Studio 8.4.6 Improved detection and tracking of Model Targets and Spatial Targets Bug fixes and minor improvements Experience Service Support for Ubuntu 18.04 and RHEL 7.2 - 7.6 Bug fixes and minor improvements
Often issues connecting to the Thingworx Experience Service from Thingworx Studio are related to more complex proxy configurations. One such configuration uses a .pac script that dynamically resolves the proxy based on the requested URL. Thingworx Studio has the ability to configure a proxy server but you have to explicitly specify one server URL, you can't replicate the settings in your internet connections when these use a .pac script. No worries - there is a workaround - Proxy-Vole at your rescue! You can find Proxy Vole (https://proxy-vole.kenai.com/ ) on the Internet. It is a little java-based application that can be used to auto-resolve your proxy configuration. It has a command line and a UI frontend. The documentation is somewhat unstructured - for the test you only need a few of the steps: Download the Proxy Vole jar-with-dependencies Start the proxy vole application in a command shell using the following command:java -cp ./proxy-vole-1.0.1-jar-with-dependencies.jar
Hi, we can do many tricks with Javascript in Studio and most of the times it's just a matter of copying & pasting the right code. I'd like all Studio users, not just coders, to benefit from this, and thought I could drop here a snippet to blink a widget. I call this a quark - from the particle physics standard model - and not atom, because it's really a smaller building block than an atom Blinking a widget can be useful, for example, if you are not using Creo Illustrate to create a sequence but still want to draw the user attention to some item in the scene. Here's the Javascript code to copy & paste to your Home.js: (to Javascript coders: I'm using modern Javascript syntax, don't be frightened by that ) $scope.blink = function(widget, times, interval) { let w = (widget.visible !== undefined ? widget : $scope.view.wdg[widget]); if (!w || w.visible === undefined) { throw "Cannot blink this widget"; } $int
To ensure your Chalk experience is the best, make sure to familiarize yourself with the below best practices. Initialization Keep movement fluid and slow Forward and backward smooth motion is best to allow device to create mapping Small circles in front of the object are also good Note: Do not rotate your device - keep the device's orientation fixed, moving it parallel to the object of interest and keeping the latter in view during initialization movement Environment It is important for the environment to have a lot of saliency, interesting features, & textures e.g. Stickers, buttons, cables, images/designs, shapes with corners, etc Stationary objects are best for Chalking Reflective, plain colored, or blank surfaces are not good for using Chalk Marks Well-lit areas are best for Chalk performance If an environment is too dark the device's camera will not be able to detect objects External light may be needed if the environment is too dark Either user can toggle t
Unfortunately, in the Vuforia Studio Documentation there is no complete List with the possible events which could be handled JS. Therefore for the first time this article tries to provide additional Information about known events : 1.) modelLoaded - is not required any more because the UI allow directly to specify this event. ... $rootScope.$on('modelLoaded', function() { //do some code here } ) .... 2.) Step completed example: scope.$on('stepcompleted', function(evt, arg1, arg2, arg3) { var parsedArg3 = JSON.parse(arg3); console.log("stepcompleted stepNumber="+parsedArg3.stepNumber + " nextStep="+parsedArg3.nextStep); $scope.app.stepNumber=parseInt(parsedArg3.stepNumber); $scope.app.nextStep=parseInt(parsedArg3.nextStep); $scope.app.duration=parseFloat(parsedArg3.duration); }); 3.) Event - stepstarted: ... $scope.$on('stepstarted', function(evt, arg1, arg2, arg3) { var parsedArg3 = JSON.parse(arg3); console.warn(arg3); console.log("stepstarted stepNumber="
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 Vuforia 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 ca
Using Connection Filters for state-based rendering and value formatting State-based rendering of properties that come from user inputs or from connected ThingWorx data is a common requirement. Think about the following scenario: from ThingWorx you get the state of a as one of these values: [ OK | At-Risk | Issue ]. You would like to visualize it with a 3D image or a changed 3DGauge icon. You can achieve that easily with a Vuforia Studio functionality that is often overseen: The Connection Filters. With connection filters you can achieve a lot of very nice a common features, mainly: number and date formatting value pre- and postfixing (specifically units for numbers but also anything else) state-based formatting, e.g. changing the image or style based on a number change Here is what I mean in practice: Step 1: Step 2: Here is the stateBasedStyling Connection Filter content: return value < 3000 ? "fill:rgba(255, 255,
If the experience project exists in Vuforia Studio Unpublish the project by hovering over the project and clicking the unpublish project Experiences icon . This action removes Experiences from the Experience Service. If the experience project does not exist in Vuforia Studio Using CURL Command Curl -u <username>:<password> -H "Content-Type: Application/JSON" -X "DELETE" https://<your-domain-name>/ExperienceService/content/projects/<projectname> username: Experience Service username password: Experience Service password your-domain-name: Experience Service domain projectname: Experience project name to be deleted Using REST call from Postman Select query method as 'DELETE' Enter the URL as https://<your-domain-name>/ExperienceService/content/projects/<project-name> your-domain-name: Experience Service domain projectname: Experience project name to be deleted In Authorization menu Choose Authorization type as 'Basic Auth'. Add the
Your company might have a css that represents the corporate identity - or you may have other sources of reusable css styles that you want to include with minimal effort. Here is what you have to do to use corporate css files to drive the look and feel of your experiences: Add the corporate css file (e.g. company.css) to your resources In Application styles add the following at the beginning (before any other css style entry: @import url(#{$resources}/Uploaded/company.css); With the following content in company.css: And this label definition: Produces this outcome (you see it in the editor as well as in the preview): Gotcha!
Just helped someone who was seeing a difference between the Preview mode and what Vuforia View was showing. The experience was being developed for public access, so what was happening is that Preview mode worked because they were using their Studio credentials to run the Thingworx service. When they used Vuforia View, they were using es-public-access to run the Thingworx service. And es-public-access did not have the runtime permissions to execute the service. The error indication was found in the Application Log complaining about the Entity and Service not being able to be run. Don't forget to set your permissions for es-public-access so it can run your services!
With release 1.9.1, pilot and free trial participants can auto-configure Vuforia Studio to make it easier to get up and running quickly. The auto-configure process does the following: Configures the sample projects included with your Vuforia Studio installation so that when you publish those projects they are published to your experience service and can be viewed in Vuforia View using one of your ThingMarks Retrieves the Experience Service (ES) URL - can find at Project -> Configuration -> Info section. We are no longer sending the ES url through welcome email. Downloads your ThingMarks and makes them available on the My ThingMarks page inside Vuforia Studio so that you can view your ThingMarks and print them out In order to complete the auto-configuration process, users are first required to authenticate using their PTC Account credentials. For participants in the Vuforia Studio Free Trial, this does not introduce any confusion since they use their PTC Account
This is the second Javascript quark in the series: it can be used to fade a widget out. You can find the first quark here. Here's the code to copy & paste to your Home.js: $scope.fadeOut = function(widget, time, interval) { let w = (widget.opacity !== undefined ? widget : $scope.view.wdg[widget]); if (time <= 0 || interval <= 0 || w.opacity === undefined) { throw "Cannot fade this widget"; } let steps = Math.floor(time / interval); let opDelta = w.opacity / steps; return $interval(() => w.opacity = (opDelta < w.opacity) ? (w.opacity - opDelta) : 0, interval, steps); } This quark will make the widget fade out from its current opacity to 0 in time milliseconds, uniformly decrementing opacity at every interval . Invoke the function like this: fadeOut(widget, time, interval); where widget is either the id of the widget (e.g. modelItem-1) or the widget itself (e.g. $scope.view.wdg['modelItem-1']), time&n
At the frist sight the issue , may be , seems to be more related to thingworx or navigate, but this is often a question which is related to models used in Studio and customers want to have some tools to view such models outside Vuforia Stuido and Vuforia View . Another important point is that Vuforia Studio Preview, Navigate Thingview and Creo View WebGL Toolkit use /are based on the same thingview library. The official statement of PTC here is that thingview widget, which is part from the Navigate extension is not supported for customized mashups and correct work is guaranteed only as part of the navigate functionality. Therefore, there is no documentation provided for the customization of this widget and no technical support cases will be handled on address of related issues. Also the geometry file formats supported by thingview are mainly the files supported by the Creo View application. All other file formats (which are not av
In the post “How to select model components in a 3d model without explicit definition of model Items” there is one point where we require a list of component items. Often we have the case where we get a Creo View .pvz file which was published by Creo Illustrate. In this case Creo Illustrate will do additional changes for the occurrence Id path so that if we have a bom list coming from Creo Parametric then this data will be not usable. So the question here is : Is it possible to extract a bom list for any *.pvz files? The answer is Yes. We can do this using the Creo View Toolkit API ( this is one possible option). Creo View API Toolkit consist of many different moduls : Java Toolkit , Web Toolkit (only Internet Explorer related) Office Toolkit and the new one introduced since 5.1 release module WebGL Toolkit. We can extract BOM list with Java Toolkit but it requires more complex programming
In this article I want to consider the question how to define a TWX service, which could create a Bom and Viewable Lists from json files. This will be very helpful option when we want to display some CreoView data in Thingview. How to extract BOM and viewable data form a Creo View /Illustrate *.pvz file is shown in the post "How to extract the components with properties from a pvz file". In this example the json files are saved already in a thingworx repository (means a thing form template FileRepostiroy) e.g. "CAD-Files-Repository" : 1.)Create a service for the BOM List /InfoTable edit the CAD-Files-Repository thing and create a new service named "GetBomStruct_arg_path" set the BaseType : INFOTABLE . Set the DataShape property of the service - > here to BomListStuct -> this datashape need to be created first . It sho
This post should provide more detailed steps additionally to the posts ("How to extract the components with properties from a pvz file"[1.] and "How to use ThingView Widget from Navigate to display CAD Model/Viewables in custom mashup- Concept"[2]) This post should consider more detailed the steps for the extracting of viewables and also how to extract the sequence steps information from a .pvz / Creo Illustrate model for further usage in a Thingworx service. Following steps: 1.) Extracting the data from the Creo View Model ( Created from Creo Illustrate via publish to pvz functionality) As described in [1.] we required for the extraction of information a Creo View Toolkit. A good choice will be the usage the Creo View WebGL toolkit module. A web toolkit program is called inside a html document ,where the javaScript Creo View WebGl Api is embedded. So, the most important logic could be called on the windows load function. The code below&n
In this article we have the same start point/state as described in “How to read sensors via Rest API call in and display it Vuforia Studio experience project?”… but with one significant difference ->the sensors URLs are not visible for the Thingworx service. The problem is that the sensors values should be requested via Rest API calls in a local intranet. This means that the end devices are connected to a local router and have IP valid only in the local WLAN. Othersides the router have also internet access. The end devices could connect to the Experience Server and could download e.g. the experience. The sensor URL and rest API call should be some thing like: var url="http://172.16.40.43.5900/api/v0/dev_id=6&size_id=123"; So, it means the IP address of the device, where the value should be requested via Rest API calls is not visible from outside of the local WLAN and the Rest API call could done only inside the local network. So here
In this particular cases we have some sensors/devices which could be accessed via WLAN/ Web and also we need to scan /request the values of these sensors via rest API calls. For example from javascript code for simple REST API request the code should looks like (used a test web page which provides demo response) : //this code will work fetch('https://jsonplaceholder.typicode.com/todos/6') .then(response => response.json()) .then(json => {console.log(json); }) .catch(error =>{ console.error(error);}) }; ... but the same code will not work for http url fetch('http://ip.jsontest.com/') .then(response => response.json()) .then(json => {console.log(json); }) .catch(error =>{ console.error(error);}) }; When I tested it - my observation was that https and http requests will work in Studio in preview mode. But only the https request will work on both Android and IOS devices. The http fetch request will not
Mechanism Concept in Vuforia Studio- How to make rotation more easy When we try to rotate a model or 3d modelitem about a particular space axis it seldom will rotate about the correct axis as we want. So, in this case we can try to solve this when we use some mathematical calculations. For example in the example(picture below) - door assembly we want to rotate the door subassembly via the door hinges: but when we try to rotate the door model about 60degree it rotates undesired on the wrong axis. The question is: Which is this axis and how to change it? The answer here is : When we have a PVZ model we cannot really change it! We can use some mathematical relations to get the correct behavior . In this particular sample case the correct javaScript relation should be something like : ... $scope.simple_door_slider_change = function (angle, door_length) { &nb
1.) The first point here is to clarify : is it possible to extract model data of 3d models in Vuforia Studio? ( data could be extracted by Creo View Toolkit apps but here is considered only the Vuforia Studio environment) Supposing , we have a model widget for an assembly model without explicit modelitem widget definitions. The question is: Can we extract data for the components and if yes, then what data we can extract? In Vuforia Studio Environment Extracting of data is possible only in Preview mode, because we have in preview mode the method tml3dRenderer.GetObject() where we can access a model object (a component) example: let comp_widget=tml3dRenderer.GetObject(selection).GetWidget() where the selection is some thing like "<modelname>-<compPath>" e.g. : "model-1-/0/0/3/2" Then from the widget we can extract data: var loc=tml3dRenderer.GetObject(selection).GetWidget().GetLocation() console.error("DEBUG getObj.Ge
You can get the view count for all public experiences by using the below REST API call. GET <your ES URL>/compliance/views This will return a JSON object with a views and billables field where: views = the download number of publicly accessible projects & billables = how many downloads are counted towards billable tokens You can also specify the startDate and endDate in your request. These parameters can be defined by a UTC date string, JSON date string, or time in milliseconds since a specified date.
Already have an account? Login
No account yet? Create an account
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.