ARKit3 & Unity AR Foundation 사용 노트
6823 단어 ARFoundation
2020 현재 유니티와 협업한 앱을 제작할 때 주의해야 할 것은
유니티-ARKit-Plugin이 만든 글을 자주 봤지만, ARKit3 이후에는 AR Foundation이 사용하는 형태로 바뀌었고, 앞으로 제작하는 사람은 AR foundation 기사를 참고해야 한다.
참고로 AR Foundation 자체는 Unity 개발자가 사용할 수 있는 인터페이스만 제공하고, AR 기능 자체는 아직 실현되지 않았기 때문에 iOS는 ARKit XR Plugin이, 안드로이드는 ARCore XR Plugin이 필요하다.
그렇다면 자신을 포함해 AR을 시작하려면 도대체 어디서부터 시작해야 할까요?이렇게 곤혹스럽게
우선 샘플 코드의 집행은 무엇보다도 이해하기 쉽다.
샘플 코드
다른 샘플에 포함된 사례로...
평면 체크 Plane Detection
환경광 예측 Light Estimate
이미지 추적 Image Tracking
물체 추적 Object Tracking
공간 공유 World Map
얼굴 인식 페이스 트랙
동작 캡처 Body Tracking
아욱 People Occlusion
이런 게 존재하지만 실제 기기 환경이 엄격한 아이폰의 경우
페이스북, 바디트랙, PeopleOcclusion 등을 실행하려면 아이폰X의 향후 하드웨어 관점에 주의해야 합니다.
ARKit 사용>=A9 이후 프로세서
Face Tracking=True Depth 카메라
BodyTracking, People Occlusion>=A12 이후 프로세서
그러면 샘플 중의'Simple AR'은 가장 기본적인 모형으로 점운의 가시화와 평면 검측의 demo이다.
https://github.com/Unity-Technologies/arfoundation-samples/tree/master/Assets/Scenes/SimpleAR
"ARKit은 어떻게 자기 위치 추측과 환경 매핑을 진행합니까?"
https://qiita.com/k-boy/items/1de8e9ed1260834d02af
이런 보도는 이해하기 쉽지만 SLAM과 VIO의 기술을 사용하여 AR이라는 기술을 실현하였다.
SLAM(Simultanous Localization and Mapping)은 카메라로 촬영한 영상에서 환경의 3차원 정보와 카메라의 위치 자세를 동시에 추정하는 기술이다.
이 Simple AR에 포함된 샘플은 카메라의 특징점을 포착하여 평면으로 포착하고 그곳에서 대상을 설정하는 등 AR성 제어를 할 수 있다.
객체를 평면에 설치하는 방법은 간단합니다. Raycast를 사용합니다.
원래 유니티 게임을 만들 때 특정 대상에서 빛(Ray)을 발산해 빛이 부딪치는 다른 대상의 좌표를 얻는 라이캐스트 구조가 있었다.
AR의 경우 이와 동일한 장치를 사용해 카메라의 특징점 검출 평면으로 이동한 후 레이를 날려 물체를 구성할 수도 있다.
여기에는 일반적인 게임에서 사용하는 레이캐스트와 AR에서 사용하는 레이캐스트를 기술해 봤지만 거의 다 사용할 수 있었다.
isnotar.c
//マウスポインタの位置からrayを飛ばして、どのオブジェクトが当たったかを判別する
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit, Mathf.Infinity))
{}
RaycastManager를 사용하여 Ray를 평면으로 건너뛰고 터치한 좌표에 어떤 물체를 설정하는 예.isar.c
m_RaycastManager = GetComponent<ARRaycastManager>();
if (rayManage.Raycast(Input.GetTouch(0).position, hitResults)) {
}
검측 평면의 예.평면 외에도 벽 등의 수직면도 감지된다.이 사진처럼 물건이 뒤죽박죽이면 좀 어렵지만 아무것도 없는 곳이라면 쉽게 물건을 배치할 수 있다.
그렇다면 이번에는 다양한 사례에서 Object Tracking 샘플을 시험해 봤다.
Object Tracking은 지금까지 AR 등에서 사용된 QR 코드 등의 표시를 대체해 물체를 표시로 대체할 수 있다.따라서 부자연스럽게 QR코드를 붙일 필요가 없고, 일부 미술품 전시 등에 대한 설명, 전문 기기 등 조작 매뉴얼 등은 앞으로 다양한 상황에 활용될 수 있다.
Object Tracking 한번 해볼게요.
설치하다.
1. Unity 2019.2 이후 최신식 준비.
2. Unity를 열고 "arfoundation-samples"창고 경로에 항목 불러오기
3. Object 스캐너 다운로드 및 실행
https://developer.apple.com/documentation/arkit/scanning_and_detecting_3d_objects
스캔 대상
1. 대상을 평탄한 곳에 놓고 scan을 한다.크기로 보아 책상의 크기를 구상하고 있는 것 같다
더 작거나 작으면 오류가 발생할 수 있습니다.실제 차 등은 현재 매우 어렵다고 여겨진다.
2. 상자가 나왔기 때문에 손가락으로 교환하여 대상의 사이즈와 최대한 동일하게 합니다.
3. 위아래 좌우의 상자를 채우고 스캔 후 100%를 표시하며 스캔이 끝납니다.
4. 검색 데이터를 Reference ObjectAssets에 배치
5. 실행
Conclusion
Object Tracking을 시도해 봤는데 스캔 대상의 크기가 책상 크기였고, 표시 반응 전에 약간의 시간이 일치하지 않았으며, 표시를 이동해도 원활하게 표시되지 않았다어떤 점에서 로고가 움직이는 게 느껴져서 조금 부담스러웠어요.
이번에 몬스터잼이라는 차의 장난감을 사용해 봤는데 이 스캔을 바탕으로 AR 장비로 실물을 봤을 때 차의 정보와 과거 애니메이션, 운전자의 정보 등이 유리에 표시되면 매우 실용적이라고 생각했지만 사람들에게 주는 인상은 더욱 높은 식별 정밀도가 필요하다.
참고 자료
[ARKit] 3D 객체를 태그로 설정합니다.
http://nn-hokuson.hatenablog.com/entry/2019/06/25/192111
Object tracking에서의 Unity ARKit 고려 사항
https://qiita.com/JunNishimura/items/54fa35fd2a72ef1a2827
arkit-3
https://blogs.unity3d.com/2019/06/06/ar-foundation-support-for-arkit-3/
Reference
이 문제에 관하여(ARKit3 & Unity AR Foundation 사용 노트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/oggata/items/45e1e7bf094bdc594e9b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)