Ich entwickle eine mobile AR-App mit Unity.

Dafür habe ich eine Vuforia AR-Kamera hinzugefügt, die mit meiner Laptop-Kamera einwandfrei funktioniert und ein 3D-Modell auf einem Bildziel zeigt.

Meine Frage ist, wie ich mit einem einfachen Knopf zwischen der vorderen und der hinteren Kamera eines Android-Geräts wechseln kann.

Ich habe dieses Codebeispiel versucht, um zwischen der Laptop-Kamera und einer externen Webcam zu wechseln:

 using UnityEngine;
 using Vuforia;

 public class SwitchCamera : MonoBehaviour
 {
     private bool cameraMode = false;

     public void OnCameraChangeMode()
     {
         CameraDevice.CameraDirection currentDir = CameraDevice.Instance.GetCameraDirection();
         if (!cameraMode)
         {
             RestartCamera(CameraDevice.CameraDirection.CAMERA_FRONT);
             Debug.Log("Back Camera");
         }
         else
         {
             RestartCamera(CameraDevice.CameraDirection.CAMERA_BACK);
             Debug.Log("Front Camera");
         }
     }

     private void RestartCamera(CameraDevice.CameraDirection newDir)
     {
         CameraDevice.Instance.Stop();
         CameraDevice.Instance.Deinit();
         CameraDevice.Instance.Init(newDir);
         CameraDevice.Instance.Start();
     }
 }
2
Montacer Dkhilali 19 Apr. 2018 im 19:06

4 Antworten

Beste Antwort

Hallo Montacer, Sie haben gerade vergessen, den Kameramodenwert zu ändern.

     CameraDevice.CameraDirection currentDir = CameraDevice.Instance.GetCameraDirection();
     if (!cameraMode)
     {
         RestartCamera(CameraDevice.CameraDirection.CAMERA_FRONT);
         cameramode = true;
         Debug.Log("Back Camera");
     }
     else
     {
         RestartCamera(CameraDevice.CameraDirection.CAMERA_BACK);
         cameramode = false;
         Debug.Log("Front Camera");
     }

Ansonsten sieht alles gut aus. Hoffentlich hilft das.

2
darsh 23 Apr. 2018 im 06:54

Nur als Update: Die Frontkamera wurde aus Vuforia entfernt. https: // library. vuforia.com/content/vuforia-library/de/articles/Release_Notes/Vuforia-SDK-Release-Notes.html https://developer.vuforia.com/forum/unity/front-camera- Abschreibung

Die Unterstützung der Frontkamera wurde entfernt. Sie können jetzt nur auf die Rückkamera zugreifen (CameraDevice :: init () akzeptiert jetzt keine Parameter).

1
Huber 2 Jän. 2020 im 20:45

Ich habe diesen Code ausprobiert und er funktioniert perfekt.

using UnityEngine;
using Vuforia;

public class Cameraa : MonoBehaviour
{
    private bool on = true;

    public void Switch()
    {
        on = !on;
        if (on)
        {
            CameraDevice.Instance.Stop();
            CameraDevice.Instance.Deinit();
            TrackerManager.Instance.GetTracker<ObjectTracker>().Stop();

            CameraDevice.Instance.Init(CameraDevice.CameraDirection.CAMERA_BACK);
            CameraDevice.Instance.Start();
            TrackerManager.Instance.GetTracker<ObjectTracker>().Start();

        }
        else if (!on)
        {
            CameraDevice.Instance.Stop();
            CameraDevice.Instance.Deinit();

            TrackerManager.Instance.GetTracker<ObjectTracker>().Stop();
            CameraDevice.Instance.Init(CameraDevice.CameraDirection.CAMERA_FRONT);

            CameraDevice.Instance.Start();
            TrackerManager.Instance.GetTracker<ObjectTracker>().Start();
        }
    }
}
0
Montacer Dkhilali 23 Apr. 2018 im 07:55

Ich habe diesen Code verwendet und arbeite gut

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Vuforia;
using TBEasyWebCam;


public class ARManager : MonoBehaviour
{
#if (UNITY_ANDROID || UNITY_IOS) && !UNITY_EDITOR
    bool isTorchOn = false;
#endif

    public void toggleTorch()
    {
#if (UNITY_ANDROID || UNITY_IOS) && !UNITY_EDITOR
        if (EasyWebCam.isActive) {
            if (isTorchOn) {
                //torchImage.sprite = torchOffSprite;
                EasyWebCam.setTorchMode (TBEasyWebCam.Setting.TorchMode.Off);
            } else {
                //torchImage.sprite = torchOnSprite;
                EasyWebCam.setTorchMode (TBEasyWebCam.Setting.TorchMode.On);
            }
            isTorchOn = !isTorchOn;
        }
#endif
    }

}
0
Anwar Safei 17 Jän. 2020 im 16:47