When I need an animated text value I use python code like this:
def frameForX(idx, nPoints, f0, f9):
return f0 + (f9-f0) *idx/(nPoints-1)
def setVisibility(obj, f1, f2):
if not f2 is None:
obj.keyframe_insert(data_path='hide', frame= bpy.context.scene.frame_end+10)
obj.keyframe_insert(data_path='hide_render', frame=f1)
obj.keyframe_insert(data_path='hide', frame=f1)
obj.hide = True
obj.hide_render = True
obj.keyframe_insert(data_path='hide', frame=0)
obj.keyframe_insert(data_path='hide_render', frame=0)
if not f2 is None:
obj.keyframe_insert(data_path='hide', frame=f2)
obj.keyframe_insert(data_path='hide_render', frame=f2)
def makeText(text, loc, f1, f2):
curve = bpy.data.curves.new("label", 'FONT')
curve.body = text
o1 = bpy.data.objects.new("label", curve)
bpy.context.scene.objects.link(o1)
o1.location = loc
setVisibility(o1, f1, f2)
o1.parent = bpy.data.objects["font folder"]
curve.materials.append(bpy.data.materials["text"])
return o1
def make2Text(text1, text2, loc, f1, f2):
o1 = makeText(text1, loc, f1, f2)
o2 = makeText(text2, loc, f1, f2)
o1.data.align = 'RIGHT'
f1 = -1
for i,xy in enumerate(data):
f2 = frameForX(i, len(data), f0, f9)
f3 = frameForX(i+1, len(data), f0, f9)
if (i+1 >= len(data)):
f3 = None
if (f2>f1):
make2Text("x=%d,"%xy[0], "y=%.1f"%xy[1], [4,6,1], f2, f3)
f1 = f2
That code sample is part of example graph with animated curve bevel
Best practice is to put this overlay in its own scene separate from the VSE and add an action strip pointing at the separate scene.