Mega Landmark 서비스 사용
이 문서는 WeChat Mini Program Mega 플러그인을 연동한 후 Mega Landmark의 로컬라이제이션 서비스를 사용하는 방법을 소개합니다.
시작하기 전에
- APIKey 가져오기 및 사용(Mega Landmark를 반드시 포함해야 함).
- MegaTracker의 개념과 워크플로를 이해합니다.
- MegaTracker 클라우드 서비스 인증을 이해합니다.
Mega Landmark 활성화
먼저 Landmark를 apiType으로 사용하여 MegaTrackerConfigs를 생성합니다.
그런 다음 MegaTrackerConfigs와 구성의 licenseKey를 사용하여 SessionConfigs를 생성합니다.
마지막으로 xr-frame 장면에 마운트된 EasyARMegaComponent의 createSession(sessionConfigs) 메서드로 session을 생성합니다.
const megaTrackerConfigs: easyar.MegaTrackerConfigs = {
access: apiKeyAccess,
apiType: mega.MegaApiType.Landmark
};
const sessionConfigs: easyar.SessionConfigs = {
megaTrackerConfigs: megaTrackerConfigs,
licenseKey: settings.EasyARLicenseKey
};
session = megaComponent.createSession(sessionConfigs);
LandmarkFilter 사용 방법
Landmark를 사용해 생성하면 MegaTracker는 내부적으로 MegaLandmarkFilter를 자동 인스턴스화합니다.
그 기능은 Landmark 서비스를 사용할 때 SpotId 또는 GNSS 데이터를 통해 현재 가장 적합한 Mega 로컬라이제이션 맵 라이브러리를 MegaTracker가 필터링하는 것입니다.
필터링 API는 start(options)가 성공한 후에만 호출할 수 있습니다.
MegaTracker가 Landmark 서비스를 사용하지만 필터링이 성공하지 않은 경우, 로컬라이제이션 상태는 항상 MissingSpotVersionId입니다
- 제공된 SpotID를 사용하여 로컬라이제이션 맵 라이브러리 매칭:
Landmark의 filterBySpotId(spotId) 메서드를 사용하여 SpotID로 로컬라이제이션 맵 라이브러리를 매칭합니다.
async landmarkFilter() {
const res = await session.megaTracker.landmarkFilter.filterBySpotId(settings.LandmarkSpotId);
if (res.status != mega.MegaLandmarkFilterStatus.Found) {
console.error(`LandmarkFilter Failed, status: ${mega.MegaLandmarkFilterStatus[res.status]}, exceptionInfo : ${res.exceptionInfo}`)
}
}
- 현재 GNSS 데이터를 사용하여 로컬라이제이션 맵 라이브러리 매칭:
Landmark의 filterByLocation() 메서드를 사용하여 현재 GNSS 데이터로 로컬라이제이션 맵 라이브러리를 매칭합니다.
async landmarkFilter() {
const res = await session.megaTracker.landmarkFilter.filterByLocation();
if (res.status != mega.MegaLandmarkFilterStatus.Found) {
console.error(`LandmarkFilter Failed, status: ${mega.MegaLandmarkFilterStatus[res.status]}, exceptionInfo : ${res.exceptionInfo}`)
}
}