Découvrez comment utiliser le API Instant Placement ou diffusions raycast persistantes, dans vos propres applications.
Prérequis
Assurez-vous de bien maîtriser les concepts fondamentaux de la RA. et comment configurer une session ARCore avant de continuer.
Noms des concepts
Les noms de certains concepts et méthodes peuvent différer entre AR Foundation et SDK ARCore pour Unity. Vous les trouverez dans le tableau ci-dessous pour plus de commodité.
Éléments de base de la RA | SDK ARCore pour Unity |
Raycasts persistants | Emplacement instantané |
ARRaycastManager.AddRaycast(Vector2, float)
|
Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
|
ARRaycast
|
TrackableHit
|
(Aucune équivalence) | InstantPlacementPoint
|
ARRaycast.trackingState
|
InstantPlacementPointTrackingMethod
|
Prérequis
Dans ce guide, nous partons du principe que vous avez déjà installé et configuré Unity. Si ce n'est pas le cas, consultez la page Getting started with ARCore Extensions for AR Foundation pour connaître les étapes d'installation et de configuration.
Configurer une nouvelle session avec ARRaycastManager
Instant Placement (raycasts persistants) est prêt à l'emploi avec la RA Foundation". Suivez ces étapes pour configurer votre scène.
AR Foundation 4.x
Ajoutez les objets de jeu prédéfinis AR Session Origin et AR Session
Ajoutez le composant AR Raycast Manager dans Objet de jeu AR Session Origin.
Lorsque Raycast Prefab n'est pas nul, ARRaycastManager
va instancier Prefab et synchroniser automatiquement son état avec l'objet pos
ARRaycast
AR Foundation 5.x
Ajoutez les objets de jeu prédéfinis XR Origin et AR Session
Ajoutez le composant AR Raycast Manager dans Objet de jeu XR Origin.
Lorsque Raycast Prefab n'est pas nul, ARRaycastManager
va instancier Prefab et synchroniser automatiquement son état avec l'objet pos
ARRaycast
Placer un objet
Dans une nouvelle session ARCore, effectuez un test de positionnement en utilisant
ARRaycastManager.AddRaycast(Vector2, float)
public ARRaycastManager RaycastManager; // set from the Editor Inspector.
void Update()
{
Touch touch;
if (Input.touchCount < 1 || (touch = Input.GetTouch(0)).phase != TouchPhase.Began)
{
return;
}
if (EventSystem.current.IsPointerOverGameObject(touch.fingerId))
{
return;
}
ARRaycast raycast = RaycastManager.AddRaycast(touch.position, _estimateDistance);
if (raycast != null)
{
// You can instantiate a 3D object here if you haven’t set Raycast Prefab in the scene.
…
}
}
Surveiller l'état de suivi ARRaycast
Si ARCore a une position précise en 3D, ARRaycast.trackingState
sera Tracking
.
Sinon, il commencera par Limited
et passer à Tracking
une fois qu'ARCore aura trouvé une bonne posture 3D. Une fois que l'état du suivi devient Tracking
,
il ne rétablira pas
Limited