Découvrez comment utiliser l'API Instant Placement ou les raycasts persistants dans vos propres applications.
Prérequis
Avant de continuer, assurez-vous de bien comprendre les concepts fondamentaux de la RA et de savoir configurer une session ARCore.
Noms des concepts
Les noms de certains concepts et méthodes peuvent différer entre AR Foundation et le SDK ARCore pour Unity. Vous les trouverez dans le tableau ci-dessous.
AR Foundation | 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
Ce guide suppose que vous avez déjà installé et configuré Unity. Dans le cas contraire, consultez la section Premiers pas avec les extensions ARCore pour AR Foundation pour connaître la procédure d'installation et de configuration.
Configurer une session avec ARRaycastManager
L'emplacement instantané (raycasts persistants) est disponible dès la sortie de la boîte avec le package AR 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 à l'objet de jeu AR Session Origin.
Lorsque le préfab Raycast n'est pas nul, ARRaycastManager
instancie le préfab et synchronise automatiquement sa pose avec celle de ARRaycast
.
AR Foundation 5.x
Ajoutez les objets de jeu prédéfinis XR Origin et AR Session.
Ajoutez le composant AR Raycast Manager à l'objet de jeu XR Origin.
Lorsque le préfab Raycast n'est pas nul, ARRaycastManager
instancie le préfab et synchronise automatiquement sa pose avec celle de ARRaycast
.
Placer un objet
Dans une nouvelle session ARCore, effectuez un test de positionnement à l'aide de 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 du suivi ARRaycast
Si ARCore dispose d'une position 3D précise, ARRaycast.trackingState
sera Tracking
.
Sinon, il commencera par Limited
et passera à Tracking
une fois qu'ARCore aura une position 3D précise. Une fois que l'état de suivi est défini sur Tracking
, il ne revient pas à Limited
.