作为练习,我最近开始编写一个在两个几何图形之间生成闪电的小工具。到目前为止,我成功地创建了一个随机数目的闪电链接到地理位置,使用的大多是通过python脚本创建的动态表达式。在
我想为每一次闪电在触点处添加一些分支,我发现最快的方法是使用粒子系统在目的地地理上散布点。利用图像处理和位置传递,我能够快速提取出闪电接触点附近的点。在
现在我没有其他解决方案,只能在每个帧上运行一个小脚本,将分隔点的位置和索引放入每个帧的列表中。在
在python脚本的循环中采样像素时,我经常面临相同的问题。使用核弹框架()。在
这是我正在编写的脚本:
sn = nuke.thisNode()
snc = nuke.toNode('PosCP')
AllcontactAllFrame = []
AllcontactAllFrame[:] = []
AllcontactOnFrame = []
AllcontactOnFrame[:] = []
EachContactOnFrame = []
EachContactOnFrame[:] = []
def appendContactLists( FirstFrame , LastFrame , wdth , hght):
for fra in range (FirstFrame, LastFrame+1) :
nuke.frame(fra)
for h in range (0, hght) :
for w in range (0, wdth) :
Vpix = snc.sample('alpha', w, h)
if Vpix == 1 :
Contx = snc.sample('red', w , h)
Conty = snc.sample('green', w, h)
Contz = snc.sample('blue', w, h)
PosC = [Contx,Conty,Contz]
EachContactOnFrame.append(h)
EachContactOnFrame.append(PosC)
width = snc.width()
height = snc.height()
ff = int(sn.knob('FirstFrameTmp').getValue())
lf = int(sn.knob('LastFrameTmp').getValue())
AppendContactLists(ff,lf,width,height)
nuke.message(str(EachContactOnFrame))
PosC应该为每个帧存储不同的值,但它只存储每个帧的第一帧的值。在
有人有解决办法吗?在
或者有人知道用python以外的东西来存储none-zero像素(例如在一行中)的方法吗?在
谢谢
目前没有回答
相关问题 更多 >
编程相关推荐