Nuke中python中的动态像素采样问题

Nuke中python中的动态像素采样问题,python,frame,pixel,nuke,Python,Frame,Pixel,Nuke,作为练习,我最近开始编写一个在两个几何体之间生成闪电的小工具。到目前为止,我成功地使用通过python脚本创建的动态表达式创建了随机数量的链接到geos的闪电 我想为每个闪电在触点处添加几个分支,我发现最快的方法是使用粒子系统在目标geo上传播点。使用图像处理和位置传递,我能够快速提取出接近闪电接触点的点 现在,除了在每一帧上运行一个小脚本,将隔离点的位置和索引放入每一帧的列表中,我没有其他解决方案 在python脚本中循环采样像素时,我经常遇到同样的问题。使用nuke.frame()时,帧不会

作为练习,我最近开始编写一个在两个几何体之间生成闪电的小工具。到目前为止,我成功地使用通过python脚本创建的动态表达式创建了随机数量的链接到geos的闪电

我想为每个闪电在触点处添加几个分支,我发现最快的方法是使用粒子系统在目标geo上传播点。使用图像处理和位置传递,我能够快速提取出接近闪电接触点的点

现在,除了在每一帧上运行一个小脚本,将隔离点的位置和索引放入每一帧的列表中,我没有其他解决方案

在python脚本中循环采样像素时,我经常遇到同样的问题。使用nuke.frame()时,帧不会更新

这是我正在编写的脚本:

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以外的东西存储非零像素的方法吗


谢谢

我认为这个问题已经存在多年了,铸造厂还没有对此进行评估。我使用的是Nuke 10.5v1。我现在使用的是为每一帧运行curvetool的肮脏解决方法,它似乎在工作。我认为这个问题已经存在多年了,铸造厂尚未对其进行评估。我使用的是Nuke 10.5v1。我现在使用的是为每一帧运行curvetool的肮脏的解决方法,它似乎正在工作