2014-06-09 75 views
1

我目前使用WebCamTexture類來顯示實時相機飼料,直到用戶拍攝快照,然後在我的應用中使用所述快照作爲紋理。WebCamTexture iOS模糊快照

下面是我使用的時刻代碼:

private WebCamTexture cameraTexture; 
private Texture2D snapshot; 
public UITexture webCamTexture; 

snapshot = new Texture2D(cameraTexture.width, cameraTexture.height); 
snapshot.SetPixels(m_CameraTexture.GetPixels()); 
snapshot.Apply(); 
webCamTexture.mainTexture = snapshot; 

注:UITexture類來自NGUI,它只是顯示在現場的質感。

在Android設備上,似乎沒有問題。但是,當我在iOS設備上使用此功能(在iPad2和iPad3上測試)時,紋理在設置時會立即變爲 模糊。這是一個焦點問題嗎?

我已經嘗試了幾件事情,主要是在拍攝之前等待幀的結束,並在獲取像素之前調用cameraTexture.Pause(), 無濟於事。

爲什麼iOS紋理變得模糊?

+0

'cameraTexture'的請求尺寸是多少? –

+0

我使用的尺寸不是由代碼設置的,我只是將紋理應用於我製作的預製件,這取決於我使用的平臺的分辨率。這不是全屏,如果這是你想知道的。 – Bypp

+0

完成一些進一步的測試。顯然,Unity支持的最大分辨率是1280x720,不知道這是否因爲我測試過的設備只有1024x768分辨率...任何人? – Bypp

回答

1

我有同樣的問題,但在構造函數中的Texture2D設置的貼圖爲false似乎解決它,我

即:

snapshot = new Texture2D(webcamTexture.width, webcamTexture.height, TextureFormat.ARGB32, false); 

我沒有上解釋爲什麼它的工作原理很遺憾。

+0

mipmap正在製作lowrez版本的紋理和它們之間的淡入淡出,這取決於相機距離正在渲染的四邊形有多遠,我猜是因爲您使用的是NGUI,所以您可能將UI渲染爲遠離相機的四邊形紋理顯示紋理中較少細節的mipmap級別。 – Chris

1

我相信,因爲它可以爲Android它的捕獲圖像相關的問題。當您使用攝像頭捕獲WebCamTexture時,如同錄製視頻一樣初始化WebCamTexture時,錄製視頻時,不能使用對焦和防抖以及ISO設置。當你在iOS上拍攝照片時,實際上只是抓取了此饋送中的幀,而這些幀並非真正用於清晰照片。該插件CameraCaptureKithttps://www.assetstore.unity3d.com/en/#!/content/56673)擴展了WebCamTexture,並通過使用兩個捕獲預覽等待用戶捕獲靜止圖像,然後是另一個高分辨率的圖像來解決此問題。一個用於實際拍攝照片。考慮通過將一些新的objc代碼作爲iOS插件集成或使用像Capture Capture Kit這樣的東西來證明可以幫助解決您的問題,從而實現相同的功能。