2017-05-04 94 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