Topic has a solution and is locked
Log in or register to post comments

Changing VuMark ID in Unity

August 18, 2016 - 6:48am #1
Topic solved

Hello,

We've imported a VuMark Target Manager database into Unity and added it to the scene. Unity has automatically generated the ID for the VuMark, how do we change the ID manually? 

For instance the Morton Tuxedos sample Vuforia provides has an ID length of 4 and type of STRING, how do we change the ID itself to something? (e.g 0001, 0002 etc.) as each time we add another VuMark to the scene it generates the same ID (which we can't find out what it actually is).

Thanks.

Changing VuMark ID in Unity

March 29, 2017 - 10:43pm #13

Quote:

Still no answer, after trying so many times. 

We would like to use the same workflow as with all other prefabs from Vuforia.

  1. Drag a prefab VuMark to the scene (like we do with ImageTarget).
  2. Start building assets on the VuMark instance. 
  3. Scan the target and the assets appear. 
  4. No extra custom programming in order to see the correct assets (like ImageTarget). What you see is what you get approach...

The reason the guys at Vuforia give is that the ID's are dynamic, instead of static. But that shouldn't be the problem. The only thing they should add is the (I guess simple) functionality to compare the recognised ID with the ID we put inside the input field in the inspector. And then work as expected. Of course they should not discriminate if there are more than 1 occurance of the same VuMarker. 

OR

Is there anybody that I can pay to do this? After that I will share the package in the asset store for free. 

Changing VuMark ID in Unity

October 20, 2016 - 12:20am #12

So basically what you are saying is that I can't use VuMarks in the way I used the FrameMarkers for this specific use-case.

Thanks for clearing this up!

I came up with a workaround for this. I already saw that Unitiy is giving back the correct IDs of my printed markers using this InstanceId you mentioned, as long as I only have one VuMark in the scene.

In order to achive that I can see my 3D object from different angles based on the tracked ID I created empty objects at different coordinates in Unity. Depending on the

tracked ID I simply change the transform of my VuMark to the correct coordinates. Might be not the best solution, but it's working for now.

Thanks.

Changing VuMark ID in Unity

October 18, 2016 - 7:41pm #11

lightshapeAR wrote:

However, with the VuMarks, when I put more than one instance of them from the prefabs into the scene, Unity throws an error that he detects multiple objects with the same ID.

In order to solve that I need to set my VuMark objects in Unity to the custom IDs that my printed VuMarks have, but it seems like that is not possible?

Don't have two VuMark prefabs in your Hierarchy/Scene that are both set to the same VuMark Template. If you do, you'll get a warning like this:

Duplicate Trackables detected for: 'MortonTuxedos'. Only one of the Trackables and its respective Augmentation will be selected for use at runtime - that selection is indeterminate here.

This is similar to the warning you get if you try to have two "Stones" ImageTargets in your scene. Whereas with FrameMarkers, you do have a prefab instance in your scene for each FrameMarker instance, it doesn't work that way with VuMarks. For a single VuMark Template (i.e. MortonTuxedos), you will have a single VuMark prefab instance. That one prefab instance will handle all of the variety of VuMark Instances that can be generated from that VuMark Template. With FrameMarkers, the IDs were already decided and they were 0-511 with max of 512. ID 1 was linked to a specific pattern of dots, as was ID 2, and so on. With VuMark, if you have an ID Type of String and an ID Length of 4 and you use "abcd", you will get a specific pattern of elements in your VuMark Instance. "abcd" will always return that specific pattern. You can't use "abcde" because the max length for that particular VuMark Template was 4. When you enter "efgh", a different pattern of elements will be generated. So when Vuforia sees a printed instance of your VuMark, it looks at the pattern it sees and then calculates what the ID is from that pattern and stores it in the VuMarkTarget.InstanceId when the OnVuMarkDetected() callback is called.

Look at the VuMarkHandler.cs script in our VuMark sample app and you'll see that when a VuMark instance is detected, the registered callback will be passed a VuMarkTarget which has an InstanceId containing the Id that you specified from the Generate VuMark Instance Dialog in Target Manager.

The MortonTuxedos.svg (the SVG template, NOT an SVG instance) file is included in the VuMark-Designer-6.0.112.zip.

We have a lot of documentation on VuMarks. See our articles here.

 

AttachmentSize
Image icon GenerateVuMarkInstanceDialog.png29.37 KB

Changing VuMark ID in Unity

October 18, 2016 - 8:44am #10

Hello,

just to clarify the use-case :

Imagine there is a 3D object that I want to display in AR on a table. So in the real world I stick my printed VuMarks on the 4 edges of the table, in order 

to walk around with my Ipad and see the 3D object from different angles depending on which side of the table I'm at.

 

The problem lies now within Unity. With the FrameMarkers I can place multiple instances of them into my scene (according to their place they will be on the table in real life). Plus give them an ID, let's say the marker on the left side is ID 1 or something. 

However, with the VuMarks, when I put more than one instance of them from the prefabs into the scene, Unity throws an error that he detects multiple objects with the same ID.

In order to solve that I need to set my VuMark objects in Unity to the custom IDs that my printed VuMarks have, but it seems like that is not possible?

Do they not support this use-case, how can I change the scripts to achive this or do I overlook how to easily do this with VuMarks?

Thanks.

Changing VuMark ID in Unity

October 18, 2016 - 6:52am #9

Hello,

From my perspective, VuMarks and FrameMarkers have a lot of similarities. Each instance of a FrameMarker and VuMark have unique IDs, both of which are immuteable. The difference here is that FrameMarker IDs have been assigned in the SDK (0-511), and VuMark IDs are assigned when they are created. Thinking about this some more, it means that either the developer will have to import understanding of the VuMark ID space into the app logic, or have some lookup service for the ID that will tell them more information about the VuMark - this could be a URL depending upon how the VuMark is created.

Reading back this forum thread, I'm having a difficult time understanding the use case you're attempting. Are you trying to assign the instance ID of a VuMark via the inspector? If so, this is not how VuMarks are supposed to work.

Additionally, I just ran the latest VuMark sample in Playmode and it worked as expected. Each time one of the VuMarks package with the sample was recognized, the instance ID was decoded by the SDK and printed to the screen by the scene's logic. This worked across multiple instances with each one showing a unique string identifier. 100 pre-packaged VuMarks are provided with the Unity sample in Assets\Editor\Vuforia\ForPrint\Vuforia-VuMark-Instances-00-99.zip

Thanks.

Changing VuMark ID in Unity

October 17, 2016 - 12:10am #8

Yes, same problem here. My Inspector looks just like your Screenshot.

Also same with the Support. The Support Team send me a link to this forum, which I was already aware of and

I also got a personal e-mail, but that guy doesn't answer back anymore.

 

Even with programming I wasn't able to set a VuMark gameobject to a certain ID. However, at least I could give out the

ID of the tracked VuMark in the console, which were indeed correct, so the VuMark creation process is really not the problem.

But that only workes as long as there is only one VuMark in the scene. As soon as I put another VuMark from the Prefabs into the

scene it gives that one the same ID and shows some errors...

I'm already doubting if this use-case is even supported by the VuMarks anymore. But then again they support to track multiple VuMarks at once,

so why. I'm kinda confused what's wrong here.

Changing VuMark ID in Unity

October 15, 2016 - 7:02am #7

It is not about the creation process, but the way VuMark changes workflow compared to the FrameMarker of ImageTargets. You cannot simply drop the VuMark prefab to the scene and start building your assets there. 

Changing VuMark ID in Unity

October 15, 2016 - 7:00am #6

Update: I dived into the Vuforia test scene for VuMark. It works, also after importing my own VuMark. It shows the ID as text and places a recognition box around it. Except it does not function in the way ImageTargets or the (depreciated) FrameMarkers are being used right now. You can not simply drag the Prefab onto the scene and start building your assets on there (like in the FrameMarker. 

That has now to be realised with programming? Why? Is it too difficult to add an extra parameter field in which we can put the ID? 

The error message about framemarkers also says to use the rectangular VuMark. Anybody knows where to find that one?

Changing VuMark ID in Unity

October 14, 2016 - 2:04am #5

I tried to make a material from the generated tag, and put it in the prefab, that doesn't work too.

I already also contacted their support department and I got a response that tells me how to work with object recognition... Not quite an on-topic answer. Or maybe it is? And I also got a personal e-mail from somebody that asks me to send him more information (which I did), but after several days, still no answer. 

There are tutorials to create VuMarks, to create VuMark instances, to import VuMark database in Unity. But not how to assign ID's to the VuMark prefab... Is there somebody out there that can take a good look at our screenshot and maybe compare it to theirs, to see if there is an option missing? Like the ID input field? 

I'm running:

macOS Sierra 10.12 (16A323) 

Unity: 5.4.1f1

Vuforia: 6.0.117

AttachmentSize
Image icon Screen Shot 2016-10-13 at 10.38.59.png263.46 KB

Changing VuMark ID in Unity

October 12, 2016 - 8:12am #4

Hello,

 

any update on this? I've exactly the same issue, generating and printing VuMarks with different IDs is no problem, but how can I tell Unity which Object has which ID?

There seems to be no option for this. It just gives the first VuMark prefab that I put into the Scene an ID by itself and every following one gets the same ID.

This seems such an essential part of developing with VuMarks, though I've been searching the Web and the Vuforia Scripts for days now without finding an answer.

Thanks

Changing VuMark ID in Unity

October 3, 2016 - 3:09pm #3

Same thing here! I understand and can produce all steps. I used the Morton Tuxedos example. And I managed to generate different VuMarks, that all have a different white and black code configuration. So far so good. 

I generated two VuMarks based on the Main Target. I used 'test' and 'wllm' as codes. I downloaded the images and printed them. There was no option to save them to any database (I guess that's not nescesary, because the value is encoded in those white and black parts). 

I'm stuck just there: How do I get Unity to recognise the two (and more) different VuMarks. I imported the database already, but there is only 1 VuMark Target in there (which is fine, I guess). When I scan both 'wllm' and 'test' it recognises the standard VuMark Target, but I can't declare the two variables 'wllm' and 'test' anywhere. So how do I tell Unity what to display? 

Maybe I'm overlooking something here. 

 

Changing VuMark ID in Unity

August 18, 2016 - 8:57am #2

Hello,

The VuMark creation process is broken into two steps:

  1. Generating the VuMark dataset
  2. Generating VuMark instances

VuMark ID types and lengths are defined when the dataset is created. These properties are immutable per dataset, and can only be updated by modifying the SVG file created during the VuMark design process:

https://library.vuforia.com/articles/Solution/Designing-a-VuMark-in-Adobe-Illustrator

VuMark instances are created individually via the TMS, or in batch via the API. Here is where you define the exact value/s to be encoded in a VuMark instance (that agree with the defined type and length).

https://library.vuforia.com/articles/Solution/How-To-Generate-A-VuMark-Instance-in-the-Target-Manager

https://library.vuforia.com/articles/Solution/Using-the-VuMark-Instance-Generation-API

Thus, there is no way to update a VuMark instance's value once it is created. Our API documentation confirms the same:

https://library.vuforia.com/sites/default/api/unity/interfaceVuforia_1_1VuMarkTarget.html

Hope this helps clarify.

Thanks

Log in or register to post comments