Hello Python和Stack社区。 p>
首先,让我说我是一个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;
现在假设我有一个包含多个对象的列表:
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;
所以我被困在这里,因为我无法弄清楚如何合并 与旧的新价值观。 简而言之,我需要一个循环来评估点的值 对于列表中的每个对象,然后将它们添加到其他对象中。 我只是无法正确拨号。
如果有人可以提供帮助,我将非常感激。
此致