C4D凌波微步效果器 GhostWalker Effector

C4D凌波微步效果器 GhostWalker Effector    [复制链接]

C4D插件 2016-08-05 15:06 发布

版权归原作者所有,仅供交流学习,禁止商业使用!
C4D插件
作用分类: 运动图形 » 效果器
插件分类: 脚本预设
使用教程: 无教程
支持(高版本请自测): R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 S22 R23 R24 R25 R26 
支持语言: 英文 
支持系统: PC MAC 
出现位置: 其他 
检索码: -
walker_0079.jpg
    #  by taorong 2014/12/21
    #  GhostWalker Effector/凌波微步效果器
    # 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
C4D凌波微步效果器 GhostWalker Effector 
关闭

菜鸟C4D推荐上一条 /9 下一条

菜鸟C4D与你一起从零开始!
十年专注C4D学习

( 浙ICP备13033195号-2 )Copyright   ©2013-2024  Powered by©Discuz!  技术支持:cainiao    

|网站地图