我计划用JavaFX创建一个简单的逐帧动画编辑器。您在画布上绘图,您可以在时间轴上移动以绘制动画的其他帧。
这将是传统的动画 - 没有矢量或骨头或其中任何一种。
我现在主要关心的是如何存储每一帧的数据。
表示帧的最基本方法是使用嵌套的像素数组。像这样:
Pixel[][] oneFrame = new Pixel[100][100];
表示在100x100画布上绘制的一帧。
如果用户使用1080p分辨率,帧将为1280x720像素:几乎一百万Pixel
个实例(假设它们都填充了,可能是背景色)。每帧拥有一百万个物体的想法并不让我感到鼓舞。
因此,将几个帧作为Pixel
数组存储在内存中可能不是一个好主意。
我还能如何存储帧数据?我发现可以存储用于创建此类框架的步骤。
String[] oneFrame = new String[] {"Stroke, Black, 0, 0, 1280, 720" , "Fill, Green, 0, 720"};
因此,此框架被定义为"首先,您从一个角落到另一个角落,然后用绿色填充前半部分"。
这比存储一百万件物品轻得多。但是有很多缺点:
我应该如何存储帧数据?
答案 0 :(得分:0)
我不是动画专家,但您可以考虑以下一些想法。
是的,1080p每帧需要大约一百万像素。在具有16 GB内存的新64位计算机上,您可以在内存中保留大约10,000帧。其余的你可以存储在磁盘上。
您需要为艺术家提供一种在图层中创建动画的方法。可能会有一个缓慢移动的背景图层,一个移动得更快一点的前景图层,以及一个角色移动得更快的字符图层。这为动画提供了3D效果。我相信迪士尼有一台可以在1970年代处理5层cel的机器。你可以将它扩展到10层左右。
您可以为艺术家提供存储形状的方法。换句话说,每个角色的一幅画,艺术家可以为每一帧略微改变。
我希望这很有帮助。