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

2024-09-28 21:45:03 发布

您现在位置:Python中文网/ 问答频道 /正文

作为练习,我最近开始编写一个在两个几何图形之间生成闪电的小工具。到目前为止,我成功地创建了一个随机数目的闪电链接到地理位置,使用的大多是通过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像素(例如在一行中)的方法吗?在

谢谢


Tags: sample方法in脚本forrange像素width