软件性质: | 脚本 |
---|---|
适用版本: | 1 2 3 4 5 |
软件版本: | Version: unknown |
系统平台: | Win?MAC |
软件语言: | 英文 |
C4D凌波微步效果器 GhostWalker Effector
- #??by taorong 2014/12/21
- ? ? #??GhostWalker Effector/凌波微步效果器
- ? ? #??我的c4d博客http://blog.sina.com.cn/u/1099992954,不定时发布c4d资源
- ? ? # Walker移动时,克隆内的物体自动移动到脚下,附加变色效果
- import c4d
- from c4d.modules import mograph as mo
- from c4d import utils
- #Welcome to the world of Python
- def main():
- ? ? md = mo.GeGetMoData(op)
- ? ? if md==None: return False
- ? ? cnt = md.GetCount()
- ? ? marr = md.GetArray(c4d.MODATA_MATRIX)
- ? ? carr = md.GetArray(c4d.MODATA_COLOR)
- ? ? warr = md.GetArray(c4d.MODATA_WEIGHT)
- ? ? distanceMatrix = md.GetArray(c4d.MODATA_WEIGHT)
- ? ? fall = md.GetFalloffs()
- ? ? refobj = op[c4d.ID_USERDATA,1]
- ? ? boundary = op[c4d.ID_USERDATA,6]
- ? ? refobjposition = refobj.GetAbsPos()
- ? ? userpos = boundary.GetAbsPos()
- ? ? for j in reversed(xrange(0, cnt)):#estimate distance from object to cloner
- ? ?? ???differencevector = userpos – marr[j].off
- ? ?? ???distanceMatrix[j] = differencevector.GetLength()
- ? ? threshold = min(distanceMatrix)
- ? ? for i in reversed(xrange(0, cnt)):
- ? ?? ???differencevector = refobjposition – marr.off
- ? ?? ???distance = differencevector.GetLength()
- ? ?? ???if distance<=threshold:
- ? ?? ?? ?? ?boxsteppedcolor = 1
- ? ?? ?? ?? ?carr = c4d.Vector(boxsteppedcolor)
- ? ?? ?? ?? ?boxsteppedweight = 1
- ? ?? ?? ?? ?warr = boxsteppedweight
- ? ?? ?? ???# print distance
- ? ?? ???else:
- ? ?? ?? ?? ?boxsteppedcolor = 0
- ? ?? ?? ?? ?carr = c4d.Vector(boxsteppedcolor)
- ? ?? ?? ?? ?boxsteppedweight = 0
- ? ?? ?? ?? ?warr = boxsteppedweight
- ??#? ?? ?? ? print distance
- ? ? md.SetArray(c4d.MODATA_COLOR, carr, True)
- ? ? md.SetArray(c4d.MODATA_WEIGHT, warr, True)
- ? ? return True
复制代码
评论0