Introducing Instant Tracking

We’ve got a few beta builds internally with it integrated into Universal AR but want to make some more improvements before we officially launch the public beta. We’re working flat out to get there but it’s impossible to give any accurate estimates, but if you twisted my arm, I’d say we hope there will be something public for you to play with in the next month or so.

1 Like

Right now you could use multiple InstantTrackers, but as all the anchors will need to stay in view for it to work well, it might not be that useful.

When we’ve released the full world tracking solution we’ll think about an API for multiple anchors (and extended tracking) that will all share the same world map data. The initial focus though is just to improve the implementation backing the single-anchor InstantTracking API to allow looking away from the anchor and more stable long-term placement.

1 Like

I want to place a ring on a finger or nail polish. Is this something I can use instant tracking for? Do you have an example I can play around with?

Thanks for your reply.
I have another question.
I’m currently using a hobbyist account.
I’ve put together an instant tracking experience I want my friends to try remotely.
As a hobbyist account is it possible to have a custom webar website to launch the experience?

Instant Tracking isn’t really suitable for these use cases - it’s best to think of it as a lightweight version of world tracking. Your examples would probably need specific hand-tracking methods (likely 3D for the first, and a 2D segmentation for the latter). We don’t currently offer either of those tracking types.

Hobbyist accounts can use the https://beta.zappar.app site to make use of instant tracking. You can create a deep-link to your experience that you can share with your friends by following my instructions in this post: Instant Tracking WebAR Beta - Example content and API discussion

Once you have your https://beta.zappar.app deep-link URL you can also create a QR code for it using one of the free online QR code generators.

This is some great work. Thanks for the sub symbol.
I am having one issue.
When previewing and publishing, I can’t reset the placement of the model by tapping the screen. I have to restart the experience.
Hopefully you can help me.
Thanks!

Hi @simon this is looking great, good work! Any more updates on if the world tracking beta is close to been released? I have an upcoming client project that this would be ideal for and would love to start testing this out.

1 Like

So we can still customise the launch screen with clients brand in “Beta” version, right?

If I remember right you just ask them to add it to your custom launch screen.

Steve

No sorry, never asked for that.
But can you tell me if I set the “Lite branded splash screen” in my project, it will also work with “beta”?
Because It’s an instant tracking for one client.

Thanks

I haven’t tested it in a while but I believe the “Lite branded splash screen” has all beta’s turned on.
And you would not need to go to the beta link. Just scan as normal. But I would still test it first. You should know right away.
If not just email them to turn it on for what ever one you want to use.

Steve

Alright, thank you Steve!

Correct @stevesanerd! The Lite Branded Splash Screen has Instant World Tracking enabled by default. @seelosdavid simply publish your experience and set the trigger to launch into it and all should work :slight_smile:

George

1 Like

Thank you @George and @stevesanerd for your help! :smiley::+1:

1 Like

Hello George, is there a way to let the user Rotate after the “tap to place”? Thank you

There’s a .zpp by marks here that has these modifications.
Luca

1 Like

Simon, do you mean something like this

function frameUpdate(evts) {
	if (evts.length !== 2) return;

	let distance = 1;
	let intersectionPoint = [0, 0, -1];

	for (let evt of evts) {
		if (evt.node === Ground_Plane) distance = evt.distance;
		if (evt.node === Camera_Plane) intersectionPoint = evt.localPosition;
	}

	intersectionPoint[2] = -1;

	latestPosition = Z.Vec3.scalarMultiply(intersectionPoint, distance);
	Placement_PreviewGroup.position(latestPosition);

	if (symbol.controllers.states.activeElement() === symbol.controllers.states.elements.Placement_Preview) {
		instantTracker.setAnchorTransformFromCamera([0, 0, -5], instantTracker.TransformOrientation.z_up_y_away_from_user)
	} else {
		instantTracker.setAnchorTransformFromCamera(latestPosition, instantTracker.TransformOrientation.unchanged);
	}
}

If I do this the experience freezes. I can’t set the anchorTransformFromCamera each frame. Try it yourself!

Those enums are defined on the “InstantTracker” class, not on your particular instance of it. So you’ll need:
(Z as any).InstantTracker.TransformOrientation.unchanged and similar for the other one.

I’ll fix up my earlier post too.

1 Like

Thank you @simon . However, the content is not always facing the camera as it should. Maybe I’m doing something wrong? Could you modify George’s latest subsymbol to always face the camera before placing the content?

For reference, the reason I’m asking about this now is because the subsymbol I shared which does what I want doesn’t work with the new world tracking. So I came back to this thread to see your solution. But your solution is not working either ;_; please help.

1 Like

Attached is the latest subsymbol that works with the new world tracking. Before placing it on the floor, the 3d content always faces the camera. But after placing it, it does not, so the user can walk around it. My modifications of being able to rotate and scale after placing still works.

Thanks @George!

InstantTrackingLookAtCameraRotateScaleMove.zpp (327.6 KB)

3 Likes