我正在寻找一种在交互过程中有效捕获帧缓冲区的方法,pyvista
以便之后我可以制作模型在屏幕上移动的视频。
我遇到的问题是,当我单击屏幕与查看器/绘图仪交互时,在按下鼠标按钮并且模型移动到下一个位置时没有写入任何帧。这会导致视频中出现“生涩”的动作。
有没有办法绕过这种行为来有效地执行诸如绘图仪窗口的屏幕截图之类的操作,即使在被操纵时也是如此?也许通过直接访问帧缓冲区或类似的东西?
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import pyvista as pv
import numpy as np
from pyvista import examples
import matplotlib as mpl
import matplotlib.pyplot as plt
px = int(round(1920*0.4))
py = int(round(1000*0.4))
mesh = examples.download_st_helens().warp_by_scalar()
p = pv.Plotter()
p.set_background(color='k')
cmap = mpl.cm.get_cmap('viridis')
p.add_mesh(mesh, lighting=True, texture=False, cmap=cmap, smooth_shading=True)
p.show_grid()
p.show(window_size=[px,py], auto_close=False, interactive_update=True)
p.render()
p.open_movie('anim.mp4',framerate=60)
i=0
while (i<100):
i+=1
p.write_frame()
print(i)
p.close()