public void OpenCamera(bool isBack) { if (easyarCamera == null) { return; } easyarCamera.close(); easyarCamera.Dispose(); easyarCamera = CameraDeviceSelector.createCameraDevice(CameraDevicePreference.PreferObjectSensing); easyarCamera.setFocusMode(CameraFocusMode); bool openResult = false; if (isBack) { openResult = easyarCamera.openWithType(CameraDeviceType.Back); Debug.Log("[EasyAR] open camera back result " + openResult); if (openResult) { GL.invertCulling = false; } } else { openResult = easyarCamera.openWithType(CameraDeviceType.Front); Debug.Log("[EasyAR] open camera front result " + openResult); if (openResult) { GL.invertCulling = true; } } easyarCamera.setSize(new Vec2I((int)CameraSize.x, (int)CameraSize.y)); easyarCamera.start(); easyarCamera.inputFrameSource().connect(iFrameThrottler.input()); }
/// <summary> /// Initialize the EasyAR component graph. /// See https://help.easyar.com/EasyAR%20Sense/v3/Getting%20Started/Getting-Started-with-EasyAR.html /// </summary> void CreateEasyAr() { camera = CameraDeviceSelector.createCameraDevice(CameraDevicePreference.PreferObjectSensing); throttler = InputFrameThrottler.create(); inputFrameFork = InputFrameFork.create(2); join = OutputFrameJoin.create(2); oFrameBuffer = OutputFrameBuffer.create(); i2OAdapter = InputFrameToOutputFrameAdapter.create(); i2FAdapter = InputFrameToFeedbackFrameAdapter.create(); outputFrameFork = OutputFrameFork.create(2); bool status = camera.openWithPreferredType(CameraDeviceType.Back); camera.setSize(new Vec2I(1280, 720)); camera.setFocusMode(CameraDeviceFocusMode.Continousauto); camera.setBufferCapacity(5 + 7); if (!status) { return; } ImageTracker tracker = ImageTracker.create(); LoadFromImage(tracker, "almondblossoms.jpg", "almondblossoms"); LoadFromImage(tracker, "irises.jpg", "irises"); LoadFromImage(tracker, "starrynight.jpg", "starrynight"); tracker.setSimultaneousNum(6); trackers.Add(tracker); feedbackFrameFork = FeedbackFrameFork.create(trackers.Count); camera.inputFrameSource().connect(throttler.input()); throttler.output().connect(inputFrameFork.input()); inputFrameFork.output(0).connect(i2OAdapter.input()); i2OAdapter.output().connect(join.input(0)); inputFrameFork.output(1).connect(i2FAdapter.input()); i2FAdapter.output().connect(feedbackFrameFork.input()); int k = 0; foreach (ImageTracker _tracker in trackers) { feedbackFrameFork.output(k).connect(_tracker.feedbackFrameSink()); _tracker.outputFrameSource().connect(join.input(k + 1)); k++; } join.output().connect(outputFrameFork.input()); outputFrameFork.output(0).connect(oFrameBuffer.input()); outputFrameFork.output(1).connect(i2FAdapter.sideInput()); oFrameBuffer.signalOutput().connect(throttler.signalInput()); arComponent = fgScene.CreateComponent <EasyARComponent>(); arComponent.ARFrameUpdated += OnARFrameUpdated; arComponent.OutputFrameBuffer = oFrameBuffer; }
void Init() { initialized = true; iFrameThrottler = InputFrameThrottler.create(); oFrameBuffer = OutputFrameBuffer.create(); i2fAdapter = InputFrameToFeedbackFrameAdapter.create(); inputFrameFork = InputFrameFork.create(ForkOutputNum); i2OAdapter = InputFrameToOutputFrameAdapter.create(); oFrameJoin = OutputFrameJoin.create(JoinNum); if (FrameSourceType == FrameSource.easyar) { if (CameraDevice.isAvailable()) { Debug.Log("[EasyAR] use ezar camera device"); easyarCamera = CameraDeviceSelector.createCameraDevice(EasyarCameraPrefer); var openResult = false; if (UseSecondCamera) { openResult = easyarCamera.openWithIndex(1); } else { openResult = easyarCamera.openWithType(CameraDeviceType.Default); } easyarCamera.setFocusMode(CameraFocusMode); if (!openResult) { Debug.Log("[EasyAR] open camera failed"); initialized = false; return; } easyarCamera.setSize(new Vec2I((int)CameraSize.x, (int)CameraSize.y)); easyarCamera.inputFrameSource().connect(iFrameThrottler.input()); easyarCamera.start(); } else { initialized = false; Debug.Log("[EasyAR] ezar camera device can not work"); return; } } iFrameThrottler.output().connect(inputFrameFork.input()); inputFrameFork.output(0).connect(i2OAdapter.input()); i2OAdapter.output().connect(oFrameJoin.input(0)); outputFrameFork = OutputFrameFork.create(1); int index = 0; if (ImgTracker != null) { index++; outputFrameFork = OutputFrameFork.create(2); inputFrameFork.output(index).connect(i2fAdapter.input()); i2fAdapter.output().connect(ImgTracker.Input()); ImgTracker.Output().connect(oFrameJoin.input(index)); outputFrameFork.output(1).connect(i2fAdapter.sideInput()); } if (SfTracker != null) { index++; inputFrameFork.output(index).connect(SfTracker.Input()); SfTracker.Output().connect(oFrameJoin.input(index)); } if (CloudImageRecognizer != null) { index++; inputFrameFork.output(index).connect(CloudImageRecognizer.Input()); } oFrameJoin.output().connect(outputFrameFork.input()); outputFrameFork.output(0).connect(oFrameBuffer.input()); oFrameBuffer.signalOutput().connect(iFrameThrottler.signalInput()); args = new ARSessionUpdateEventArgs(); }
public override void Open() { willOpen = true; CameraDevice.requestPermissions(EasyARController.Scheduler, (Action <PermissionStatus, string>)((status, msg) => { if (!willOpen) { return; } if (status != PermissionStatus.Granted) { throw new UIPopupException("Camera permission not granted"); } Close(); Device = CameraDeviceSelector.createCameraDevice(CameraPreference); if (DeviceCreated != null) { DeviceCreated(); } bool openResult = false; switch (CameraOpenMethod) { case CameraDeviceOpenMethod.DeviceType: openResult = Device.openWithPreferredType(CameraType); break; case CameraDeviceOpenMethod.DeviceIndex: openResult = Device.openWithIndex(CameraIndex); break; default: break; } if (!openResult) { Debug.LogError("Camera open failed"); Device.Dispose(); Device = null; return; } Device.setFocusMode(FocusMode); Device.setSize(new Vec2I((int)CameraSize.x, (int)CameraSize.y)); if (parameters != null) { Device.setCameraParameters(parameters); } if (bufferCapacity != 0) { Device.setBufferCapacity(bufferCapacity); } if (sink != null) { Device.inputFrameSource().connect(sink); } if (DeviceOpened != null) { DeviceOpened(); } if (enabled) { OnEnable(); } })); }