2
$\begingroup$

I've got this script file that works flawlessly in the viewport, but stops completely when I start rendering it as an Animation.

import bpy
import math

def my_handler(scene):
    print('testing') # this will be printed out 3 times each frame when rendering the animation, but once only in the viewport.
    #assigning variables to objects
    a=bpy.data.objects['EmptyTop']
    b=bpy.data.objects['EmptyRight']
    text=bpy.data.objects['TextRightSide']

    # formula for calculating distance
    distance=str(int(math.hypot(a.location.x - b.location.x, a.location.y - b.location.y)*10))
    text.data.body=distance

bpy.app.handlers.frame_change_post.append(my_handler)

(my_handler) is refreshed every frame as I've tested it by printing a test text in it. However, the main problem is that it does not do anything with the next code (bpy.data.objects). I've tried to change (bpy.data) to (scene) as shown

import bpy
import math

def my_handler(scene):
    print('testing')
    #assigning variables to objects
    a=scene.objects['EmptyTop']
    b=scene.objects['EmptyRight']
    text=scene.objects['TextRightSide']

    # formula for calculating distance
    distance=str(int(math.hypot(a.location.x - b.location.x, a.location.y - b.location.y)*10))
    text.data.body=distance

bpy.app.handlers.frame_change_post.append(my_handler)

Worked just fine in the viewport but gave me this message when rendering the it as An animation

(line 7, in my_handler
KeyError: 'bpy_prop_collection[key]: key "EmptyTop" not found')

Sooo, what should I do now to make it work?

$\endgroup$