ARFoundationFrameSource Class


A custom frame source which connects AR Foundation output to EasyAR input in the scene, providing AR Foundation support using custom camera feature of EasyAR Sense.

This frame source is one type of motion tracking device, and will output motion data in a ARSession .

AR Foundation is required to use this frame source, you need to setup AR Foundation according to official documents.

This frame source will use ARFoundation.ARSession.CheckAvailability to check availability. FrameSource.Camera and ARFoundationFrameSource.ARSessionOrigin are also required for availability check, they will be automatically picked from scene objects if not setup. To choose frame source in runtime, you can deactive AR Foundation GameObjects and set all required values of all frame sources for availability check, and active AR Foundation GameObjects when this frame source is chosen.

MonoBehaviour Messages

protected override void Awake()

protected override void OnEnable()

protected override void OnDisable()

private void OnDestroy()




public bool EnableColorInput

If color image is used as frame input. Color image is usefull when recording a colored eif file, but not necessary for all EasyAR algorithms.



public bool AttemptUpdate

If the device supports AR Foundation but does not have the necessary software, some platforms allow prompting the user to install or update the software. If this field is true, a software update will be attempted. If the appropriate software is not installed or out of date, and this field is false, then this frame source will not be available.




public override Optional< InputFrameSourceType > Type { get; }

Frame source type. Usually can be used only after device created.



public UnityEngine.XR.ARFoundation.ARSessionOrigin ARSessionOrigin { get; set; }

The object Camera move against, will be automatically get from the scene.



public override Optional<bool> IsAvailable { get; }

If the frame source is available.

If the value equals null, FrameSource.CheckAvailability must be called and the value can be accessed after Coroutine finish. This property is used by ARComponentPicker when picking frame source.



public override GameObject Origin { get; }

Origin of ARSession if the frame source can output motion tracking data.

Each type of motion tracking frame source has its own method to set the origin object containing some specific component. Some frame source will automatic pick a usable object from active objects in the scene or generate an object if the value is not set.



public override IReadOnlyList< ARSession.ARCenterMode > AvailableCenterMode { get; }

Available center mode of the frame source.



public virtual Camera Camera { get; set; }

Camera used by the frame source in an ARSession .

Each type of frame source has its own method to check if the camera is usable, and will reject value set if the camera is not usable by the frame source. This property is used by ARComponentPicker when picking frame source to determine if the frame source is available, and some frame source will automatic pick a usable Camera from active objects in the scene in the process if the value is not set. You can set this value to a usable Camera before session start. The value cannot be changed after ARSession is ready if the frame source is selected in the session.




public override System.Collections.IEnumerator CheckAvailability()

Coroutine to check frame source availability when FrameSource.IsAvailable equals null.