2015-03-08 34 views
8

Mam trudności z obracaniem kamery internetowej w moim urządzeniu z systemem Android.webcamRozmiar tekstu różni się w unity3d pod Androidem

Oto moja scena w edytorze: enter image description here

i tutaj jest obraz w moim telefonie: enter image description here

można zobaczyć różnicę w rotacji i skalowania między telefonem a edytora.

Oto kod:

using UnityEngine; 
using UnityEngine.UI; 
using System.Collections; 

public class Camera_pnl : MonoBehaviour { 

    //// Use this for initialization 
    WebCamTexture webCameraTexture; 

    void Start() { 
     GUITexture BackgroundTexture = gameObject.AddComponent<GUITexture>(); 
     BackgroundTexture.pixelInset = new Rect(0,0,Screen.width,Screen.height); 
     WebCamDevice[] devices = WebCamTexture.devices; 

     foreach (WebCamDevice cam in devices) 
     { 
      if (cam.isFrontFacing) 
      {  
       webCameraTexture = new WebCamTexture(cam.name); 
       webCameraTexture.deviceName = cam.name; 
       webCameraTexture.Play(); 
       BackgroundTexture.texture = webCameraTexture; 
      } 
     } 
    } 

    void Update() { 
     if (Input.GetKey (KeyCode.Escape)) { 
      Invoke("LoadGame",0.1f); 
     } 
    } 

    void LoadGame() 
    { 
     webCameraTexture.Stop(); 
     webCameraTexture = null; 
     Application.LoadLevelAsync("Game"); 
    } 
} 

Jak mogę rozwiązać ten problem tak moich wyświetlaczy telefonów prawidłowy obrót webcamtexture?

+0

przeczytać: http://forum.unity3d.com/threads/webcamtexture-rotated-and-flipped-on-iphone-when-applied-to-renderer-material-texture.126702/ –

Odpowiedz

1

Należy spojrzeć na kierunek obrotu, a następnie obrócić podgląd przechwyconego wejścia, można to zrobić, obracając podgląd w czasie rzeczywistym.

int rotAngle = -webCamTexture.videoRotationAngle; 
while(rotAngle < 0) rotAngle += 360; 
while(rotAngle > 360) rotAngle -= 360; 

następujący kod jest od robienia Camera Kit plugin, którego używamy do (https://www.assetstore.unity3d.com/en/#!/content/56673) - używamy go do gry społeczne/app, aby użytkownik mógł wykonywać i udostępniać zdjęcia w grze.

Musisz obrócić obraz, gdy rotacja wynosi 270 lub 90 stopni w niektórych przypadkach. To jest kod dla Androida.

if(Application.platform == RuntimePlatform.Android) { 
      flipY = !webCamTexture.videoVerticallyMirrored; } 

Musisz wziąć te czynniki pod uwagę podczas renderowania podglądu webcamtexture jak i kiedy się piksele, piksele w obrazie będą musiały być obracane, a także, jeśli chcesz, aby zapisać i Udostępniaj obraz, co jest kosztownym procesem wykonywanym klatka po klatce w podglądzie, dlatego musisz zrobić to po zrobieniu zdjęcia raz.

Cheers