內容目录

上一个主题

Matrix44F Record

下一个主题

ObjectTracker Class

ObjectTarget Class

Inherits: Target

Description

ObjectTarget表示3D object target,它可以被 ObjectTracker 所跟踪。

ObjectTarget的大小由 obj 文件决定。可以通过修改 scale 达到修改size的目的。 scale 默认为1。

ObjectTarget内的数值在可以被读取之前需要首先通过setup方法载入。然后再通过 ObjectTracker.loadTargetObjectTracker.loadTargetBlocked 成功载入 ObjectTracker 之后可以被 ObjectTracker 检测和跟踪。

Constructor

C: void easyar_ObjectTarget__ctor(easyar_ObjectTarget** Return)
C++11: ObjectTarget()
Traditional C++: ObjectTarget()
Java: public ObjectTarget()
Objective-C: + (easyar_ObjectTarget *) create
Swift (since EasyAR SDK 2.1.0): public convenience init()

setup

从一个json文件或json字符串配置target。这个方法只会解析json文件或字符串。

如果name非空则配置名字为name的target,否则配置第一个target。

如果 path 是json文件的路径,storageType应该设成 AppAssetsAbsolute ,表示路径的类型。json文件内部的路径应该是绝对路径或相对于json文件的相对路径。

如果 path 是json字符串, storageType应该设成 (App | Json)(Assets | Json)( Absolute | Json) 。json字符串里的路径应该是绝对路径或相对于storageType所指向的根目录的相对路径。

关于StorageType的详细描述参见 StorageType

C: bool easyar_ObjectTarget_setup(easyar_ObjectTarget* This, easyar_String* path, int storageType, easyar_String* name)
C++11: bool setup(std::string path, int storageType, std::string name)
Traditional C++: bool setup(String* path, int storageType, String* name)
Java: public native boolean setup(java.lang.String path, int storageType, java.lang.String name)
Objective-C: - (bool)setup:(NSString *)path storageType:(int)storageType name:(NSString *)name
Swift (since EasyAR SDK 2.1.0): public func setup(_ path: String, _ storageType: Int32, _ name: String) -> Bool

setupAll

从类型为 storageType 的 path 中配置json文件或json字符串中列出的所有target。关于storageType和json文件的详细描述参见setup和 StorageType

C: void easyar_ObjectTarget_setupAll(easyar_String* path, int storageType, easyar_ListOfPointerOfObjectTarget** Return)
C++11: static std::vector<std::shared_ptr<ObjectTarget>> setupAll(std::string path, int storageType)
Traditional C++: static void setupAll(String* path, int storageType, ListOfPointerOfObjectTarget** Return)
Java: public static native java.util.ArrayList<ObjectTarget> setupAll(java.lang.String path, int storageType)
Objective-C: + (NSArray<easyar_ObjectTarget *> *)setupAll:(NSString *)path storageType:(int)storageType
Swift (since EasyAR SDK 2.1.0): public static func setupAll(_ path: String, _ storageType: Int32) -> [ObjectTarget]

scale

ObjectTarget的scale。默认值为1。

C: float easyar_ObjectTarget_scale(const easyar_ObjectTarget* This)
C++11: float scale()
Traditional C++: float scale()
Java: public native float scale()
Objective-C: - (float)scale
Swift (since EasyAR SDK 2.1.0): public func scale() -> Float

boundingBox

物体的包围盒,包括盒子的8个顶点。

C: void easyar_ObjectTarget_boundingBox(easyar_ObjectTarget* This, easyar_ListOfVec3F** Return)
C++11: std::vector<Vec3F> boundingBox()
Traditional C++: void boundingBox(ListOfVec3F** Return)
Java: public native java.util.ArrayList<Vec3F> boundingBox()
Objective-C: - (NSArray<easyar_Vec3F *> *)boundingBox
Swift (since EasyAR SDK 2.1.0): public func boundingBox() -> [Vec3F]

boundingBoxGL

使用OpenGL坐标系和矩阵格式的物体的包围盒,包括盒子的8个顶点。

C: void easyar_ObjectTarget_boundingBoxGL(easyar_ObjectTarget* This, easyar_ListOfVec3F** Return)
C++11: std::vector<Vec3F> boundingBoxGL()
Traditional C++: void boundingBoxGL(ListOfVec3F** Return)
Java: public native java.util.ArrayList<Vec3F> boundingBoxGL()
Objective-C: - (NSArray<easyar_Vec3F *> *)boundingBoxGL
Swift (since EasyAR SDK 2.1.0): public func boundingBoxGL() -> [Vec3F]

setScale

设置ObjectTarget的scale。

C: bool easyar_ObjectTarget_setScale(easyar_ObjectTarget* This, float scale)
C++11: bool setScale(float scale)
Traditional C++: bool setScale(float scale)
Java: public native boolean setScale(float scale)
Objective-C: - (bool)setScale:(float)scale
Swift (since EasyAR SDK 2.1.0): public func setScale(_ scale: Float) -> Bool

runtimeID

返回target id。target id是运行时创建的整型数据,只有在成功的配置之后才是有效(非0)的。这个id是非0且全局递增的。

C: int easyar_ObjectTarget_runtimeID(const easyar_ObjectTarget* This)
C++11: int runtimeID()
Traditional C++: int runtimeID()
Java: public native int runtimeID()
Objective-C: - (int)runtimeID
Swift (since EasyAR SDK 2.1.0): public override func runtimeID() -> Int32

uid

返回target uid。target uid在云识别算法中使用。在没有接入云识别的时候,你可以在json配置中设置这个uid,在自己的代码中作为另一种区分target的方法。

C: void easyar_ObjectTarget_uid(const easyar_ObjectTarget* This, easyar_String** Return)
C++11: std::string uid()
Traditional C++: void uid(String** Return)
Java: public native java.lang.String uid()
Objective-C: - (NSString *)uid
Swift (since EasyAR SDK 2.1.0): public override func uid() -> String

name

返回target名字。名字用来在json文件中区分target。更多描述参见setup。

C: void easyar_ObjectTarget_name(const easyar_ObjectTarget* This, easyar_String** Return)
C++11: std::string name()
Traditional C++: void name(String** Return)
Java: public native java.lang.String name()
Objective-C: - (NSString *)name
Swift (since EasyAR SDK 2.1.0): public override func name() -> String

meta

返回setMetaData所设置的meta data。或者在云识别返回的target里面,返回云端服务器所设置的meta data。

C: void easyar_ObjectTarget_meta(const easyar_ObjectTarget* This, easyar_String** Return)
C++11: std::string meta()
Traditional C++: void meta(String** Return)
Java: public native java.lang.String meta()
Objective-C: - (NSString *)meta
Swift (since EasyAR SDK 2.1.0): public override func meta() -> String

setMeta

设置meta data。这个操作会覆盖上一次的设置或是云端返回的数据。

C: void easyar_ObjectTarget_setMeta(easyar_ObjectTarget* This, easyar_String* data)
C++11: void setMeta(std::string data)
Traditional C++: void setMeta(String* data)
Java: public native void setMeta(java.lang.String data)
Objective-C: - (void)setMeta:(NSString *)data
Swift (since EasyAR SDK 2.1.0): public override func setMeta(_ data: String) -> Void