DrawBot中绘图和动画的排版和布局实用程序
furniture-typo的Python项目详细描述
#furniture
drawbot中用于绘图和动画制作的布局、动画和排版实用程序。
但它也需要大量的样板文件和-当你制作一个长动画-渲染过程可能是缓慢的和内存密集型的(因为渲染帧保存在内存中,为最后的视频编译做准备)。因此,您可以使用furniture.animation设置动画,使其能够从命令行逐帧渲染,而不是在单个Drawbot上下文中渲染所有帧。这比在应用程序中渲染所有帧快得多,也意味着您可以在计算机的多个核心上并行渲染帧。(好吧,目前只有一种情况,它需要运行多个python进程。)
**
furniture.geometry
(下面详细介绍,但实际上它只是一些用于分割/插入/偏移简单矩形的函数,可以直接与drawbot原语一起使用,因为"rectangle"类实现了可访问性。顺便说一下,我发现这段代码与"fonttools.misc"中的"arraytools"模块非常相似,您可以在这里看到,可用于"rectangle"对象:https://github.com/fonttools/fonttools/blob/master/lib/fonttools/misc/arraytools.py
\features
-`furniture.geometry`为切片提供简单的"rect"结构&;快速轻松地分割矩形(松散地基于appkit编程中的"cgGeometry"的使用)
-`furniture.animation`提供了一个简单的"animation"对象,用于通过以无状态方式操作的单帧回调来参数化动画(即绘图可以随时呈现)。也就是说,通过给"animation"对象一个"draw"函数来构建"animation"对象,该函数在代码中类似于"def draw(frame):",在该函数中,可以得到上下文"frame"对象(animationframe),该对象具有"frame.i"(当前帧的索引)等属性,以及"frame.doneness"(一个0-1浮点数,将动画的"doneness"作为其长度的函数,它是提供给原始"animation"构造函数的参数)-请参见"example.py"或下面的示例:
````
from furniture.animation import animation
fromDrawbot导入*
def draw(frame):
fill(random(),random(),random())
rect(*frame.page.take(frame.doneness,"minx")
animation=animation(draw,length=100,fps=23.976,fmt="pdf",burn=true,file=\\\\\\\\
animation.storyboard({},0,1,50)
````
` burn=true`只需在视频右下角添加一点~seconds/frame index/render date~框,如果在after effects中查看了内容后需要四处移动,则可以更轻松地进行调试。
您将看到在".storyboard"中指定的帧,即第0、1和50帧。如果您从一个无头的python进程运行该代码,即'import animationfile.py;animationfile.animation.render(start=0);`,这将把你每一帧的PDF文件放到一个名为"frames"的文件夹中。
我发现,快速轻松预览渲染作品的最佳方法可能是获取Adobe After Effects的副本(如果有CC订阅,则免费),然后启动项目并**将渲染帧文件夹(即"0000.pdf")中的第一个图像导入到项目中,一定要选择从"导入"对话框中隐藏的"选项"选项中选择"图像序列"。导入此"图像序列"后,可以将其拖动到时间线区域,它将为您创建一个具有所有正确设置的序列。然后,您可以根据该序列创建合成,并且在渲染新帧时,您可以清除后效内存(通过编辑>;清除>;所有内存)和-瞧!-您有一个可预览/可逐步播放的动画。
**为什么要呈现pdf而不是png?**我注意到,当直接从Drawbot中使用某些字体剪切PNG图像时,有些伪影以可变字体出现,但PDF中不存在相同的伪影,即使在After Effects通过Adobe Media Encoder管道将PDF渲染到MP4S时,这些伪影仍然不可见。
**警告!**很容易得到不正确的导入图像序列的帧速率,因为所有导入序列的默认帧速率都在首映式的"首选项->;媒体->;不确定媒体时基"和"后效果"`首选项->;导入->;序列画面->;帧中设置。每秒。因为我经常把23.976的图像和视频结合在一起,所以我的"不确定媒体时基"保持在23.976,尽管如果你做的是无视频动画,你可以使用更理智的fps,比如24或30,或者更慢的一些来获得更有趣的感觉。
drawbot中用于绘图和动画制作的布局、动画和排版实用程序。
但它也需要大量的样板文件和-当你制作一个长动画-渲染过程可能是缓慢的和内存密集型的(因为渲染帧保存在内存中,为最后的视频编译做准备)。因此,您可以使用furniture.animation设置动画,使其能够从命令行逐帧渲染,而不是在单个Drawbot上下文中渲染所有帧。这比在应用程序中渲染所有帧快得多,也意味着您可以在计算机的多个核心上并行渲染帧。(好吧,目前只有一种情况,它需要运行多个python进程。)
**
furniture.geometry
(下面详细介绍,但实际上它只是一些用于分割/插入/偏移简单矩形的函数,可以直接与drawbot原语一起使用,因为"rectangle"类实现了可访问性。顺便说一下,我发现这段代码与"fonttools.misc"中的"arraytools"模块非常相似,您可以在这里看到,可用于"rectangle"对象:https://github.com/fonttools/fonttools/blob/master/lib/fonttools/misc/arraytools.py
\features
-`furniture.geometry`为切片提供简单的"rect"结构&;快速轻松地分割矩形(松散地基于appkit编程中的"cgGeometry"的使用)
-`furniture.animation`提供了一个简单的"animation"对象,用于通过以无状态方式操作的单帧回调来参数化动画(即绘图可以随时呈现)。也就是说,通过给"animation"对象一个"draw"函数来构建"animation"对象,该函数在代码中类似于"def draw(frame):",在该函数中,可以得到上下文"frame"对象(animationframe),该对象具有"frame.i"(当前帧的索引)等属性,以及"frame.doneness"(一个0-1浮点数,将动画的"doneness"作为其长度的函数,它是提供给原始"animation"构造函数的参数)-请参见"example.py"或下面的示例:
````
from furniture.animation import animation
fromDrawbot导入*
def draw(frame):
fill(random(),random(),random())
rect(*frame.page.take(frame.doneness,"minx")
animation=animation(draw,length=100,fps=23.976,fmt="pdf",burn=true,file=\\\\\\\\
animation.storyboard({},0,1,50)
````
` burn=true`只需在视频右下角添加一点~seconds/frame index/render date~框,如果在after effects中查看了内容后需要四处移动,则可以更轻松地进行调试。
您将看到在".storyboard"中指定的帧,即第0、1和50帧。如果您从一个无头的python进程运行该代码,即'import animationfile.py;animationfile.animation.render(start=0);`,这将把你每一帧的PDF文件放到一个名为"frames"的文件夹中。
我发现,快速轻松预览渲染作品的最佳方法可能是获取Adobe After Effects的副本(如果有CC订阅,则免费),然后启动项目并**将渲染帧文件夹(即"0000.pdf")中的第一个图像导入到项目中,一定要选择从"导入"对话框中隐藏的"选项"选项中选择"图像序列"。导入此"图像序列"后,可以将其拖动到时间线区域,它将为您创建一个具有所有正确设置的序列。然后,您可以根据该序列创建合成,并且在渲染新帧时,您可以清除后效内存(通过编辑>;清除>;所有内存)和-瞧!-您有一个可预览/可逐步播放的动画。
**为什么要呈现pdf而不是png?**我注意到,当直接从Drawbot中使用某些字体剪切PNG图像时,有些伪影以可变字体出现,但PDF中不存在相同的伪影,即使在After Effects通过Adobe Media Encoder管道将PDF渲染到MP4S时,这些伪影仍然不可见。
**警告!**很容易得到不正确的导入图像序列的帧速率,因为所有导入序列的默认帧速率都在首映式的"首选项->;媒体->;不确定媒体时基"和"后效果"`首选项->;导入->;序列画面->;帧中设置。每秒。因为我经常把23.976的图像和视频结合在一起,所以我的"不确定媒体时基"保持在23.976,尽管如果你做的是无视频动画,你可以使用更理智的fps,比如24或30,或者更慢的一些来获得更有趣的感觉。