Spline points - local / global

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 10/07/2012 at 02:43, xxxxxxxx wrote:

I'm trying to crate a spline, however, I seem to mess up local / global positions.
Here is what I do.
I have three Null objects and their global positions.
Now the spline should start at p1 and end at the middle between p2 en p3 (=(p2+p3)/2).
I create a spline, calculate the step per frame (midstep = midpoint* (frame/20.0) + p1).
Everything is ok, when p1 is at 0,0,0. If not, it fails.

Any ideas?
Here is the source.

import c4d
#Welcome to the world of Python

def main() :
  pass  #put in your code here

op1 = doc.SearchObject("p1")
  p1 = op1.GetMg().off
  op2 = doc.SearchObject("p2")
  p2 = op2.GetMg().off
  op3 = doc.SearchObject("p3")
  p3 = op3.GetMg().off
 
  midpoint = (p3 + p2) / 2
  #print midpoint

frame = doc.GetTime().GetFrame(doc.GetFps())
 
  if ((frame == 1) and (doc.SearchObject("EigenSpline") == None)) :
      print "Create Spline."
      splineobj = c4d.BaseObject(c4d.Ospline) # Create new spline
      splineobj[c4d.ID_BASELIST_NAME] = "EigenSpline"
      doc.InsertObject(splineobj)                
      c4d.EventAdd()

current = splineobj.GetPointCount()
      splineobj.ResizeObject(1)
      splineobj.SetPoint(0, p1)

splineobj.Message (c4d.MSG_UPDATE)    #update spline in viewport
     
  else:
      if (frame > 1) :
          splineobj = doc.SearchObject("EigenSpline")

splineobj.ResizeObject(frame)     #add point

midstep = midpoint* (frame/20.0) + p1
          splineobj.SetPoint(frame-1, midstep)
         
          splineobj.Message (c4d.MSG_UPDATE)    #update spline in viewport

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 10/07/2012 at 03:58, xxxxxxxx wrote:

Solved. The algorithm was wrong, also to difficult.
It should be: midstep = (midpoint - p1) * (frame/20.0) + p1