1

Тема: AHK: Kinect: OSC messages.

Так... Даже не знаю с чего начать... Предыстория... В общем, есть такая штука "Kinect". Это сенсор с инфракрасным прожектором и собствственно инфракрасным сенсором. Распознает движения и превращает их грубо говоря в электрический заряд. Как-то так. Он предназначен для приставки XBOX360. Но многие энтузиасты поподключали этот Кинект к различным приборам. Один из них - это ПК. Энтузиасты даже написали дрова под винду для этого кинекта и сейчас уже очень много различных хаков Кинекта под ПК. Вот на этом сайте(не сочтите за рекламу) очень много полезной инфы: http://kinecthacks.net. Так вот. Существует очень много разных хаков. В большинстве бесполезных. Я лично пытаюсь настроить Кинект под игры на ПК. Получается весьма удачно(пока что). Я это делаю с помощью программы под названием GlovePIE и программы Glovenect.  В общем, при движении программа Glovenect перехватывает команды, которые посылает кинект и посылает их в виде OSC команд через порт 5252. GlovePIE перехватывает их и превращает в нужные мне действия... Сложно объяснить т.к. я любитель-дилетант и мне не хватает опыта, образования и усердности. Эта прога хорошая, только в ней нет возможности компилировать скрипты в exe формат т.к. разработчик программы забил на неё. Я хочу сделать тоже самое в AutoHotKey, но не знаю как. Можно конечно же садиться и писать на C++, но я не знаю языка С++, а чтобы его выучить в достаточной мере придеться потратить целый год, а через год будут уже официальные дрова вместе с прогами, а там и 8 Windows не загорами с полной поддержкой Кинекта. Значит, надо, чтобы AutoHotKey скрипт начал читать OSC команды, которые посылаются через порт 5252 процессом Glovenect.exe. Я не очень-то понимаю, что я пишу...
Вот код, который я вписываю в glovePIE для перехвата прогой GlovePIE из Glovenect.exe:

///////////////
//OSC CLIENT///
///////////////
Osc.listening = true
osc.ListenPort = 5252
/////////////////////////
////// Переназначение переменных/////
/////////////////////////
/// X,Y,Z Coordinates Read
var.head_x = osc.x.joint.head.1
var.head_y = osc.y.joint.head.1
var.head_z = osc.z.joint.head.1
var.neck_x = osc.x.joint.neck.1
var.neck_y = osc.y.joint.neck.1
var.neck_z = osc.z.joint.neck.1
var.l_shoulder_x = osc.x.joint.l_shoulder.1
var.l_shoulder_y = osc.y.joint.l_shoulder.1
var.l_shoulder_z = osc.z.joint.l_shoulder.1
var.r_shoulder_x = osc.x.joint.r_shoulder.1
var.r_shoulder_y = osc.y.joint.r_shoulder.1
var.r_shoulder_z = osc.z.joint.r_shoulder.1
var.l_hand_x = osc.x.joint.l_hand.1
var.l_hand_y = osc.y.joint.l_hand.1
var.l_hand_z = osc.z.joint.l_hand.1
var.r_hand_x = osc.x.joint.r_hand.1
var.r_hand_y = osc.y.joint.r_hand.1
var.r_hand_z = osc.z.joint.r_hand.1
var.l_elbow_x = osc.x.joint.l_elbow.1
var.l_elbow_y = osc.y.joint.l_elbow.1
var.l_elbow_z = osc.z.joint.l_elbow.1
var.r_elbow_x = osc.x.joint.r_elbow.1
var.r_elbow_y = osc.y.joint.r_elbow.1
var.r_elbow_z = osc.z.joint.r_elbow.1
var.l_hip_x = osc.x.joint.l_hip.1
var.l_hip_y = osc.y.joint.l_hip.1
var.l_hip_z = osc.z.joint.l_hip.1
var.r_hip_x = osc.x.joint.r_hip.1
var.r_hip_y = osc.y.joint.r_hip.1
var.r_hip_z = osc.z.joint.r_hip.1
var.torso_x = osc.x.joint.torso.1
var.torso_y = osc.y.joint.torso.1
var.torso_z = osc.z.joint.torso.1
var.waist_x = osc.x.joint.waist.1
var.waist_y = osc.y.joint.waist.1
var.waist_z = osc.z.joint.waist.1
var.l_knee_x = osc.x.joint.l_knee.1
var.l_knee_y = osc.y.joint.l_knee.1
var.l_knee_z = osc.z.joint.l_knee.1
var.r_knee_x = osc.x.joint.r_knee.1
var.r_knee_y = osc.y.joint.r_knee.1
var.r_knee_z = osc.z.joint.r_knee.1
var.l_foot_x = osc.x.joint.l_foot.1
var.l_foot_y = osc.y.joint.l_foot.1
var.l_foot_z = osc.z.joint.l_foot.1
var.r_foot_x = osc.x.joint.r_foot.1
var.r_foot_y = osc.y.joint.r_foot.1
var.r_foot_z = osc.z.joint.r_foot.1

Вверху включается читание команд OSC, указывается порт. Дальше идут точки, по которым ориентируется Кинект. Голова, руки, ноги, колени, торс, шея и т.д. Несложно разобраться. Справа идут переменные, которые находятся в программе Glovenect и посылаются через порт 5252. Слева находятся переменные, которые понимает прога GlovePIE и только с ними я оперирую в дальнейшем при написании скриптов. В общем, я думаю для вас, сис. админы, несложно подсказать мне, как включить osc чтение команд, порт указать и перебить значения(вы мне одно покажите как, остальные я сам перебью). Вот пару примеров в GlovePIE, как можно оперировать с переменными(это уже лишнее, но все-таки):

// Удар левой рукой

(key.J) = (var.r_shoulder_z - var.r_hand_z >= 0.33) and (var.r_shoulder_y - var.r_hand_y > 0.05)

// Удар правой ногой

(key.L) = (var.l_hip_z - var.l_foot_z >= 0.50) and (var.l_hip_y - var.l_foot_y >= -0.40)

Не забрасывайте тему, пожалуйста.