On 28/07/2018 at 02:58, xxxxxxxx wrote:
Dear friends, I'm trying to animate a complex spline (consisting in general of several subsplines).
Somehow it doesn't work.
Could you help me with this?
Here is a piece of my code:
import c4d
from c4d import utils
import os
def main() :
def myspline1(t) :
if t<1:
ss = c4d.SplineObject(2, c4d.SPLINETYPE_BEZIER)
ss.SetName("name")
ss.SetPoint(0,c4d.Vector(0, 0,0))
ss.SetPoint(1,c4d.Vector(75*t, 75,75))
ss.SetTangent(0,c4d.Vector(0,0,0),c4d.Vector(50*t,0,50*t))
if t>=1:
ss = c4d.SplineObject(3, c4d.SPLINETYPE_BEZIER)
ss.SetName("name")
ss.SetPoint(0,c4d.Vector(0, 0,0))
ss.SetPoint(1,c4d.Vector(75, 75,75))
ss.SetPoint(2,c4d.Vector(50*(t-1), 75*(t-1),75))
ss.SetTangent(0,c4d.Vector(0,0,0),c4d.Vector(50,0,50))
ss.SetTangent(1,c4d.Vector(0,0,0),c4d.Vector(50,50,0))
ss[c4d.SPLINEOBJECT_CLOSED] = True
return ss
doc.InsertObject(myspline1(0.1))
obj=doc.SearchObject('name')
id = c4d.DescID(c4d.DescLevel(c4d.CTpla, c4d.CTpla, 0))
plaTrack = c4d.CTrack(obj, id)
obj.InsertTrackSorted(plaTrack)
ctime = doc.GetTime() #save current time
fps = doc.GetFps()
myCurve = plaTrack.GetCurve()
time = c4d.BaseTime(0, fps)
dictKey = myCurve.AddKey(time)
key = dictKey["key"]
fillSuccess = plaTrack.FillKey(doc,obj,key)
time = c4d.BaseTime(45, fps)
myspline1(0.9)
obj = doc.SearchObject('name')
dictKey = myCurve.AddKey(time)
key = dictKey["key"]
fillSuccess = plaTrack.FillKey(doc,obj,key)
time = c4d.BaseTime(90, fps)
myspline1(2)
obj = doc.SearchObject('name')
dictKey = myCurve.AddKey(time)
key = dictKey["key"]
fillSuccess = plaTrack.FillKey(doc,obj,key)
if __name__=='__main__':
main()
Edit: Added code tags