Blender Matrices require the axes to be orthogonal.
The axes can be gleaned from the matrix's 3x3 rotation part. Normalizing removes scale component.
x, y, z = M.to_3x3().normalized().col
Blender transform matrices are required to have their axes orthogonal, taking your example matrix
>>> M = Matrix((( 1.0000, 0.0500, -0.0200, 0.0000),
Get the object data (font curve), ask for the frame and check whether it's in a specific range using python's range(). Code based on Updating text object in Blender 2.81 using python
scene = bpy.context.scene
obj = scene.objects['Font Object']
font_curve = obj.data
if scene.frame_current in range(40, 60):
There are multiple ways you can animate movement of a texture on a plane. Here is the most direct:
The plane is already UV unwrapped.
Change the image mode from "Repeat" to "Clip".
Set your keyframes on the X and Y values in the Mapping node. Changing these values moves the effective position of the image on the UV Map.
Try to check your frames on graph editor. Try to change easing, handle type to automatic or auto clamped, as well as "smooth keys alt+o" and "Discontinuity (Euler) Filter" - they are available in graph editor, top bar menu "Key"
Disable "Only show selected" on your graph editor and they will show up:
Unfortunately, everything else will show up too.
My recommendation for nearly any non-standard, per-object animated values, is to drive them from a bone rather than animate them directly. This gives you a single place to store all animated values for a single object on ...
at least i have a workaround for you:
Just plug the min/max to your "Group input"-node and then you can keyframe then on the modifier panel (in the picture on the right side where the yellow color is) and this you can see and modify in the graph editor.