OverviewFilesCommitsIssuesDocsReleasesPeers

cthuloid / ghettopticon / python / iktofile.py

37 lines · python ref:
from math import pi
import bpy
import sys
import time
import struct

sc = bpy.context.scene
original_frame = sc.frame_current

arma = bpy.data.objects["arm_rig"]
fo = arma.pose.bones["forearm"]
up = arma.pose.bones["upperarm"]

rad_to_deg = 180.0/pi

frame_locs = []
sc.frame_set(sc.frame_start)
while sc.frame_current <= sc.frame_end:
    bpy.context.scene.update()
    
    up_q = up.matrix.to_quaternion()
    fo_q = fo.matrix.to_quaternion()
    fo_q.rotate(up.matrix)

    up_a = up_q.to_euler().x * rad_to_deg + 90
    fo_a = fo_q.to_euler().x * rad_to_deg
    
    up_a = 0 if up_a < 0 else up_a
    
    frame_locs.append((sc.frame_current, up_a, fo_a))

    sc.frame_set(sc.frame_current + 1)
sc.frame_current = original_frame

out = bpy.data.texts["out"]
out.clear()
out.write('\n'.join(["%.4f,%.4f"%(up,fo) for f, up,fo in frame_locs]) )