Metaio에서 3D 추적 시도
Metaio에서 3D 추적 시도
MetaioSDK를 사용하면 입체 구조를 AR 마커로 설정할 수 있습니다.
여기서 강조하고 싶은 것은, 「입체 구조물이 비치고 있는 평면 화상」이 아니라 「입체 구조물 그 자체」가 마커가 된다고 하는 것입니다.
실제로 해보겠습니다.
준비하는 것은
* MetaioSDK (iPhone 버전)
* Metaio Creator (Mac 버전)
* MetaioToolbox (iPad 앱)
세 가지입니다.
MetaioSDK
AR 라이브러리 본체입니다. iPhone 버전과 Android 버전 있음. 무상판도 있습니다만, 기동시에 로고가 나온다·카메라 화면에 워터 마크가 나온다고 하는 제약이 있습니다. 기능적인 제약이 없다고 생각합니다.
Metaio Creator
마커를 만드는 소프트웨어입니다. 이미지나 입체 구조물의 마커 정보를 캡처하여 어디에 객체가 나타나는지 조정할 수 있습니다.
MetaioToolbox
이미지를 마커로 하는 경우는 JPG나 PNG 파일을 준비하면 됩니다만, 입체 구조물을 마커로 하려면 어떻게 하면 좋을까? 이 MetaioToolbox라는 앱을 사용합니다. iPad에 설치하여 마커로 만들려는 입체 구조물을 촬영합니다.
이번에는 이 의자를 마커로 합니다. Toolbox를 사용하여 마커로 하고 싶은 것을 촬영합니다. 앱을 시작하고 촬영하려고하면 위의 이미지처럼 "이렇게 찍어라"라는 지침이 나타납니다. 어느 정도 반응이 시작되면 특징점을 나타내는 빨간색 점이 표시되기 시작합니다. 붉은 점이 많을수록 특징점이 많아지고 마커의 반응률이 높아집니다.
점의 수는 어느 정도가 적절한지, 기준은 없습니다만 경험적으로 1000을 넘으면 어느 정도 OK라고 생각합니다.
촬영이 완료되면 이 마커 정보가 앱에 저장됩니다. 이를 컴퓨터로 가져오려면 iTunes를 통해 데이터를 추출합니다.
↑3D Maps 안에 마커 정보
↑「.creator3dmap」파일이 마커 파일 실태. 이 파일을 Metaio Creator에서 엽니다.
Metaio Creator로 MetaioSDK로 읽을 수있는 형식으로 변환
".creator3dmap"형식의 파일은 어디까지나 MetaioCreator에서 처리할 수 있습니다. 이것을 MetaioSDK에 읽어들이기 위해서 변환 처리를 실시합니다.
MetaioCreator에서 열면 이런 화면이 됩니다. 여기에서 추가로, 표시할 3D 객체의 위치나 링크로 천이하는 등의 액션을 설정할 수 있습니다만, 이번은 단지 단순히 파일 변환합니다.
MetaioSDK에서 제공하는 샘플 프로젝트 이동
MetaioSDK에는 Example이라는 프로젝트가 있습니다. 여기서 Metaio가 무엇을 할 수 있는지 시험해 볼 수 있습니다.
여기에서 제공되는 "TutorialTrackingSamples"라는 샘플을 개조하여 이번에 찍은 마커를 시도합니다.
※ iPhone 버전을 사용합니다.
TrackingSamplesViewController.mm
// 21行目付近
// 今回使用したマーカーをTracking.xmlという名前にして適用
trackingConfigFile = [[NSBundle mainBundle] pathForResource:@"Tracking"
ofType:@"xml"
inDirectory:@"tutorialContent_crossplatform/TutorialTrackingSamples/Assets"];
// 35行目付近
// 標準では「メタイオマン」という3Dモデルが現れるようになるが、今回は「プリンマン」を使用する
NSString* imagePath = [[NSBundle mainBundle] pathForResource:@"pudding"
ofType:@"png"
inDirectory:@"tutorialContent_crossplatform/TutorialTrackingSamples/Assets"];
if (imagePath)
{
const char *utf8Path = [imagePath UTF8String];
m_imagePlane = m_pMetaioSDK->createGeometryFromImage(metaio::Path::fromUTF8(utf8Path));
if (m_imagePlane) {
m_imagePlane->setScale(metaio::Vector3d(3.0f,3.0f,3.0f));
}
else NSLog(@"Error: could not load image plane");
}
주요 변경 부분은 상기 부분. 이제 실행하고 마커로 촬영 한 의자에 카메라를 돌리면
무사히, 이 의자가 마커가 되어 반응해 주었습니다. 만약 의자의 두는 장소를 바꾸어도 프린만은 표시됩니다.
어렵지 않은 AR
Metaio를 사용하면 마커 생성 → AR 표시까지 일관되게 할 수 있으며, 입체 구조물이 마커가되므로 대상물의 폭이 넓어 편리합니다. 사용하는 소프트가 많기 때문에 힘들지만, 흥미가 있는 분은 꼭 해 보세요.
Reference
이 문제에 관하여(Metaio에서 3D 추적 시도), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ya_ma23/items/de6cf411ac73d225bd47
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
TrackingSamplesViewController.mm
// 21行目付近
// 今回使用したマーカーをTracking.xmlという名前にして適用
trackingConfigFile = [[NSBundle mainBundle] pathForResource:@"Tracking"
ofType:@"xml"
inDirectory:@"tutorialContent_crossplatform/TutorialTrackingSamples/Assets"];
// 35行目付近
// 標準では「メタイオマン」という3Dモデルが現れるようになるが、今回は「プリンマン」を使用する
NSString* imagePath = [[NSBundle mainBundle] pathForResource:@"pudding"
ofType:@"png"
inDirectory:@"tutorialContent_crossplatform/TutorialTrackingSamples/Assets"];
if (imagePath)
{
const char *utf8Path = [imagePath UTF8String];
m_imagePlane = m_pMetaioSDK->createGeometryFromImage(metaio::Path::fromUTF8(utf8Path));
if (m_imagePlane) {
m_imagePlane->setScale(metaio::Vector3d(3.0f,3.0f,3.0f));
}
else NSLog(@"Error: could not load image plane");
}
Reference
이 문제에 관하여(Metaio에서 3D 추적 시도), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ya_ma23/items/de6cf411ac73d225bd47텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)