Class MegaGoTracker
提供設備端定位功能。
MegaGoTracker 占用 2 個相機緩衝區。
MegaGoTracker
方法
isAvailable
檢查組件是否可用。在 Android 上要求 API Level 24 或更高;所有平台均需滿足必要的運行時依賴。
bool easyar_MegaGoTracker_isAvailable(void)
static bool isAvailable()
public static boolean isAvailable()
companion object fun isAvailable(): Boolean
public static func isAvailable() -> Bool
public static bool isAvailable()
傳回值
輸入幀輸入端口。輸入幀必須包含圖像、相機參數和時間戳。6DoF 空間資訊必須包含 cameraTransform 和 trackingStatus。參考 InputFrameSink。
void easyar_MegaGoTracker_inputFrameSink(easyar_MegaGoTracker * This, easyar_InputFrameSink * * Return)
std::shared_ptr<InputFrameSink> inputFrameSink()
public @Nonnull InputFrameSink inputFrameSink()
fun inputFrameSink(): InputFrameSink
- (easyar_InputFrameSink *)inputFrameSink
public func inputFrameSink() -> InputFrameSink
public virtual InputFrameSink inputFrameSink()
傳回值
accelerometerResultSink
void easyar_MegaGoTracker_accelerometerResultSink(easyar_MegaGoTracker * This, easyar_AccelerometerResultSink * * Return)
std::shared_ptr<AccelerometerResultSink> accelerometerResultSink()
public @Nonnull AccelerometerResultSink accelerometerResultSink()
fun accelerometerResultSink(): AccelerometerResultSink
- (easyar_AccelerometerResultSink *)accelerometerResultSink
public func accelerometerResultSink() -> AccelerometerResultSink
public virtual AccelerometerResultSink accelerometerResultSink()
傳回值
bufferRequirement
int easyar_MegaGoTracker_bufferRequirement(const easyar_MegaGoTracker * This)
public int bufferRequirement()
fun bufferRequirement(): Int
public func bufferRequirement() -> Int32
public virtual int bufferRequirement()
傳回值
outputFrameSource
void easyar_MegaGoTracker_outputFrameSource(easyar_MegaGoTracker * This, easyar_OutputFrameSource * * Return)
std::shared_ptr<OutputFrameSource> outputFrameSource()
public @Nonnull OutputFrameSource outputFrameSource()
fun outputFrameSource(): OutputFrameSource
- (easyar_OutputFrameSource *)outputFrameSource
public func outputFrameSource() -> OutputFrameSource
public virtual OutputFrameSource outputFrameSource()
傳回值
create
void easyar_MegaGoTracker_create(easyar_MegaGoTracker * * Return)
static std::shared_ptr<MegaGoTracker> create()
public static @Nonnull MegaGoTracker create()
companion object fun create(): MegaGoTracker
+ (easyar_MegaGoTracker *)create
public static func create() throws -> MegaGoTracker
public static MegaGoTracker create()
傳回值
void easyar_MegaGoTracker_extractBlockInfoFromFile(easyar_String * path, easyar_OptionalOfMegaGoBlockInfo * Return)
static std::optional<std::shared_ptr<MegaGoBlockInfo>> extractBlockInfoFromFile(std::string path)
public static @Nullable MegaGoBlockInfo extractBlockInfoFromFile(java.lang.@Nonnull String path)
companion object fun extractBlockInfoFromFile(path: String): MegaGoBlockInfo?
+ (easyar_MegaGoBlockInfo *)extractBlockInfoFromFile:(NSString *)path
public static func extractBlockInfoFromFile(_ path: String) -> MegaGoBlockInfo?
public static Optional<MegaGoBlockInfo> extractBlockInfoFromFile(string path)
參數
傳回值
void easyar_MegaGoTracker_extractBlockInfoFromBuffer(easyar_Buffer * buffer, easyar_OptionalOfMegaGoBlockInfo * Return)
static std::optional<std::shared_ptr<MegaGoBlockInfo>> extractBlockInfoFromBuffer(std::shared_ptr<Buffer> buffer)
public static @Nullable MegaGoBlockInfo extractBlockInfoFromBuffer(@Nonnull Buffer buffer)
companion object fun extractBlockInfoFromBuffer(buffer: Buffer): MegaGoBlockInfo?
+ (easyar_MegaGoBlockInfo *)extractBlockInfoFromBuffer:(easyar_Buffer *)buffer
public static func extractBlockInfoFromBuffer(_ buffer: Buffer) -> MegaGoBlockInfo?
public static Optional<MegaGoBlockInfo> extractBlockInfoFromBuffer(Buffer buffer)
參數
傳回值
setEnableStatelessLocalization
設定是否啟用無狀態定位。啟用無狀態定位時,定位時不會使用上一次定位結果。預設為 false。
void easyar_MegaGoTracker_setEnableStatelessLocalization(easyar_MegaGoTracker * This, bool enableStatelessLocalization)
void setEnableStatelessLocalization(bool enableStatelessLocalization)
public void setEnableStatelessLocalization(boolean enableStatelessLocalization)
fun setEnableStatelessLocalization(enableStatelessLocalization: Boolean): Unit
- (void)setEnableStatelessLocalization:(bool)enableStatelessLocalization
public func setEnableStatelessLocalization(_ enableStatelessLocalization: Bool) -> Void
public virtual void setEnableStatelessLocalization(bool enableStatelessLocalization)
參數
| 名稱 |
類型 |
描述 |
| enableStatelessLocalization |
Boolean |
|
傳回值
setResultAsyncMode
設置結果異步模式。如果結果通過 outputFrameSource 輸出,應設置為 true;如果結果通過 getSyncResult 獲取,應設置為 false。預設值為 true。同步模式僅在使用 XR License 時可用。請求的模式成功應用時返回 true;不支援同步模式時返回 false,並保持異步模式。
bool easyar_MegaGoTracker_setResultAsyncMode(easyar_MegaGoTracker * This, bool enableAsync)
bool setResultAsyncMode(bool enableAsync)
public boolean setResultAsyncMode(boolean enableAsync)
fun setResultAsyncMode(enableAsync: Boolean): Boolean
- (bool)setResultAsyncMode:(bool)enableAsync
public func setResultAsyncMode(_ enableAsync: Bool) -> Bool
public virtual bool setResultAsyncMode(bool enableAsync)
參數
| 名稱 |
類型 |
描述 |
| enableAsync |
Boolean |
|
傳回值
status
返回 MegaGoTracker 當前的運行狀態。
easyar_MegaGoTrackerStatus easyar_MegaGoTracker_status(const easyar_MegaGoTracker * This)
MegaGoTrackerStatus status()
- (easyar_MegaGoTrackerStatus)status
public func status() -> MegaGoTrackerStatus
public virtual MegaGoTrackerStatus status()
傳回值
error
返回 MegaGoTracker 當前的錯誤。沒有錯誤時為空。
easyar_OptionalOfMegaGoTrackerError easyar_MegaGoTracker_error(const easyar_MegaGoTracker * This)
std::optional<MegaGoTrackerError> error()
public @Nullable Integer error()
public func error() -> MegaGoTrackerError?
public virtual Optional<MegaGoTrackerError> error()
傳回值
setLocalizationCallback
設定定位回調。當運行狀態為 Detecting 或 Tracking 時,每次有效且未取消的定位回應都會報告其是否更新了輸出,以及對應輸入幀的時間戳。
void easyar_MegaGoTracker_setLocalizationCallback(easyar_MegaGoTracker * This, easyar_CallbackScheduler * callbackScheduler, easyar_FunctorOfVoidFromMegaGoTrackerLocalizationResponse callback)
void setLocalizationCallback(std::shared_ptr<CallbackScheduler> callbackScheduler, std::function<void(std::shared_ptr<MegaGoTrackerLocalizationResponse>)> callback)
public void setLocalizationCallback(@Nonnull CallbackScheduler callbackScheduler, @Nonnull FunctorOfVoidFromMegaGoTrackerLocalizationResponse callback)
fun setLocalizationCallback(callbackScheduler: CallbackScheduler, callback: FunctorOfVoidFromMegaGoTrackerLocalizationResponse): Unit
- (void)setLocalizationCallback:(easyar_CallbackScheduler *)callbackScheduler callback:(void (^)(easyar_MegaGoTrackerLocalizationResponse * response))callback
public func setLocalizationCallback(_ callbackScheduler: CallbackScheduler, _ callback: @escaping (MegaGoTrackerLocalizationResponse) -> Void) -> Void
public virtual void setLocalizationCallback(CallbackScheduler callbackScheduler, Action<MegaGoTrackerLocalizationResponse> callback)
參數
傳回值
setCameraPositionOverride
設置相機位置相對於地圖 block 的覆蓋值。設置之後,MegaGoTracker 會輸出覆蓋值,而不使用輸入幀數據中的對應坐標。可用於在已知地圖信息且感測器有限的情況下提高輸出位姿的精度。
void easyar_MegaGoTracker_setCameraPositionOverride(easyar_MegaGoTracker * This, easyar_OptionalOfFloat x, easyar_OptionalOfFloat y, easyar_OptionalOfFloat z)
void setCameraPositionOverride(std::optional<float> x, std::optional<float> y, std::optional<float> z)
public void setCameraPositionOverride(java.lang.@Nullable Float x, java.lang.@Nullable Float y, java.lang.@Nullable Float z)
fun setCameraPositionOverride(x: Float?, y: Float?, z: Float?): Unit
- (void)setCameraPositionOverride:(NSNumber *)x y:(NSNumber *)y z:(NSNumber *)z
public func setCameraPositionOverride(_ x: Float?, _ y: Float?, _ z: Float?) -> Void
public virtual void setCameraPositionOverride(Optional<float> x, Optional<float> y, Optional<float> z)
參數
| 名稱 |
類型 |
描述 |
| x |
Optional<Single> |
|
| y |
Optional<Single> |
|
| z |
Optional<Single> |
|
傳回值
loadTargetFromFile
從文件異步加載一個 target。target 只有在成功加載後才能用於定位。
同時只能有一個 target 生效。調用本方法會立即清除 Tracker 當前定位到的 block 實例和累積的跟蹤狀態。如果本次加載失敗或被取消,之前的 target 和定位實例不會恢復。
調用本方法會取代尚未完成的加載請求。正在進行的加載可能無法立即停止;被取代請求的 callback 會在操作結束後調用,其結果狀態為 MegaGoTargetLoadStatus.Canceled。
target 無法解析或內容損壞時,結果狀態為 MegaGoTargetLoadStatus.InvalidTarget。
本方法會立即返回。加載完成後,callback 會在 CallbackScheduler 指定的線程上調用;成功時結果中包含加載的 block 信息。MegaGoTargetLoadStatus.Success 僅表示 target 數據加載成功。後續校驗仍可能進行或失敗,應通過 status 和 error 檢查 MegaGoTracker 當前的處理狀態和錯誤。關閉 MegaGoTracker 後不會再調用尚未執行的 callback。
void easyar_MegaGoTracker_loadTargetFromFile(easyar_MegaGoTracker * This, easyar_String * path, easyar_CallbackScheduler * callbackScheduler, easyar_FunctorOfVoidFromMegaGoTargetLoadResult callback)
void loadTargetFromFile(std::string path, std::shared_ptr<CallbackScheduler> callbackScheduler, std::function<void(std::shared_ptr<MegaGoTargetLoadResult>)> callback)
public void loadTargetFromFile(java.lang.@Nonnull String path, @Nonnull CallbackScheduler callbackScheduler, @Nonnull FunctorOfVoidFromMegaGoTargetLoadResult callback)
fun loadTargetFromFile(path: String, callbackScheduler: CallbackScheduler, callback: FunctorOfVoidFromMegaGoTargetLoadResult): Unit
- (void)loadTargetFromFile:(NSString *)path callbackScheduler:(easyar_CallbackScheduler *)callbackScheduler callback:(void (^)(easyar_MegaGoTargetLoadResult * result))callback
public func loadTargetFromFile(_ path: String, _ callbackScheduler: CallbackScheduler, _ callback: @escaping (MegaGoTargetLoadResult) -> Void) -> Void
public virtual void loadTargetFromFile(string path, CallbackScheduler callbackScheduler, Action<MegaGoTargetLoadResult> callback)
參數
傳回值
loadTargetFromBuffer
從記憶體異步加載一個 target。target 只有在成功加載後才能用於定位。
同時只能有一個 target 生效。調用本方法會立即清除 Tracker 當前定位到的 block 實例和累積的跟蹤狀態。如果本次加載失敗或被取消,之前的 target 和定位實例不會恢復。
調用本方法會取代尚未完成的加載請求。正在進行的加載可能無法立即停止;被取代請求的 callback 會在操作結束後調用,其結果狀態為 MegaGoTargetLoadStatus.Canceled。
target 無法解析或內容損壞時,結果狀態為 MegaGoTargetLoadStatus.InvalidTarget。
本方法會立即返回。加載完成後,callback 會在 CallbackScheduler 指定的線程上調用;成功時結果中包含加載的 block 資訊。MegaGoTargetLoadStatus.Success 僅表示 target 資料加載成功。後續校驗仍可能進行或失敗,應通過 status 和 error 檢查 MegaGoTracker 當前的處理狀態和錯誤。關閉 MegaGoTracker 後不會再調用尚未執行的 callback。
void easyar_MegaGoTracker_loadTargetFromBuffer(easyar_MegaGoTracker * This, easyar_Buffer * buffer, easyar_CallbackScheduler * callbackScheduler, easyar_FunctorOfVoidFromMegaGoTargetLoadResult callback)
void loadTargetFromBuffer(std::shared_ptr<Buffer> buffer, std::shared_ptr<CallbackScheduler> callbackScheduler, std::function<void(std::shared_ptr<MegaGoTargetLoadResult>)> callback)
public void loadTargetFromBuffer(@Nonnull Buffer buffer, @Nonnull CallbackScheduler callbackScheduler, @Nonnull FunctorOfVoidFromMegaGoTargetLoadResult callback)
fun loadTargetFromBuffer(buffer: Buffer, callbackScheduler: CallbackScheduler, callback: FunctorOfVoidFromMegaGoTargetLoadResult): Unit
- (void)loadTargetFromBuffer:(easyar_Buffer *)buffer callbackScheduler:(easyar_CallbackScheduler *)callbackScheduler callback:(void (^)(easyar_MegaGoTargetLoadResult * result))callback
public func loadTargetFromBuffer(_ buffer: Buffer, _ callbackScheduler: CallbackScheduler, _ callback: @escaping (MegaGoTargetLoadResult) -> Void) -> Void
public virtual void loadTargetFromBuffer(Buffer buffer, CallbackScheduler callbackScheduler, Action<MegaGoTargetLoadResult> callback)
參數
傳回值
unloadTarget
卸載當前 target,並清除當前定位實例和累積的跟蹤狀態。target 的邏輯狀態會立即變為未加載。
調用本方法還會取代所有尚未完成的加載請求。正在進行的加載可能無法立即停止;被取代請求的 callback 會在操作結束後調用,其結果狀態為 MegaGoTargetLoadStatus.Canceled。
本方法沒有 callback,並且不會等待卸載操作完成。如果沒有已加載或正在加載的 target,調用本方法不會產生額外效果。
void easyar_MegaGoTracker_unloadTarget(easyar_MegaGoTracker * This)
public void unloadTarget()
public func unloadTarget() -> Void
public virtual void unloadTarget()
傳回值
start
開始處理輸入幀並輸出結果。調用成功時返回 true;MegaGoTracker 已關閉時返回 false。重複調用不會產生額外效果。
stop 後調用本方法會繼續使用已加載的 target,無需重新加載。
bool easyar_MegaGoTracker_start(easyar_MegaGoTracker * This)
public func start() -> Bool
public virtual bool start()
傳回值
stop
停止處理輸入幀,並清除當前定位到的 block 實例和累積的跟蹤狀態。尚未完成的處理結果會被丟棄。
已加載的 target 不會卸載,尚未完成的 target 加載也不會取消,其 callback 仍會被調用。此時運行狀態為 Idle;調用 start 可繼續使用已加載的 target。
void easyar_MegaGoTracker_stop(easyar_MegaGoTracker * This)
public func stop() -> Void
public virtual void stop()
傳回值
close
永久關閉 MegaGoTracker,停止處理輸入幀,清除當前定位到的 block 實例和累積的跟蹤狀態,卸載 target,並釋放相關資源。重複調用不會產生額外效果。
所有尚未完成的定位和 target 加載操作都會被取消,尚未執行的 callback 不會再被調用。本方法可能等待正在進行的操作結束後返回。close 之後不應繼續使用 MegaGoTracker,調用 start 將返回 false。
void easyar_MegaGoTracker_close(easyar_MegaGoTracker * This)
public func close() -> Void
public virtual void close()
傳回值
getSyncResult
獲得同步輸出結果。motionInputData 必須非空,並且需要通過 setResultAsyncMode 啟用同步模式。當 MegaGoTracker 已暫停、已關閉、處於錯誤狀態或當前無法生成同步結果時,返回值為空。
void easyar_MegaGoTracker_getSyncResult(easyar_MegaGoTracker * This, easyar_MotionInputData * motionInputData, easyar_OptionalOfMegaGoTrackerResult * Return)
std::optional<std::shared_ptr<MegaGoTrackerResult>> getSyncResult(std::shared_ptr<MotionInputData> motionInputData)
public @Nullable MegaGoTrackerResult getSyncResult(@Nonnull MotionInputData motionInputData)
fun getSyncResult(motionInputData: MotionInputData): MegaGoTrackerResult?
- (easyar_MegaGoTrackerResult *)getSyncResult:(easyar_MotionInputData *)motionInputData
public func getSyncResult(_ motionInputData: MotionInputData) -> MegaGoTrackerResult?
public virtual Optional<MegaGoTrackerResult> getSyncResult(MotionInputData motionInputData)
參數
傳回值