Flutter Engine
The Flutter Engine
|
Typedefs | |
typedef struct ArFrame_ | ArFrame |
Functions | |
void | ArFrame_create (const ArSession *session, ArFrame **out_frame) |
void | ArFrame_destroy (ArFrame *frame) |
Releases an ArFrame and any references it holds. More... | |
void | ArFrame_getDisplayGeometryChanged (const ArSession *session, const ArFrame *frame, int32_t *out_geometry_changed) |
void | ArFrame_getTimestamp (const ArSession *session, const ArFrame *frame, int64_t *out_timestamp_ns) |
void | ArFrame_transformDisplayUvCoords (const ArSession *session, const ArFrame *frame, int32_t num_elements, const float *uvs_in, float *uvs_out) |
void | ArFrame_hitTest (const ArSession *session, const ArFrame *frame, float pixel_x, float pixel_y, ArHitResultList *hit_result_list) |
void | ArFrame_getLightEstimate (const ArSession *session, const ArFrame *frame, ArLightEstimate *out_light_estimate) |
ArStatus | ArFrame_acquirePointCloud (const ArSession *session, const ArFrame *frame, ArPointCloud **out_point_cloud) |
void | ArFrame_acquireCamera (const ArSession *session, const ArFrame *frame, ArCamera **out_camera) |
ArStatus | ArFrame_acquireImageMetadata (const ArSession *session, const ArFrame *frame, ArImageMetadata **out_metadata) |
void | ArFrame_getUpdatedAnchors (const ArSession *session, const ArFrame *frame, ArAnchorList *out_anchor_list) |
void | ArFrame_getUpdatedTrackables (const ArSession *session, const ArFrame *frame, ArTrackableType filter_type, ArTrackableList *out_trackable_list) |
Per-frame state.
typedef struct ArFrame_ ArFrame |
The world state resulting from an update (value type).
Allocate with ArFrame_create()
Populate with ArSession_update()
Release with ArFrame_destroy()
Definition at line 203 of file arcore_c_api.h.
void ArFrame_acquireCamera | ( | const ArSession * | session, |
const ArFrame * | frame, | ||
ArCamera ** | out_camera | ||
) |
Returns the camera object for the session. Note that this Camera instance is long-lived so the same instance is returned regardless of the frame object this method was called on.
ArStatus ArFrame_acquireImageMetadata | ( | const ArSession * | session, |
const ArFrame * | frame, | ||
ArImageMetadata ** | out_metadata | ||
) |
Gets the camera metadata for the current camera image.
frame
is not the latest frame from by ArSession_update().ArSession_resume()
due to the camera stack bringup. ArStatus ArFrame_acquirePointCloud | ( | const ArSession * | session, |
const ArFrame * | frame, | ||
ArPointCloud ** | out_point_cloud | ||
) |
Acquires the current set of estimated 3d points attached to real-world geometry. A matching call to PointCloud_release() must be made when the application is done accessing the point cloud.
Note: This information is for visualization and debugging purposes only. Its characteristics and format are subject to change in subsequent versions of the API.
[in] | session | The ARCore session. |
[in] | frame | The current frame. |
[out] | out_point_cloud | Pointer to an ArPointCloud* receive the address of the point cloud. |
frame
is not the latest frame from by ArSession_update().Allocates a new ArFrame object, storing the pointer into *out_frame
.
Note: the same ArFrame can be used repeatedly when calling ArSession_update.
void ArFrame_destroy | ( | ArFrame * | frame | ) |
Releases an ArFrame and any references it holds.
void ArFrame_getDisplayGeometryChanged | ( | const ArSession * | session, |
const ArFrame * | frame, | ||
int32_t * | out_geometry_changed | ||
) |
Checks if the display rotation or viewport geometry changed since the previous call to ArSession_update(). The application should re-query ArCamera_getProjectionMatrix() and ArFrame_transformDisplayUvCoords() whenever this emits non-zero.
void ArFrame_getLightEstimate | ( | const ArSession * | session, |
const ArFrame * | frame, | ||
ArLightEstimate * | out_light_estimate | ||
) |
Gets the current ambient light estimate, if light estimation was enabled.
[in] | session | The ARCore session. |
[in] | frame | The current frame. |
[in,out] | out_light_estimate | The light estimate to fill. This object must have been previously created with ArLightEstimate_create(). |
void ArFrame_getTimestamp | ( | const ArSession * | session, |
const ArFrame * | frame, | ||
int64_t * | out_timestamp_ns | ||
) |
Returns the timestamp in nanoseconds when this image was captured. This can be used to detect dropped frames or measure the camera frame rate. The time base of this value is specifically not defined, but it is likely similar to clock_gettime(CLOCK_BOOTTIME)
.
void ArFrame_getUpdatedAnchors | ( | const ArSession * | session, |
const ArFrame * | frame, | ||
ArAnchorList * | out_anchor_list | ||
) |
Gets the set of anchors that were changed by the ArSession_update() that produced this Frame.
[in] | session | The ARCore session |
[in] | frame | The current frame. |
[in,out] | out_anchor_list | The list to fill. This list must have already been allocated with ArAnchorList_create(). If previously used, the list will first be cleared. |
void ArFrame_getUpdatedTrackables | ( | const ArSession * | session, |
const ArFrame * | frame, | ||
ArTrackableType | filter_type, | ||
ArTrackableList * | out_trackable_list | ||
) |
Gets the set of trackables of a particular type that were changed by the ArSession_update() call that produced this Frame.
[in] | session | The ARCore session |
[in] | frame | The current frame. |
[in] | filter_type | The type(s) of trackables to return. See ::ArTrackableType for legal values. |
[in,out] | out_trackable_list | The list to fill. This list must have already been allocated with ArTrackableList_create(). If previously used, the list will first be cleared. |
void ArFrame_hitTest | ( | const ArSession * | session, |
const ArFrame * | frame, | ||
float | pixel_x, | ||
float | pixel_y, | ||
ArHitResultList * | hit_result_list | ||
) |
Performs a ray cast from the user's device in the direction of the given location in the camera view. Intersections with detected scene geometry are returned, sorted by distance from the device; the nearest intersection is returned first.
Note: Significant geometric leeway is given when returning hit results. For example, a plane hit may be generated if the ray came close, but did not actually hit within the plane extents or plane bounds (ArPlane_isPoseInExtents() and ArPlane_isPoseInPolygon() can be used to determine these cases). A point (point cloud) hit is generated when a point is roughly within one finger-width of the provided screen coordinates.
The resulting list is ordered by distance, with the nearest hit first
Note: If not tracking, the hit_result_list will be empty.
Note: If called on an old frame (not the latest produced by ArSession_update() the hit_result_list will be empty).
[in] | session | The ARCore session. |
[in] | frame | The current frame. |
[in] | pixel_x | Logical X position within the view, as from an Android UI event. |
[in] | pixel_y | Logical X position within the view. |
[in,out] | hit_result_list | The list to fill. This list must have been previously allocated using ArHitResultList_create(). If the list has been previously used, it will first be cleared. |
void ArFrame_transformDisplayUvCoords | ( | const ArSession * | session, |
const ArFrame * | frame, | ||
int32_t | num_elements, | ||
const float * | uvs_in, | ||
float * | uvs_out | ||
) |
Transform the given texture coordinates to correctly show the background image. This will account for the display rotation, and any additional required adjustment. For performance, this function should be called only if ArFrame_hasDisplayGeometryChanged() emits true.
[in] | session | The ARCore session |
[in] | frame | The current frame. |
[in] | num_elements | The number of floats to transform. Must be a multiple of 2. uvs_in and uvs_out must point to arrays of at least this many floats. |
[in] | uvs_in | Input UV coordinates in normalized screen space. |
[in,out] | uvs_out | Output UV coordinates in texture coordinates. |