Log in or register to post comments

Where does .trackableName get set?

February 24, 2017 - 6:36am #1

I'm confused about where .TrackableName gets set.

 

I can see my markers coming in and going out of view in DefaultTrackableEventHandler. I can get their .TrackableName.

 

But where did these names get set? I can see the markers getting created in the console (see attachment).

 

When I debug.log I can see that the trace starts with VuforiaAbstractBehaviour:Start(). Where would this come from?

 

Any help greatly appreciated.

 

 

// Tom

Where does .trackableName get set?

March 13, 2017 - 4:36am #5

Hi MedaBit,

 

Many thanks for your response. It indeed looks like I've used CreateMarker to name the Framemarkers. I can see a log of the use of CreateMarker when my application starts up:

Created Marker named mymarker2 with id 0

UnityEngine.Debug:Log(Object)

Vuforia.MarkerTrackerImpl:InternalCreateMarker(Int32, String, Single)

Vuforia.StateManagerImpl:AssociateMarkerBehaviours()

Vuforia.VuforiaAbstractBehaviour:Start()

 

But I can not figure out where in the code CreateMarker lives. Can you see that from this trace?

 

// Tom

Where does .trackableName get set?

March 7, 2017 - 8:37am #4

Hello,

To confirm, FrameMarkers and their APIs were deprecated in the 6.0 release, and removed from 6.2: https://library.vuforia.com/articles/Release_Notes/Vuforia-SDK-Release-Notes

FrameMarkers were not named, rather, each instance had a hardcoded ID associated with it (0-511). These were packaged with previous versions of the SDK.

Below I've copied some of the previous API documentation. Hopefully this will be helpful.

Thanks.

Marker Interface Reference

A trackable behaviour for representing rectangular markers. This class is deprecated. The same functionality is provided by using a rectangular VuMark.

Public Member Functions

float  GetSize (): Returns the size (width and height) of the target (in 3D scene units).

void  SetSize (float size): Set the side (width and height) of the target (in 3D scene units).



Properties

int  MarkerID [get]: The marker id is an ID between 0 and 511 that represents different frame markers

Properties inherited from Trackable

int  ID [get]: The runtime Id of the Trackable

string  Name [get]: The name of the Trackable

MarkerTracker Class Reference [abstract]

This class handles marker creation and management at runtime This class is deprecated. The same functionality is provided by using a rectangular VuMark.

Public Member Functions

abstract MarkerAbstractBehaviour  CreateMarker (int markerID, String trackableName, float size): Creates a marker with the given id, name, and size. Registers the marker at native code. Returns a MarkerBehaviour object to receive updates.



abstract void  DestroyAllMarkers (bool destroyGameObject): Destroys all existing markers



abstract bool  DestroyMarker (Marker marker, bool destroyGameObject): Destroys the Marker at native code



abstract Marker  GetMarkerByMarkerID (int markerID): Returns the Marker with the given MarkerID. Returns null if none is found.



abstract IEnumerable< Marker >  GetMarkers (): Returns the markers registered in native.

Public member functions inherited from Trackable

abstract bool  Start (): Starts the Tracker



abstract void  Stop (): Stops the Tracker

Properties inherited from Trackable

virtual bool  IsActive [get, protected set]: If the Tracker is currently active

Where does .trackableName get set?

March 7, 2017 - 6:08am #3

Thank you for your reply. The thing is that I'm working with old sample code which makes use of framemarkers, which have not been downloaded through the target manager. In DefaultTrackableEventHandler I use the code below which works with .TrackableName. I can't figure out though how the framemarkers got named.

Where would the framemarkers get coupled to names like "mymarker0" and "FrameMarker4"?

 

Any help greatly appreciated.

 

Tom

 

public void OnTrackableStateChanged(

TrackableBehaviour.Status previousStatus,

TrackableBehaviour.Status newStatus)

{

if (newStatus == TrackableBehaviour.Status.DETECTED ||

newStatus == TrackableBehaviour.Status.TRACKED ||

newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)

{

OnTrackingFound();

switch (mTrackableBehaviour.TrackableName){

case "mymarker0": myFMfound[0] = true; break;

case "mymarker1": myFMfound[1] = true; break;

case "mymarker2": myFMfound[2] = true; break;

case "mymarker3": myFMfound[3] = true; break;

case "FrameMarker4": myFMfound[4] = true; break;

case "FrameMarker5": myFMfound[5] = true; break;

case "FrameMarker6": myFMfound[6] = true; break;

case "FrameMarker15": myFMfound[15] = true; break;

case "FrameMarker20": myFMfound[20] = true; break;

}

}

else

{

OnTrackingLost();

switch (mTrackableBehaviour.TrackableName){

case "mymarker0": myFMfound[0] = false; break;

case "mymarker1": myFMfound[1] = false; break;

case "mymarker2": myFMfound[2] = false; break;

case "mymarker3": myFMfound[3] = false; break;

case "FrameMarker4": myFMfound[4] = false; break;

case "FrameMarker5": myFMfound[5] = false; break;

case "FrameMarker6": myFMfound[6] = false; break;

case "FrameMarker15": myFMfound[15] = false; break;

case "FrameMarker20": myFMfound[20] = false; break;

}

}

}

 

Where does .trackableName get set?

February 28, 2017 - 5:55pm #2

Hello,

This should be the name you define when creating the target in the Target Manager workflow.

It also appears in the XML file of the downloaded device database.

Thanks.

Log in or register to post comments