2017-05-04 144 views
0

我想知道錄製算法是如何工作的。Unity3D遊戲錄製算法

我最初的想法是每幀從LateUpdate()獲取紋理。

假設我的視頻幀率是30fps,如果我的遊戲運行速度爲60fps,並且我只捕獲了第一個30fps,那麼問題是我會丟失一些幀。

如果我的遊戲以20fps運行,我沒有足夠的30fps視頻幀,那麼我應該複製第20幀的10倍嗎?

有沒有關於開始的教程?我在網上搜索,但很難找到一個相關的好教程。

+0

「請問該記錄算法的工作」你指的是哪種算法?你是否試圖從頭開始編寫自己的視頻錄製功能?如果是這樣,[你有沒有考慮從資產商店獲得一個免費的插件](https://www.assetstore.unity3d.com/en/#!/content/75653)? –

+0

是的,我想了解算法,而不是使用免費的.. – ywj7931

+1

如果遊戲沒有以與視頻相同的幀速率運行,則正確的答案是:以均勻分佈丟棄或重複幀*。也就是說,如果遊戲運行速度爲60 fps,並且記錄時間爲30,* drop ** each other ** frame。*不記錄前30個並丟棄第30個,這是愚蠢的。見[第二頁](http://www.digitalcinemasociety.org/downloads/FrameRateConversionSimplified-N.pdf) – Draco18s

回答

0

如果你想固定捕獲幀率,你可以用戶FixedUpdate()。您可以設置FixedDeltaTime值dermine拍攝幀率:

[Range(1,60)] 
public int capturingFrameRate = 30; 

void aStart() 
{ 
    Time.fixedDeltaTime = 1/capturingFrameRate; 
} 

void FixedUpdate() 
{ 
    //capture frame 
} 

參考:FixedDeltaTime

希望這有助於

+0

我的問題更像是:如果我的遊戲運行速度爲60fps,而我只捕獲了第一個30fps,那麼問題是我會丟失一些幀。 如果我的遊戲以20fps運行,我沒有足夠的30fps視頻幀,那麼我應該複製第20幀的10倍嗎? – ywj7931