Leap Motion的官方已经有一个名为LeapJS的库,但是官方没有做好一个Node.js的Demo,有的都是Client Side的一些示例。
在最开始的时候给我造成了极大的困惑,我以为启动Leap Motion的应用就可以直接运行官方的Demo——在这个应用里会运行WebSocket的Server。
这时候,我们需要一个简单的服务端代码来启动这个WebSocket Server。按照官方的node包,则是setupConnectionEvents。
首先,我们需要先初始化一个controller:
var leapjs = require('leapjs'),
controller = new leapjs.Controller({
frameEventName: 'animationFrame'
});
然后就是在启动和断开的时候打个Log
controller.on('connect', function (data) { console.log("Successfully connected.");
});
controller.on('streamingStarted', function (data) { console.log("A Leap device has been connected.");
});
controller.on('streamingStopped', function (data) { console.log("A Leap device has been disconnected.");
});
接着,就可以连接了:
controller.connect();
最后,我们就可以在浏览器上访问这个WebSocket Server了。
Leap Motion提供了leapjs,用于浏览器访问。如其源码所示,默认的端口是6437:
BaseConnection.prototype.getUrl = function() { return this.scheme + "//" + this.host + ":" + this.port + "/v" + this.opts.requestProtocolVersion + ".json";
}
BaseConnection.prototype.getScheme = function(){ return 'ws:'}
BaseConnection.prototype.getPort = function(){ return 6437}
接着,我们所需要做的就是创建一个web app。然后,先用官方的Demo:
Leap.loop({
hand: function(hand){ console.log( hand.screenPosition() );
}
}).use('screenPosition');
然后,启动Server,刷新浏览器,在Leap Motion上面动动,就会有下面的结果:
[-65.61160000000001, 160.66859999999997, 72.7992]
[-165.05679999999995, 172.716, 83.8854]
[-222.02319999999997, 157.9176, 83.9886]
[-270.48220000000003, 164.90820000000002, 86.7462]
[-319.08939999999996, 189.69539999999995, 86.4468]
[-347.6512, 236.19600000000003, 76.0038]
[-407.668, 261.657, 72.2484]
现在,我们就可以连接更多的东西~~。