You need to invoke your script from an actuator otherwise the scene will not be updated see image at the bottom of this post.
I searched my old sources and found this very messy one that still works in BGE (today tested with Blender (2.68.5):

import sys
import time
import os
import random
import select
from math import *
import mathutils
import bge
import bpy
import math
from mathutils import Vector
from mathutils import Quaternion
def applyKinect(rot,name):
scene = bge.logic.getCurrentScene()
source = scene.objects
main_arm = source.get('Armature')
#q = Quaternion((rot.w,-rot.x,-rot.z,rot.y))
q = Quaternion((rot.w,rot.x,rot.y,rot.z))
main_arm.channels[ name ].rotation_quaternion = q.normalized()
main_arm.update()
v = rot.to_euler("XYZ")
if name.startswith('head'):
print("%s X:%r Y:%r Z:%r" % (name,math.degrees(v.x),math.degrees(v.y),math.degrees(v.z)))
def map():
#print("map")
for i in range(1, 11):
user = bpy.nui.get_user(i)
if not user:
continue
#print("Map Kinect Found User=" + str(i))
# rot = user.hip_center[1]
# applyKinect( rot, 'hip_center' )
# print("hip_center %r" % rot )
#rot = user.neck[2]
#applyKinect( rot, 'neck' )
rot = user.head[2]
arm = applyKinect( rot, 'head' )
rot = user.r_shoulder[2]
applyKinect( rot, 'shoulder_R' )
rot = user.r_elbow[2]
applyKinect( rot, 'elbow_R' )
rot = user.r_wrist[2]
applyKinect( rot, 'wrist_R' )
rot = user.r_hand[2]
applyKinect( rot, 'hand_R' )
rot = user.l_shoulder[1]
applyKinect( rot, 'shoulder_L' )
rot = user.l_elbow[1]
applyKinect( rot, 'elbow_L' )
rot = user.l_wrist[1]
applyKinect( rot, 'wrist_L' )
rot = user.l_hand[1]
applyKinect( rot, 'hand_L' )
def dump(ctx, obj, level=0):
for attr in dir(obj):
print( "%s.%s = %s" % (ctx, attr, getattr(obj, attr)))
map()
#test()
I used quaternions (note that you can convert your euler angles to a quaternion using the methods from mathutils).
The data is provided by an addon (and polled by bpy.nui.get_user(i)
), the script is executed with a logic block like this:
