Changelog
All notable changes to the ARFoundation Integration package will be documented in this file.
Latest Release
ARFoundation Integration [0.6.42] - 2024-04-29
Added
- You can decide the minimum amount of time between one frame event and the next, via
TimerMs
property. - Two frame "providers" have been added:
CameraTextureProvider
provides a texture from ARFoundation, viaOnNewTextureReady
event. Equivalent to previousFrameFeeder
.CameraFrameProvider
is an extended version providing also additional Frame information, viaOnNewFrameReady
event. We strongly suggest to use this last method to obtain matrices, since on iOS it asks for such information directly at the native level to ARKit (which has been proven to be more correct than via ARFoundation).
- When using
CameraFrameProvider
you can set your ownSessionOriginTransform
as base matrix transform, or set it to null to set it to identity.
Changed
FrameFeeder
is now renamed asCameraTextureProvider
. You can add it to the scene or simply do:
var textureProviderComp = CameraTextureProvider.GetOrCreateComponent();
textureProviderComp.TimerMs = 1000; // [optional] adds delay: get a new texture minimum every 1 sec (the first texture is returned immediately)
textureProviderComp.OnNewTextureReady += texture => _manna.ProcessVideoFrameTexture(..., ..., ...);
- You can similarly use
CameraFrameProvider
:
var textureProviderComp = CameraFrameProvider.GetOrCreateComponent();
textureProviderComp.OnNewFrameReady += frame => _manna.ProcessVideoFrameTexture(frame.Texture, frame.ARProjectionMatrix, frame.ARWorldToCameraMatrix);
Fixed
- Fixed a bug on iOS where matrices are not precise enough in time when getting from
ARCamera
. UseCameraFrameProvider
for better results on iOS!
Removed
- Dependency from Manna removed.
- Method
AttachMannaInstance(manna)
has been removed, to remove dependency from Manna.
Previous Releases
ARFoundation Integration [0.6.34] - 2023-07-31
Added
This is a new package aimed at Unity developers using the Auki SDK with ARFoundation. This is the first released version, which provides easy integration starting from Manna 0.6.34, removing the need to write and keep updated the code needed to pass frames from the camera feed.
Example of usage (after instantiating Manna):
var frameFeeder = manna.GetOrCreateFrameFeederComponent();
frameFeeder.AttachMannaInstance(manna);
or alternatively, if you place the Packages/Auki Labs ARFoundation Integration/Runtime/Manna/FrameFeederGPU
script yourself on ArCameraManager
gameobject:
var frameFeeder = arCameraManager.gameobject.GetComponent<FrameFeederBase>();
frameFeeder.AttachMannaInstance(mannaInstance);
We also provide a property to limit the frequency of frames being fed to Manna. You can set the property FeedInterval
and set it to the desired minimum interval (in seconds) between two subsequent frames being processed. By default (0), all frames from ARFoundation will be processed by Manna.
You are also free to implement your own CustomFeeder
by inheriting from FrameFeederBase
and simply calling:
var frameFeeder = manna.GetOrCreateFrameFeederComponent<CustomFeeder>();