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();
}
}
4 Antworten
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.
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).
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();
}
}
}
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
}
}
Neue Fragen
c#
C # (ausgesprochen "siehe scharf") ist eine statische Typisierungsprogrammiersprache mit mehreren Paradigmen, die von Microsoft entwickelt wurde. C # -Code zielt normalerweise auf die .NET-Tools und -Laufzeiten von Microsoft ab, zu denen unter anderem .NET Framework, .NET Core und Xamarin gehören. Verwenden Sie dieses Tag für Fragen zu Code, der in der formalen Spezifikation von C # oder C # geschrieben ist.