我试图在我的游戏引擎中渲染一个预先导出的视频,并且在试图安排帧时偶然发现了问题。也就是说,当视频以固定的FPS输出时,引擎具有动态帧速率(可能高于或低于视频的)。当试图选择在当前引擎帧中渲染哪个视频帧时,我的算法总是遇到边缘情况,这会破坏视频的速度或视频帧的分布。
在这一点上,我知道可能没有任何算法在所有情况下都能完美地运行,但是有三种情况可能在运行时发生,应该由算法来处理:
)
在这3种情况下,下列情况应成立:
考虑到所有这些,我尝试了两种解决方案,即使有几种启发式方法,它们也没有产生好的效果。
我想我的问题是:已知的算法和启发式算法是否存在问题,可以简化为这个问题?如果没有,是否有一个很好的启发式方法,可以在我前面描述的3种情况下产生更好的结果?
发布于 2020-02-17 03:23:32
您可以采取第二种方法,并应用一些简单的平滑,例如,将您的帧按最后两个值的平均值前进,总是向下舍入并向前传播错误,即当和是奇数时,然后将整数加到下一个和中得到一个整数来平衡它。
所以1,3,1,3,1,3.会产生2,2,2,2,2.2,3,2,3,2,3产生2,3,2,3,2,2,2.等
伪码:
int prevValue = 0
int error = 0;
bool firstValue = true;
int getNextValue(int value)
{
if(firstValue)
{
prevValue = value;
firstValue = false;
}
int sum = value + prevValue + error;
error = sum % 2;
prevValue = value;
return sum / 2; // integer division
}
https://stackoverflow.com/questions/60250112
复制相似问题