본문 바로가기
PROGRAMING📚/Unity📑

[UNITY]뷰포리아(Vuforia) 이용해서 XR 만들기(2)

별찌루 2023. 7. 18.
728x90
반응형
 

[UNITY]뷰포리아(Vuforia) 이용해서 XR 만들기(1)

뷰포리아(Vuforia) 이용해서 XR 만들기(1) Vuforia SDK 설치하기 https://developer.vuforia.com/downloads/sdk?field-sdk-release-version-tid=58 SDK Download | Engine Developer Portal Use Vuforia Engine to build Augmented Reality Android, iOS, and

j2su0218.tistory.com

첫 번째에서는 Sample을 뷰포리아에서 제공하는 Imge Target을 캠을 통해 뜨웠다면

이번에는 내가 원하는 이미지를 카메라에 인식 시켰을 때

원하는 모델링이 나올 수 있도록 구현 하려고한다.

 

아무것도 없는 상황에서 작업을 하기 위해서

Vuforia Core Samples 가 아닌 Vuforia Engine 만 받은 프로젝트로 작업을 진행했다

 


AR 카메라 만들기

 

Hierarchy(하이어라키)에 있던 MainCamera를 지우고

하이어라키에서 오른쪽 마우스를 눌러 

Vuforia Engine 안에서

AR Camera Image Target을 추가해준다

 

현재 Image Target 안에는 인식할 이미지 데이터랑 인식했을 때

생성될 오브젝트가 없기 때문에 해당 작업을 해주어한다.

 

이미지 작업을 할 때도 아무 이미지나 적용이 가능 한 것이 아니다

 

뷰포리아 사이트로 들어가서

Target Manager 탭 선택 그리고 Add Database 버튼을 눌러준다

 

 Add Database 버튼을 누르면 다음과 같이 나오는데

TargetList 데이터에 대한 이름을 정해주고 Create를 눌러준다

 

생성한 데이터 베이스로 들어간다

이제 여기에 새 타겟을 추가하고 사용할 데이터베이스를 다운 받을 수 있다

추가할 수 있는 네 가지 타입의 타겟으로는 Single Image, Cuboid/Box, Cylinder, 3D Object가 있다

이미지를 인식받을 것이기 때문에 Type 에서 Image 를 선택하고

이미지 타겟으로 사용할 이미지를 골라 넣어준다.

 

어느 이미지를 사용해도 괜찮지만,

이미지 디테일이 최소 별 5개 등급의 타겟으로 평가되어야 카메라가 쉽게 추적할 수 있다.

 

왼쪽은 유니티에서 제공하는 이미지 타겟이고

오른쪽은 내가 넣고 싶은 이미지 타겟이다

 

비교하기 위해서 유니티에서 제공하는 이미지를 먼저 넣어 테스트 하려고한다

 

Width 값은 Unity 씬에 표시할 이미지의 크기(실제 단위)를 설정하는 데 필요한 스케일 값이다

 

Unity는 타겟 이미지의 크기와 관련하여 씬의 모든 요소를 측정한다.

유니티에서 제공하는 카드의 너비는 5.5cm 라서 

Width 값으로 5.5cm 를 작성 해주었는데

더 큰 크기의 타겟이 필요하면 이 Width 를 늘이면 된다고 한다

 

잘못된 파일 형식입니다.8비트 그레이 스케일 또는 JPG 또는 PNG 파일 형식의 24비트 RGB만 허용됩니다.

기본으로 제공해주는 이미지도 안되면 .. 어쩌라는...

유니티 예제가 되지 않는 이유가 이미지의 비트 수준이 32로 높아서 안되는 것이였다

 

이미지의 정확한 Width의 값을 넣어주기 위해서

아래 사이트에서 Pixel 값을 Cm로 변형 해서 값을 넣어줬다

https://www.translatorscafe.com/unit-converter/typography/pixel-(x)-to-centimeter-[cm]/ 

 

Typography and Digital Imaging Units Converter • Miscellaneous Converters • Compact Calculator • Online Unit Converters

Length and Distance ConverterMass ConverterDry Volume and Common Cooking MeasurementsArea ConverterVolume and Common Cooking Measurement ConverterTemperature ConverterPressure, Stress, Young’s Modulus ConverterEnergy and Work ConverterPower ConverterForc

www.translatorscafe.com

이름에는 공백이 없어야 하며 숫자(0-9), 문자(a-z), 밑줄(_) 및 대시( - )만 포함할 수 있습니다

이미지 하나 올리기 쉽지 않다...

 

유니티 예제 샘플도 안올라가는데

강인선수 이미지는 잘 올라가는... ^^ 최고

심지어 Rating 별이 높네요 제가 해봤을때

별이 3개까지도 괜찮은데 2개 정도 되면 진짜 거의 인식을 못함..

 

만들어진 타겟 이미지로 들어가보면

 

특정 선을 따라서 노란색 점들이 표시되어 있는 것을 볼 수 있다

저 점들이 많을 수록 높은 점수를 받는것 같다

 

이제 만들어진 데이터베이스를 Unity 안에 넣어줘야하는데

Target Manager로 다시 돌아와서 만든 Target을 선택해준다

그리고 Download Database 버튼을 눌러준다

 

Unity Editor를 선택해서 UnityPackageManager 형식으로 뽑아준다

 

 

임포트 까지 하고 나면 Vuforia Configuration안에 아까 만들었던

Database 명(TargetDataGrup) 이 추가 된 것을 볼 수 있다

그리고 Editor-Vuforia-ImageTargetTexturs 안에 등록했던 이미지가 있을 것을 볼 수 있다

 

이제 아까 생성한 ImageTarget 오브젝트 안에

다운받은 이미지를 넣어주면 된다

이제 이미지를 인식했을 때 보여줄 오브젝트를 하나 생성한다

오브젝트가 이미지 위에 올라오도록 배치 해준다

 

ImageTarget안에있는 Default Observer Event Handler 스크립트에서

비어있는 OnTargetFound()OnTargetLost()에 

인식 했을때 동작할 행동과 인식 하지 못했을 때 동작할 동작을 정해준다

나 같은 경우, 오브젝트를 활성화/ 비활성화 되도록 이벤트를 넣었다

 

 

728x90
반응형

댓글