본 게시글의 LiDAR 사용 부분은 Youtube순순스튜디오님의 해당 영상에서 배운 내용을 정리하였습니다.
iOS에서 제공하는 LiDAR를 활용하여 거리를 측정하기 위해 사용법을 찾던 중 Unity의 AR Foundation 기능을 이용하면 사용이 가능하다는 것을 알게 되었습니다.
AR Foundation을 사용했던 적이 전무했기에 인터넷과 유튜브를 헤매던 도중 가뭄의 단비같은 [Youtube순순스튜디오]님의유튜브를 알게되었으며 강의를 통해 알게된 Raycast에 대한 것을 정리하고자 합니다.
(해당 내용은 Raycast를 사용하여 터치한 부분에 공을 두는 것 입니다.)
먼저 iOS의 LiDAR는 비교적 최근 모델인
- iPhone pro model
- iPad pro model
에서 제공하고 있습니다.
Unity에서 AR 기능을 이용하기 위해 Unity project를 AR로 만들어줍니다.
그후 아래와 같이 구성된 초반 AR Session Origin의 AR Raycast Manager에 Raycast Prefab의 부분에 Ball prefeb을 추가합니다. (LiDAR를 사용하기 위해서는 Raycast Manager가 중요합니다.)
Ball prefab의 구성은 3D object의 Sphere를 생성하고 그곳의 Component를 구성해야합니다. (터치한 부분에 공을 놓기 위해서 Sphere를 둠.)
기존의 Default Component에서
위 그림과 같이 Sphere Collider의 Is Trigger를 체크해줍니다. (체크를 하면 Collider 영역이 있더라도 Collider 영역을 무시해서 중첩할 수 있음.)
이를 통해 생성된 plane에 Ball을 중첩해서 생성할 수 있게됩니다.
이렇게 생성한 Ball은 Prefab형태로 만들어야 하는데 간단하게 폴더를 생성 후 거기에 Drag and Drop을 합니다.
생성된 Prefab을 AR Raycast Manager의 Raycast Prefab에 넣어준 후 C# Script를 만들고
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.ARFoundation;
using UnityEngine.XR.ARSubsystems;
public class SetARBall : MonoBehaviour
{
// 추가한 RaycastManager를 component로 연동
public ARRaycastManager m_RaycastManager;
// 충돌되는 점들을 저장할 list 생성
static List<ARRaycastHit> s_Hits = new List<ARRaycastHit>();
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if(Input.touchCount > 0)
{
Vector2 touchPosition = Input.GetTouch(0).position;
// Raycast에서 touchPosition이 현재 터치한 포인트를, s_Hits가 포인트 저장, .planeWithinPolygon이 생성한 Plane위에 raycast를 생성
if (m_RaycastManager.Raycast(touchPosition, s_Hits, TrackableType.PlaneWithinPolygon))
{
var hitPose = s_Hits[0].pose;
// raycast에 연결되어있는 ratcastPrefab object를 hitPose.position, hitPose.rotation에 맞춰서 생성)
Instantiate(m_RaycastManager.raycastPrefab, hitPose.position, hitPose.rotation);
}
}
}
}
위 코드를 넣고
Script를 AR Session Origin을 넣고 사진과 같이 Raycast Manager에 AR Session Origin을 넣음으로 해당 Script가 동작하게 만들면
사진과 같이 터치한 부분에 공을 놓을 수 있습니다!!!!!!!!!!
To Be Continued...
'LiDAR' 카테고리의 다른 글
Unity AR iOS LiDAR 활용 (0) | 2024.02.26 |
---|---|
Unity AR 메모리 누수 현상 잡기 (0) | 2024.02.25 |
Unity AR 딥러닝 사용하기 (2) | 2024.02.25 |
Unity AR camera with iOS LiDAR (0) | 2024.02.24 |
Unity AR camera 화면 정보 일부분을 추출하기 (0) | 2024.02.23 |