Python - 在C4D中生成权重贴图

时间:2018-02-02 13:07:25

标签: python 3d cinema-4d

Hello Python和Stack社区。

首先,让我说我是一个3D家伙而不是代码人。谢谢理解...

确切的问题: 我必须根据点到多个对象

的距离生成渐变映射

以下是我的问题的简单预览 Preview_C4D

我的基本代码如下:



import c4d
#Welcome to the world of Python
warray = [0.0]
def main():
    global warray
    wtag = op[c4d.ID_USERDATA,1]  #drag vertex map from user data panel
    obj = wtag.GetObject()    #the object of the vertex map
    pts = obj.GetAllPoints()
    cnt = len(pts)
    null = op.GetObject()
    nullpos =  null.GetMg().off  #vector magnitude from matrix
    minDistance = op[c4d.ID_USERDATA,4]  #drag slider map from user data panel
    maxDistance = op[c4d.ID_USERDATA,5]  #drag slider map from user data panel
   
    
    if len(warray) != cnt:
        diff = cnt - len(warray)
        warray.extend([0.0]*diff)
    
    for  x in xrange(cnt): #remapping in the range 0-1
        point = pts[x]
        distance = (nullpos - point).GetLength()
        warray[x] = c4d.utils.RangeMap(distance,minDistance,maxDistance,1,0,False)
        if warray[x] > 1:
            warray[x] = 1.0
        elif warray[x] < 0:
            warray[x] = 0.0
    wtag.SetAllHighlevelData(warray)  #bake the new vertex map
&#13;
&#13;
&#13;

现在假设我有一个包含多个对象的列表:

&#13;
&#13;
parent = doc.SearchObject('parent')
    
    
    list1 = parent.GetChildren() # list of cubes under parent
    count = len(list1)
    for a in range(list):
      obj = list1[a]
      distance = ?
&#13;
&#13;
&#13;

所以我被困在这里,因为我无法弄清楚如何合并 与旧的新价值观。 简而言之,我需要一个循环来评估点的值 对于列表中的每个对象,然后将它们添加到其他对象中。 我只是无法正确拨号。

如果有人可以提供帮助,我将非常感激。

此致

0 个答案:

没有答案