Introducing Instant Tracking

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