2015-03-08 22 views
8

Ho difficoltà a ruotare la webcamtexture nel mio dispositivo Android.webcamTotazione di rotazione diversa in unity3d in Android

Qui è la mia scena l'editor: enter image description here

e qui è l'immagine nel mio telefono: enter image description here

Si può vedere la differenza in rotazione e il ridimensionamento tra il telefono e l'editor.

Ecco il codice:

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"); 
    } 
} 

Come posso risolvere questo problema in modo mio telefono visualizza la corretta rotazione della webcamtexture?

+0

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

risposta

1

È necessario guardare la direzione di rotazione e quindi ruotare l'anteprima dell'ingresso acquisito, ciò può essere fatto ruotando l'anteprima in tempo reale.

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

seguito il codice è da Camera Capture Kit un plugin che usiamo per (https://www.assetstore.unity3d.com/en/#!/content/56673) - lo usiamo per un gioco sociale/app per consentire all'utente di scattare e condividere le foto all'interno del gioco.

È necessario capovolgere l'immagine anche quando la rotazione è di 270 o 90 gradi in alcuni casi. Questo è il codice per Android.

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

È necessario prendere in considerazione questi fattori quando si esegue il rendering l'anteprima del webcamtexture così come quando si ottengono i pixel, i pixel dell'immagine dovranno essere ruotato così se si vuole salvare e condividere l'immagine, è un processo costoso per fare una cornice dopo l'altra nell'anteprima, ecco perché è necessario farlo dopo che la foto è stata scattata una volta.

Acclamazioni