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)
参数
返回