Hi, I am trying to transfer pos of one obj on the other obj but I am getting this error AttributeError: 'list' object has no attribute 'FindTrack'
I am not sure how to sort it out.
Thanks for any help
import c4d
#Welcome to the world of Python
desc_x = c4d.DescID(c4d.DescLevel(c4d.ID_BASEOBJECT_POSITION, c4d.DTYPE_VECTOR, 0),
c4d.DescLevel(c4d.VECTOR_X, c4d.DTYPE_REAL, 0))
desc_y = c4d.DescID(c4d.DescLevel(c4d.ID_BASEOBJECT_POSITION,c4d.DTYPE_VECTOR, 0),
c4d.DescLevel(c4d.VECTOR_Y, c4d.DTYPE_REAL, 0))
desc_z = c4d.DescID(c4d.DescLevel(c4d.ID_BASEOBJECT_POSITION, c4d.DTYPE_VECTOR, 0),
c4d.DescLevel(c4d.VECTOR_Z, c4d.DTYPE_REAL, 0))
def createPositionTracks(object):
trackPosX = object.FindTrack(desc_x)
trackPosY = object.FindTrack(desc_y)
trackPosZ = object.FindTrack(desc_z)
if trackPosX is None:
track = c4d.CTrack(object, desc_x)
object.InsertTrackSorted(track)
if trackPosY is None:
track = c4d.CTrack(object, desc_y)
object.InsertTrackSorted(track)
if trackPosZ is None:
track = c4d.CTrack(object, desc_z)
object.InsertTrackSorted(track)
def setPositionKey(object, time, pos):
trackPosX = object.FindTrack(desc_x)
trackPosY = object.FindTrack(desc_y)
trackPosZ = object.FindTrack(desc_z)
curvePosX = trackPosX.GetCurve()
curvePosY = trackPosY.GetCurve()
curvePosZ = trackPosZ.GetCurve()
keydict = curvePosX.AddKey(time)
key = keydict["key"]
key.SetValue(curvePosX,pos.x)
keydict = curvePosY.AddKey(time)
key = keydict["key"]
key.SetValue(curvePosY,pos.y)
keydict = curvePosZ.AddKey(time)
key = keydict["key"]
key.SetValue(curvePosZ,pos.z)
return True
def main():
source = [c4d.ID_USERDATA,1]
target = [c4d.ID_USERDATA,2]
offset = [c4d.ID_USERDATA,3]
if source is not None and target is not None:
t = doc.GetTime()
createPositionTracks(target)
setPositionKey(target,t,source.GetAbsPos() + offset)