将传入的 OSC 消息转换为 TUIO 2Dcur

Convert incoming OSC message to TUIO 2Dcur

以下是目前有效的方法:

到目前为止,还不错。

接下来,我想通过 UDP 将这些消息发送到 TUIO 客户端。作为第一步,我确保我可以通过 UDP 发送 OSC 消息(再次使用 osc.js)并且确实有效。

这是我的 Chrome 应用看到的一些示例消息:

// console.log(JSON.stringify(msg)) gives results like this:
{"address":"/p0","args":[2369,1683,170]}
{"address":"/p1","args":[1906,1752,137]}
{"address":"/p1","args":[1906,1752,137]}

如何将这些转换为 TUIO 消息?

我尝试将此 Chrome 应用程序连接到各种示例 TUIO 客户端实现(节点、浏览器、Ruby、Python、处理),结果要么崩溃由于消息格式错误导致的异常,或者根本不做任何事情。

以下是我尝试过但没有成功的一些消息格式:

osc.send(msg);
osc.send({address:"/tuio/2Dcur", args:msg.args});
osc.send({address:"/tuio/2Dcur", args:["alive"].concat(msg.args)});
osc.send({address:"/tuio/2Dcur", args:["set"].concat(msg.args)});

我做错了什么?

终于发现我错过了什么。到目前为止我使用的 TUIO 客户端显然期望 OSC bundles,所以我的应用程序应该像这样发送一个包:

my_osc.send({
  timeTag: osc.timeTag(0),
  packets: [
    {address:'/tuio/2Dcur', args: ['alive'].concat(my_session_id)},
    {address:'/tuio/2Dcur', args: ['set'].concat(my_session_id).concat(my_data)}
  ]
});