【问题标题】:Is it possible to modify the time OSCeleton sends a lost_user event/message?是否可以修改 OSCeleton 发送 lost_user 事件/消息的时间?
【发布时间】:2012-10-19 22:49:29
【问题描述】:

我正在玩 OSCeletonProcessing 并成功地追踪骨骼并做一些事情。

我想知道是否有任何方法可以更改将“lost_user”消息发送到处理中的延迟时间。 这对于我想要实现的目标来说需要很长时间,因为我需要在用户离开屏幕后立即停止跟踪,这样我才能接受另一个用户的交互。 (想象一个很多人都想玩的装置)。

任何帮助/提示将不胜感激。

乔恩

【问题讨论】:

    标签: java processing osc


    【解决方案1】:

    据我所知,从 OSCeleton 的源代码和我对 kinect 的最少经验(我从未使用过 OSCeleton)来看,没有办法修改该代码来做到这一点。这似乎是由驱动程序或 kinect 自身处理的更底层的事情(?)。

    但您不必为此束缚自己,如果我理解正确,我会建议几种绕过问题的方法。

    首先,最新的驱动程序和示例应该支持多用户,这意味着您可以只安排谁是您的主要用户。从我可以从源代码中得知,当检测到新用户以及 ID 号时,您确实会在处理中收到一条 osc 消息。您可以将每个到达的新用户放入 arrayList 中,并找出一种不依赖最新用户的方法。

    如果您仍然坚持用户后用户的事情,或者我对多用户支持有误(自述文件中没有提到),您可以检查自己是否有用户离开了该区域。尽管您无法获得这样的明确答案,但您可以检查例如,用户的特定关节或所有关节是否在最近收到的 10-20 条 osc 消息中移动。这可能意味着将这个关节的位置存储在一个 10-20 项数组中并不断更新,同时还要检查项是否不同。如果数组中的所有项目都相同,则您的用户没有移动一点,因此可能不应该考虑在内。

    最后但同样重要的是,您可以切换到其他解决方案。我大约一年前使用的是“Synapse for Kinect”,现在看起来也很陈旧。您可以使用的最新版本是一个名为 SimpleOpenNI 的处理库,它绝对具有多用户跟踪功能,您不需要运行任何中间程序来为您提供关节。

    希望对你有帮助

    【讨论】:

    • 您好Petros,感谢您的回复。我快速查看了源代码,但由于我是 C 的新手,找不到方法,也许这种行为是由 OPENNI 驱动程序处理的。关于你的建议:是的,我实际上做了一些。我做了一个接收 OSC 数据的骨架对象。我把它们放在一个数组列表中,据我所知,它工作得很好。当在特定时间内收到 OSC 消息时,骨架也保持“活跃”(被绘制)。
    • 我还一次测试了 4 个用户。问题是:OSCeleton 一次支持 4 个 skels(我读过可能是 6 个),所以如果屏幕上有 4 个 skels,其中一个(或更多)离开屏幕,有时需要很长时间才能发送“lost_user”消息。发生这种情况时,如果有另一个新用户尝试进行交互,则在该消息触发之前它可能无法识别他。我正在考虑在可能有多个用户等待与之交互的安装中。我想我会以某种方式解决它......已经发布在osceleton google群组上,但还没有。干杯!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-14
    • 2023-01-04
    相关资源
    最近更新 更多