﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-将Java进行到底-文章分类-原创</title><link>http://www.blogjava.net/freddychu/category/4169.html</link><description>将Java进行到底</description><language>zh-cn</language><lastBuildDate>Sun, 14 Aug 2011 15:55:03 GMT</lastBuildDate><pubDate>Sun, 14 Aug 2011 15:55:03 GMT</pubDate><ttl>60</ttl><item><title>Microsoft Kinect SDK和 PrimeSense OpenNI 优劣对比</title><link>http://www.blogjava.net/freddychu/articles/356200.html</link><dc:creator>风萧萧</dc:creator><author>风萧萧</author><pubDate>Wed, 10 Aug 2011 03:27:00 GMT</pubDate><guid>http://www.blogjava.net/freddychu/articles/356200.html</guid><wfw:comment>http://www.blogjava.net/freddychu/comments/356200.html</wfw:comment><comments>http://www.blogjava.net/freddychu/articles/356200.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freddychu/comments/commentRss/356200.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freddychu/services/trackbacks/356200.html</trackback:ping><description><![CDATA[<span class="Apple-style-span" style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif, Hei; font-size: 12px; line-height: 18px; background-color: #ffffff; "><br /><br /><table cellspacing="0" cellpadding="0" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; empty-cells: show; border-collapse: collapse; table-layout: fixed; width: 627px; "><tbody style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; "><tr style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; "><td class="t_f" id="postmessage_2242" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; font-size: 14px; ">翻译来自<a href="http://www.niopen.com" target="_blank" title="kinect体感中国社区">xbox360 kinect体感中国开发论坛</a><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " /><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " />微软Kinect SDK VS PrimeSense的OpenNI[p=22, null, left]试玩了微软Kinect SDK和PrimeSense的OpenNI SDK，这里发一些我的想法：（请注意，微软的SDK版本是Beta版，最终版本发布时可能会不一样）<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " /><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " />微软的Kinect SDK（试用版）优点：<ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 14px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; "><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">支持音频</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">支持马达及倾斜</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; "><font color="#000" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; ">全身追踪：</font><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " /><ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 14px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; "><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">不需要校准姿势</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">包括头，手，脚，锁骨</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; "><font color="#000000" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; ">似乎更好地处理与闭塞关节（occluded joints）</font><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " /></li></ul></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">支持多个传感器</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">安装简单</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">一个新的视频或新的深度图像出现会触发一个SDK事件<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " /></li></ul>缺点：<ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 14px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; "><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">许可用于非商业用途</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">只跟踪全身（无手的跟踪模式）</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">不提供的颜色和深度图像流相互对齐<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " /><ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 14px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; "><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">虽然有功能以调整个人坐标</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">并且有迹象支持稍后可能会<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " /></li></ul></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">全身追踪：<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " /><ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 14px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; "><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">只计算关节的位置，不支持旋转</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">只跟踪充分的身体，没有upperbody或手的模式</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">似乎要消耗更多的CPU功率比OpenNI /NITE（不一样的测试基准）<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " /></li></ul></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">没有手势识别系统</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">不支持PrimeSense的华硕WAVI Xtion传感器？（任何人都可以证实这一点吗？）</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">仅支持Win7的（X86和64位）</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">不支持Unity3D游戏引擎</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">没有内置的支持写到磁盘的记录/回放</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">不支持流化红外视频数据</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">当新的用户进入场景或离开场景，SDK没有事件产生<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " /></li></ul><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " />PrimeSense的OpenNI / NITE优点：<ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 14px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; "><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">许可证包括商业用途</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">包括专人跟踪框架</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">包括手势识别框架</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">可以自动调整深度的图像流的彩色图像</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">全身追踪：<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " /><ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 14px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; "><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">还可以计算为关节的旋转</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">支持手的唯一的模式</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">似乎比微软Kinect SDK的跟踪（不一样的测试基准），消耗更少的CPU电源<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " /></li></ul></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">还支持PrimeSense的华硕WAVI Xtion传感器</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">虽然设置和枚举是一个有点古怪，支持多种传感器</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">支持Windows（包括Vista和XP），Linux和Mac OSX</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">Unity3D游戏引擎的全力支持与代码</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">支持记录/回放/从磁盘</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">支持流化红外视频数据</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">当新的用户进入场景或离开场景，有事件产生<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " /></li></ul>缺点：<ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 14px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; "><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">没有音频支持</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">不支持马达和倾斜（虽然可以同时使用CL - NUI电机驱动电机/倾斜）</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">全身追踪：<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " /><ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 14px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; "><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">没有旋转的头部，手，脚，锁骨</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">需要校准的姿势开始跟踪（虽然它也可以保存/加载到/从磁盘重用）</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">闭塞的关节没有估算<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " /></li></ul></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">虽然设置和枚举是一个有点古怪，支持多种传感器</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">三个单独的安装程序和一个NITE许可证字符串（尽管这个过程可以用我的马达驱动程序安装自动）</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">SDK没有的事件，当新的视频或新的深度框架<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " /></li></ul><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " />（个人）的结论：[p=22, null, left]微软似乎骨架和/或音频时，有边缘<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " />。OpenNI似乎最适合彩色pointclouds工作时非Win7的平台和/或商业项目 。<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " />[p=22, null, left]当在特定的姿态工作：<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " /><ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 14px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; "><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; ">如果您的传感器只能看到upperbody /手/或您希望现有的框架内开始使用OpenNI / NITE。</li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; list-style-type: disc; list-style-position: initial; list-style-image: initial; "><font color="#000" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; "><font color="#000" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; ">当你的传感器可以看到完整的身体，更稳定的微软骨架可能是最好的使用的，但是你必须编写自己的姿态识别。</font>（你也有扩展fullbody手势在OpenNI / NITE&nbsp;</font><font color="#000" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; ">）</font><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " /></li></ul><font color="#000000" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; "><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " /></font><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; " /><font color="#000000" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; ">原文：<a href="http://www.brekel.com/?page_id=671" target="_blank" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap: break-word; color: #336699; text-decoration: underline; ">http://www.brekel.com/?page_id=671</a></font></td></tr></tbody></table></span><img src ="http://www.blogjava.net/freddychu/aggbug/356200.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freddychu/" target="_blank">风萧萧</a> 2011-08-10 11:27 <a href="http://www.blogjava.net/freddychu/articles/356200.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>整合前台技术acegi+spring+struts</title><link>http://www.blogjava.net/freddychu/articles/16937.html</link><dc:creator>风萧萧</dc:creator><author>风萧萧</author><pubDate>Wed, 26 Oct 2005 16:06:00 GMT</pubDate><guid>http://www.blogjava.net/freddychu/articles/16937.html</guid><wfw:comment>http://www.blogjava.net/freddychu/comments/16937.html</wfw:comment><comments>http://www.blogjava.net/freddychu/articles/16937.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/freddychu/comments/commentRss/16937.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freddychu/services/trackbacks/16937.html</trackback:ping><description><![CDATA[<P>这两天尝试整合一下Acegi、Spring和Struts。配置文件如下：<BR>web.xml文件内容详细：<BR><?xml version="1.0" encoding="UTF-8"?><BR><!DOCTYPE web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN' 'http://java.sun.com/dtd/web-app_2_3.dtd'><BR><web-app><BR> <display-name>Acegi Sample Application</display-name></P>
<P> <!--<BR>  - Location of the XML file that defines the root application context<BR>  - Applied by ContextLoaderListener.<BR> --><BR> <context-param><BR>  <param-name>contextConfigLocation</param-name><BR>  <param-value><BR>   /WEB-INF/applicationContext.xml<BR>   /WEB-INF/applicationContext-acegi.xml<BR>  </param-value><BR> </context-param></P>
<P> <context-param><BR>  <param-name>log4jConfigLocation</param-name><BR>  <param-value>/WEB-INF/classes/log4j.properties</param-value><BR> </context-param></P>
<P> <!-- Acegi framework configure --><BR> <filter><BR>  <filter-name>Acegi Filter Chain Proxy</filter-name><BR>  <filter-class><BR>   net.sf.acegisecurity.util.FilterToBeanProxy<BR>  </filter-class><BR>  <init-param><BR>   <param-name>targetClass</param-name><BR>   <param-value><BR>    net.sf.acegisecurity.util.FilterChainProxy<BR>   </param-value><BR>  </init-param><BR> </filter></P>
<P> <filter-mapping><BR>  <filter-name>Acegi Filter Chain Proxy</filter-name><BR>  <url-pattern>/*</url-pattern><BR> </filter-mapping></P>
<P> <!--<BR>  - Loads the root application context of this web app at startup.<BR>  - The application context is then available via<BR>  - WebApplicationContextUtils.getWebApplicationContext(servletContext).<BR> --><BR> <listener><BR>  <listener-class><BR>   org.springframework.web.context.ContextLoaderListener<BR>  </listener-class><BR> </listener></P>
<P> <listener><BR>  <listener-class><BR>   org.springframework.web.util.Log4jConfigListener<BR>  </listener-class><BR> </listener></P>
<P> </P>
<P><BR> <!-- Struts configure --></P>
<P> <servlet><BR>  <servlet-name>action</servlet-name><BR>  <servlet-class><BR>   org.apache.struts.action.ActionServlet<BR>  </servlet-class><BR>  <init-param><BR>   <param-name>config</param-name><BR>   <param-value>/WEB-INF/struts-config.xml</param-value><BR>  </init-param><BR>  <init-param><BR>   <param-name>debug</param-name><BR>   <param-value>3</param-value><BR>  </init-param><BR>  <init-param><BR>   <param-name>detail</param-name><BR>   <param-value>3</param-value><BR>  </init-param><BR>  <load-on-startup>0</load-on-startup><BR> </servlet><BR> <servlet-mapping><BR>  <servlet-name>action</servlet-name><BR>  <url-pattern>*.do</url-pattern><BR> </servlet-mapping></P>
<P><BR></web-app></P>
<P>spring的配置文件我分为两个：<BR>一个是applicationContext.xml，配置了spring整合Hibernate的部分，包括Datasource和DAO部分，内容如下：<BR><?xml version="1.0" encoding="UTF-8"?><BR><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "<A href="http://www.springframework.org/dtd/spring-beans.dtd">http://www.springframework.org/dtd/spring-beans.dtd</A>"></P>
<P><beans><BR> <bean id="dataSource"<BR>  class="org.apache.commons.dbcp.BasicDataSource"<BR>  destroy-method="close"><BR>  <property name="driverClassName"><BR>   <value>com.mysql.jdbc.Driver</value><BR>  </property><BR>  <property name="url"><BR>   <value>jdbc:mysql://localhost/lcdis</value><BR>  </property><BR>  <property name="username"><BR>   <value>root</value><BR>  </property><BR>  <property name="password"><BR>   <value></value><BR>  </property><BR> </bean></P>
<P> <bean id="sessionFactory"<BR>  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><BR>  <property name="mappingResources"><BR>   <list><BR>    <value>com/laf/bo/Example.hbm.xml</value><BR>   </list><BR>  </property></P>
<P>  <property name="hibernateProperties"><BR>   <props><BR>    <prop key="hibernate.dialect"><BR>     org.hibernate.dialect.MySQLDialect<BR>    </prop><BR>    <prop key="hibernate.show_sql">true</prop><BR>    <prop key="hibernate.cglib.use_reflection_optimizer"><BR>     true<BR>    </prop><BR>   </props><BR>  </property></P>
<P>  <property name="dataSource"><BR>   <ref bean="dataSource" /><BR>  </property><BR> </bean></P>
<P> <bean id="transactionManager"<BR>  class="org.springframework.orm.hibernate3.HibernateTransactionManager"><BR>  <property name="sessionFactory"><BR>   <ref local="sessionFactory" /><BR>  </property><BR> </bean></P>
<P> <bean id="businessService"<BR>  class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"><BR>  <property name="transactionManager"><BR>   <ref local="transactionManager" /><BR>  </property><BR>  <property name="target"><BR>   <ref local="businessServiceImpl" /><BR>  </property><BR>  <property name="transactionAttributes"><BR>   <props><BR>    <prop key="get*"><BR>     PROPAGATION_REQUIRED,readOnly,-BusinessException<BR>    </prop><BR>    <prop key="set*"><BR>     PROPAGATION_REQUIRED,-BusinessException<BR>    </prop><BR>    <prop key="modify*"><BR>     PROPAGATION_REQUIRED,-BusinessException<BR>    </prop><BR>    <prop key="remove*"><BR>     PROPAGATION_REQUIRED,-BusinessException<BR>    </prop><BR>   </props><BR>  </property><BR> </bean></P>
<P> <bean id="businessServiceImpl"<BR>  class="com.laf.bd.BusinessServiceImpl"><BR>  <property name="exampleDAO"><BR>   <ref bean="exampleDAO" /><BR>  </property><BR> </bean></P>
<P> <bean id="exampleDAO" class="com.laf.dao.ExampleDAOImpl"><BR>  <property name="sessionFactory"><BR>   <ref local="sessionFactory" /><BR>  </property><BR> </bean></P>
<P><BR></beans><BR><BR>另外一个.xml，配置了Acegi相关内容：<BR><?xml version="1.0" encoding="UTF-8"?><BR><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "<A href="http://www.springframework.org/dtd/spring-beans.dtd">http://www.springframework.org/dtd/spring-beans.dtd</A>"></P>
<P><beans></P>
<P> <!-- Acegi framework configure --><BR> <!-- ======================== FILTER CHAIN ======================= --></P>
<P> <!--  if you wish to use channel security, add "channelProcessingFilter," in front<BR>  of "httpSessionContextIntegrationFilter" in the list below --><BR> <bean id="filterChainProxy"<BR>  class="net.sf.acegisecurity.util.FilterChainProxy"><BR>  <property name="filterInvocationDefinitionSource"><BR>   <value><BR>    CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON<BR>    PATTERN_TYPE_APACHE_ANT<BR>    /**=httpSessionContextIntegrationFilter,authenticationProcessingFilter, securityEnforcementFilter<BR>   </value><BR>  </property><BR> </bean><BR> <bean id="authenticationProcessingFilter"<BR>  class="net.sf.acegisecurity.ui.webapp.AuthenticationProcessingFilter"><BR>  <property name="authenticationManager"><BR>   <ref local="authenticationManager" /><BR>  </property><BR>  <property name="authenticationFailureUrl"><BR>   <value>/login.jsp</value><BR>  </property><BR>  <property name="defaultTargetUrl"><BR>   <value>/</value><BR>  </property><BR>  <property name="filterProcessesUrl"><BR><FONT color=#7fffd4>   <value>/j_acegi_security_check.do</value></FONT><BR>  </property><BR> </bean><BR> <bean id="authenticationManager"<BR>  class="net.sf.acegisecurity.providers.ProviderManager"><BR>  <property name="providers"><BR>   <list><BR>    <ref local="daoAuthenticationProvider" /><BR>   </list><BR>  </property><BR> </bean></P>
<P><BR> <bean id="daoAuthenticationProvider"<BR>  class="net.sf.acegisecurity.providers.dao.DaoAuthenticationProvider"><BR>  <property name="authenticationDao"><BR>   <ref local="jdbcDaoImpl" /><BR>  </property><BR>  <property name="userCache"><BR>   <ref local="userCache" /><BR>  </property><BR>  <!--<BR>   <property name="passwordEncoder"><BR>   <ref local="passwordEncoder" /><BR>   </property><BR>  --><BR> </bean><BR> <bean id="jdbcDaoImpl"<BR>  class="net.sf.acegisecurity.providers.dao.jdbc.JdbcDaoImpl"><BR>  <property name="dataSource"><BR>   <ref bean="dataSource" /><BR>  </property><BR> </bean><BR> <bean id="cacheManager"<BR>  class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" /><BR> <bean id="userCacheBackend"<BR>  class="org.springframework.cache.ehcache.EhCacheFactoryBean"><BR>  <property name="cacheManager"><BR>   <ref local="cacheManager" /><BR>  </property><BR>  <property name="cacheName"><BR>   <value>userCache</value><BR>  </property><BR> </bean><BR> <bean id="userCache"<BR>  class="net.sf.acegisecurity.providers.dao.cache.EhCacheBasedUserCache"><BR>  <property name="cache"><BR>   <ref local="userCacheBackend" /><BR>  </property><BR> </bean><BR> <bean id="passwordEncoder"<BR>  class="net.sf.acegisecurity.providers.encoding.Md5PasswordEncoder"><BR> </bean></P>
<P> <bean id="anonymousProcessingFilter"<BR>  class="net.sf.acegisecurity.providers.anonymous.AnonymousProcessingFilter"><BR>  <property name="key"><BR>   <value>foobar</value><BR>  </property><BR>  <property name="userAttribute"><BR>   <value>anonymousUser,ROLE_ANONYMOUS</value><BR>  </property><BR> </bean><BR> <bean id="anonymousAuthenticationProvider"<BR>  class="net.sf.acegisecurity.providers.anonymous.AnonymousAuthenticationProvider"><BR>  <property name="key"><BR>   <value>foobar</value><BR>  </property><BR> </bean></P>
<P> <bean id="httpSessionContextIntegrationFilter"<BR>  class="net.sf.acegisecurity.context.HttpSessionContextIntegrationFilter"><BR>  <property name="context"><BR>   <value><BR>    net.sf.acegisecurity.context.security.SecureContextImpl<BR>   </value><BR>  </property><BR> </bean></P>
<P> <!-- ===================== HTTP REQUEST SECURITY ==================== --></P>
<P> <bean id="securityEnforcementFilter"<BR>  class="net.sf.acegisecurity.intercept.web.SecurityEnforcementFilter"><BR>  <property name="filterSecurityInterceptor"><BR>   <ref local="filterInvocationInterceptor" /><BR>  </property><BR>  <property name="authenticationEntryPoint"><BR>   <ref local="authenticationProcessingFilterEntryPoint" /><BR>  </property><BR> </bean></P>
<P> <bean id="roleVoter" class="net.sf.acegisecurity.vote.RoleVoter"></bean><BR> <bean id="httpRequestAccessDecisionManager"<BR>  class="net.sf.acegisecurity.vote.AffirmativeBased"><BR>  <property name="allowIfAllAbstainDecisions"><BR>   <value>false</value><BR>  </property><BR>  <property name="decisionVoters"><BR>   <list><BR>    <ref local="roleVoter" /><BR>   </list><BR>  </property><BR> </bean></P>
<P> <!-- Note the order that entries are placed against the objectDefinitionSource is critical.<BR>  The FilterSecurityInterceptor will work from the top of the list down to the FIRST pattern that matches the request URL.<BR>  Accordingly, you should place MOST SPECIFIC (ie a/b/c/d.*) expressions first, with LEAST SPECIFIC (ie a/.*) expressions last --><BR> <bean id="filterInvocationInterceptor"<BR>  class="net.sf.acegisecurity.intercept.web.FilterSecurityInterceptor"><BR>  <property name="authenticationManager"><BR>   <ref bean="authenticationManager" /><BR>  </property><BR>  <property name="accessDecisionManager"><BR>   <ref local="httpRequestAccessDecisionManager" /><BR>  </property><BR>  <property name="objectDefinitionSource"><BR>   <value><BR>    CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON<BR>    PATTERN_TYPE_APACHE_ANT<BR>    /index.jsp=ROLE_SUPERVISOR<BR>    /hello.jsp=ROLE_TELLER<BR>   <FONT color=#7fffd4> /*.do=ROLE_TELLER</FONT><BR>   </value><BR>  </property><BR> </bean><BR> <bean id="authenticationProcessingFilterEntryPoint"<BR>  class="net.sf.acegisecurity.ui.webapp.AuthenticationProcessingFilterEntryPoint"><BR>  <property name="loginFormUrl"><BR>   <value>/login.jsp</value><BR>  </property><BR>  <property name="forceHttps"><BR>   <value>false</value><BR>  </property><BR> </bean><BR></beans><BR><BR><BR>注意两处颜色不同的部分配置，是Acegi需要配合struts的内容。<BR><BR>Spring的配置我这里就不详细描述，这里主要谈谈对Acegi的看法。<BR><BR>我用的是Acegi0.8.3，目前是最新版。可以到项目主页下载：<A href="http://acegisecurity.sourceforge.net/">http://acegisecurity.sourceforge.net/</A> <BR><BR>各位也看到了，Acegi的配置还是比较复杂，要了解几个主要的类，如下图：<BR><BR><IMG title=acegi配置图 height=783 alt=applicationContext-acegi.jpg src="http://www.blogjava.net/images/blogjava_net/freddychu/chufa/acegi-cfg.jpg" width=646 border=0><BR><BR>如果嫌麻烦，就直接拷贝过去使用就可以了。只要修改objectDefinitionSource部分的权限配置就行。<BR><BR>再附上登录页面login.jsp的片断：<BR><html:form action="j_acegi_security_check" method="post"><BR>    <TABLE><BR>     <TR><BR>      <TD><BR>       User:<html:text property="j_username" /><BR>      </TD><BR>     </TR><BR>     <TR><BR>      <TD><BR>       Password:<html:password property="j_password" /><BR>      </TD><BR>     </TR><BR>     <TR><BR>      <TD><BR>       <html:submit property="submit" value="submit" /><BR>      </TD><BR>     </TR><BR>    </TABLE><BR>    </html:form><BR><BR>粗浅研究，首次涂鸦，希望有些可以供人参考之处，上面内容有很多写的不够详尽，各位看官可以留言，或发邮件共同探讨。</P><img src ="http://www.blogjava.net/freddychu/aggbug/16937.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freddychu/" target="_blank">风萧萧</a> 2005-10-27 00:06 <a href="http://www.blogjava.net/freddychu/articles/16937.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>