﻿<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>YuYuYouEr工作室</title>
	<atom:link href="http://www.yuyuyouer.cn/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.yuyuyouer.cn/blog</link>
	<description>AREA OF 雨雨油儿 ~~ 承接体感互动软件、游戏定制开发 ~~</description>
	<lastBuildDate>Sat, 30 Mar 2024 16:41:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
		<item>
		<title>YuYuYouEr Kinect SDK Wrapper for Unity3D入门级教程</title>
		<link>http://www.yuyuyouer.cn/blog/?p=663</link>
		<comments>http://www.yuyuyouer.cn/blog/?p=663#comments</comments>
		<pubDate>Fri, 17 Mar 2017 10:45:04 +0000</pubDate>
		<dc:creator>rabbit5455</dc:creator>
				<category><![CDATA[kinect]]></category>

		<guid isPermaLink="false">http://www.yuyuyouer.cn/blog/?p=663</guid>
		<description><![CDATA[本次发布的为入门级教程：https://v.douyu.com/show/j4xq3WDK5GjMLGNz 内容如下： 1、下载地址 2、如何导入Unity3D 3、如何切换一代、二代硬件驱动 4、运行测试：彩色、深度、背景移除、单人骨骼 5、小游戏开发示例：如来神掌（备注：非常入门级的案例啊，高手不要好奇） &#160; &#160;]]></description>
			<content:encoded><![CDATA[<p><strong><strong>本次发布的为入门级教程</strong>：<a title="YuYuYouEr_Kinect_SDK_Wrapper_for_Unity3D_入门级教程" href="https://v.douyu.com/show/j4xq3WDK5GjMLGNz" target="_blank">https://v.douyu.com/show/j4xq3WDK5GjMLGNz</a></strong></p>
<p><strong>内容如下：</strong></p>
<p><strong>1、下载地址</strong></p>
<p><strong>2、如何导入Unity3D</strong></p>
<p><strong>3、如何切换一代、二代硬件驱动</strong></p>
<p><strong>4、运行测试：彩色、深度、背景移除、单人骨骼</strong></p>
<p><strong>5、小游戏开发示例：如来神掌（备注：非常入门级的案例啊，高手不要好奇）</strong></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yuyuyouer.cn/blog/?feed=rss2&#038;p=663</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YuYuYouEr Kinect SDK Wrapper v2.0.0.8版本发布</title>
		<link>http://www.yuyuyouer.cn/blog/?p=655</link>
		<comments>http://www.yuyuyouer.cn/blog/?p=655#comments</comments>
		<pubDate>Mon, 19 Sep 2016 19:55:19 +0000</pubDate>
		<dc:creator>rabbit5455</dc:creator>
				<category><![CDATA[kinect]]></category>
		<category><![CDATA[Unity3D]]></category>

		<guid isPermaLink="false">http://www.yuyuyouer.cn/blog/?p=655</guid>
		<description><![CDATA[YuYuYouEr Kinect SDK Wrapper 发布了新的v2.0.0.8版本，下载地址： http://www.yuyuyouer.cn/blog/?page_id=369 本次新增特性如下： 本版增加与彩色RGB图像对应的平面骨骼节点，方便大家做AR互动类开发； 角色模型和小点骨骼，支持面对面视角，像照镜子一样动作同步； 非面对面视角为第三人称背后视角，左右侧动作同步； 增加一代二代SDK切换脚本，详见Assets\YuYuYouEr_Kinect_SDK_Wrapper\Plugins\目录； &#160; 插件对Kinect V2硬件设备提供支持，封装了Kinect for windows SDK v2.0-1409版本； 并提供与Kinect V1设备完全兼容的DLL插件接口，大家可以根据自己需要切换硬件设备，无需修改应用代码； 使用本插件开发的应用直接替换DLL即可切换Kinect V1/V2硬件设备； &#160;]]></description>
			<content:encoded><![CDATA[<p>YuYuYouEr Kinect SDK Wrapper 发布了新的v2.0.0.8版本，下载地址：</p>
<blockquote><p><a href="http://www.yuyuyouer.cn/blog/?page_id=369" target="_blank">http://www.yuyuyouer.cn/blog/?page_id=369</a></p></blockquote>
<p>本次新增特性如下：</p>
<blockquote><p>本版增加与彩色RGB图像对应的平面骨骼节点，方便大家做AR互动类开发；</p>
<p>角色模型和小点骨骼，支持面对面视角，像照镜子一样动作同步；</p>
<p>非面对面视角为第三人称背后视角，左右侧动作同步；</p>
<p>增加一代二代SDK切换脚本，详见Assets\YuYuYouEr_Kinect_SDK_Wrapper\Plugins\目录；</p>
<p>&nbsp;</p></blockquote>
<p>插件对Kinect V2硬件设备提供支持，封装了Kinect for windows SDK v2.0-1409版本；</p>
<p>并提供与Kinect V1设备完全兼容的DLL插件接口，大家可以根据自己需要切换硬件设备，无需修改应用代码；</p>
<p>使用本插件开发的应用直接替换DLL即可切换Kinect V1/V2硬件设备；</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yuyuyouer.cn/blog/?feed=rss2&#038;p=655</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YuYuYouEr Kinect SDK Wrapper v2.0.0.0版本发布</title>
		<link>http://www.yuyuyouer.cn/blog/?p=614</link>
		<comments>http://www.yuyuyouer.cn/blog/?p=614#comments</comments>
		<pubDate>Wed, 29 Oct 2014 19:29:30 +0000</pubDate>
		<dc:creator>rabbit5455</dc:creator>
				<category><![CDATA[kinect]]></category>

		<guid isPermaLink="false">http://www.yuyuyouer.cn/blog/?p=614</guid>
		<description><![CDATA[YuYuYouEr Kinect SDK Wrapper 发布了新的v2.0.0.0版本，下载地址： http://www.yuyuyouer.cn/blog/?page_id=369 本次增加对Kinect V2硬件设备的支持，封装了Kinect for windows SDK v2.0-1409版本； 并提供与Kinect V1设备完全兼容的DLL插件接口，大家可以根据自己需要切换硬件设备，无需修改应用代码； 使用V1 Wrapper开发的应用直接替换DLL即可支持Kinect V2硬件设备； &#160;]]></description>
			<content:encoded><![CDATA[<p>YuYuYouEr Kinect SDK Wrapper 发布了新的v2.0.0.0版本，下载地址：</p>
<blockquote><p><a href="http://www.yuyuyouer.cn/blog/?page_id=369" target="_blank">http://www.yuyuyouer.cn/blog/?page_id=369</a></p></blockquote>
<p>本次增加对Kinect V2硬件设备的支持，封装了Kinect for windows SDK v2.0-1409版本；</p>
<p>并提供与Kinect V1设备完全兼容的DLL插件接口，大家可以根据自己需要切换硬件设备，无需修改应用代码；</p>
<p>使用V1 Wrapper开发的应用直接替换DLL即可支持Kinect V2硬件设备；</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yuyuyouer.cn/blog/?feed=rss2&#038;p=614</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>有限状态自动机类库 – qfFSM v1.2版本发布</title>
		<link>http://www.yuyuyouer.cn/blog/?p=601</link>
		<comments>http://www.yuyuyouer.cn/blog/?p=601#comments</comments>
		<pubDate>Wed, 22 Oct 2014 17:30:49 +0000</pubDate>
		<dc:creator>rabbit5455</dc:creator>
				<category><![CDATA[kinect]]></category>

		<guid isPermaLink="false">http://www.yuyuyouer.cn/blog/?p=601</guid>
		<description><![CDATA[有限状态自动机类库发布了新的v1.2版本，请在如下地址下载： http://www.yuyuyouer.cn/blog/?p=290 本次主要更新了qfFSMLogic在各个语言中的实现，允许绑定到一个状态中，绑定的同时会执行reset()方法，对状态机进行初始化配置。 &#160;]]></description>
			<content:encoded><![CDATA[<p>有限状态自动机类库发布了新的v1.2版本，请在如下地址下载：</p>
<p><a href="http://www.yuyuyouer.cn/blog/?p=290">http://www.yuyuyouer.cn/blog/?p=290</a></p>
<p>本次主要更新了qfFSMLogic在各个语言中的实现，允许绑定到一个状态中，绑定的同时会执行reset()方法，对状态机进行初始化配置。</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yuyuyouer.cn/blog/?feed=rss2&#038;p=601</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>北京爱徒步作品 &#8211; 商场LED大屏幕AR增强现实</title>
		<link>http://www.yuyuyouer.cn/blog/?p=560</link>
		<comments>http://www.yuyuyouer.cn/blog/?p=560#comments</comments>
		<pubDate>Sat, 27 Sep 2014 02:31:26 +0000</pubDate>
		<dc:creator>rabbit5455</dc:creator>
				<category><![CDATA[kinect]]></category>

		<guid isPermaLink="false">http://www.yuyuyouer.cn/blog/?p=560</guid>
		<description><![CDATA[商场大屏幕AR增强现实 可设置任意图案地标，可支持结合Kinect互动]]></description>
			<content:encoded><![CDATA[<blockquote><p><strong>商场大屏幕AR增强现实</strong><br />
可设置任意图案地标，可支持结合Kinect互动</p>
<p><iframe height=400 width=480 src="http://player.youku.com/embed/XNzkxNDc3NDQ4" frameborder=0 allowfullscreen></iframe>
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.yuyuyouer.cn/blog/?feed=rss2&#038;p=560</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kinect体感营销互动</title>
		<link>http://www.yuyuyouer.cn/blog/?p=452</link>
		<comments>http://www.yuyuyouer.cn/blog/?p=452#comments</comments>
		<pubDate>Fri, 13 Dec 2013 07:25:59 +0000</pubDate>
		<dc:creator>rabbit5455</dc:creator>
				<category><![CDATA[kinect]]></category>

		<guid isPermaLink="false">http://www.yuyuyouer.cn/blog/?p=452</guid>
		<description><![CDATA[Ski Shop Toy Store Kinect用于可口可乐交互 用户分享交互视频达到广告目的 Retail Clothing]]></description>
			<content:encoded><![CDATA[<blockquote><p>Ski Shop</p>
<p><iframe height=400 width=480 src="http://player.youku.com/embed/XNjIxODkyNjky" frameborder=0 allowfullscreen></iframe>
</p></blockquote>
<blockquote><p>
Toy Store</p>
<p><iframe height=400 width=480 src="http://player.youku.com/embed/XNjIxODkxMzY4" frameborder=0 allowfullscreen></iframe>
</p></blockquote>
<blockquote><p>
Kinect用于可口可乐交互<br />
用户分享交互视频达到广告目的</p>
<p><iframe height=400 width=480 src="http://player.youku.com/embed/XNjI1ODM2MTg0" frameborder=0 allowfullscreen></iframe>
</p></blockquote>
<blockquote><p>
Retail Clothing</p>
<p><iframe height=400 width=480 src="http://player.youku.com/embed/XNjIxODkwOTky" frameborder=0 allowfullscreen></iframe>
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.yuyuyouer.cn/blog/?feed=rss2&#038;p=452</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YuYuYouErMessageServer &#8211; 消息队列服务器</title>
		<link>http://www.yuyuyouer.cn/blog/?p=422</link>
		<comments>http://www.yuyuyouer.cn/blog/?p=422#comments</comments>
		<pubDate>Wed, 23 Oct 2013 14:34:14 +0000</pubDate>
		<dc:creator>rabbit5455</dc:creator>
				<category><![CDATA[MessageServer]]></category>
		<category><![CDATA[message queue]]></category>
		<category><![CDATA[message server]]></category>
		<category><![CDATA[socket]]></category>
		<category><![CDATA[zeromq]]></category>
		<category><![CDATA[zmq]]></category>
		<category><![CDATA[消息服务器]]></category>
		<category><![CDATA[消息队列]]></category>
		<category><![CDATA[进程间通信]]></category>

		<guid isPermaLink="false">http://www.yuyuyouer.cn/blog/?p=422</guid>
		<description><![CDATA[项目中经常用到各种需要阻塞操作的组件，如联网上传、下载，硬件设备通讯，原来多是使用线程来解决，传递一些简单的进度信息。 最近做的项目用到了多台主机采集数据，同样也有一些上传功能，还有串口读卡器，此时很需要一套完善的组件通讯机制，用来分发任务，收集进度反馈。 前端使用消息服务器解决组件通讯问题，后端使用状态机（参考qfFSM有限自动机）来解决逻辑问题，理论上讲一套消息驱动的组件便OK啦。 这份消息队列服务器由两部分组成： 服务器：独立exe，命令行方式，接受参数，可指定一个tcp端口以及IP，默认为“tcp://*:117058”； 客户端：Win32接口DLL，提供连接服务器，发送、收取消息，注册、删除服务器消息队列； 服务器exe说明： 服务器启动后界面如下，最下方会显示busy或者idle，后面last 1s为最近一秒内处理的请求数目，sum为服务器启动后处理的请求总数。 下图中可以看到，服务处于busy状态，通讯端点为本机tcp端口117058，最近一秒处理了129192个请求。 客户端Win32 DLL异步接口说明： 以下接口分为3类，连接/关闭服务器、异步请求接口（asyn_request_开头）、异步响应接口（asyn_response_开头）。 所有响应消息有四个字段：id、message、status、data； message为请求名称；status为“ok”表示成功，其他值为错误信息； 特别说明asyn_request_类接口，返回值为bool型，表示此请求是否被加入本地发送队列，并不是成功发出的标志，后面会提到本地发送队列也是有限额的（10000条），所以队列满时，会淘汰最早的请求消息。 务必将应用设计成以响应消息为准。 1、连接服务器 bool WINAPI asyn_connect_server(char * str_endpoint); str_endpoint为服务器连接点，默认为“tcp://127.0.0.1:117058” 服务器端未运行时，客户端依然可以连接成功，底层会不但去尝试到服务器的连接；在此期间发送的消息会缓存在客户端进程空间中，为避免大量积压，最多缓冲10000条，超过则按照FIFO方式淘汰最早的消息。 此函数会开启一个线程负责与服务器通讯，并在本地维护一个请求队列和一个响应队列，大小均为10000条，对于普通互动应用而言足够了。 2、断开服务器连接 bool asyn_disconnect_server();  3、关闭服务器  bool asyn_request_shutdown_server(); 向服务器端发送关闭指令，用于退出服务器端进程； 4、注册消息队列 bool asyn_request_register_message_queue(char * str_queue_name); 发送注册消息队列请求，参数为消息队列名称； 消息队列服务器发送、接收消息均需要指定消息队列名称，消息排序方式为FIFO； 消息队列已存在时，响应为注册成功； 5、删除消息队列 bool asyn_request_remove_message_queue(char * str_queue_name); 发送删除消息队列请求，参数为消息队列名称； 消息队列删除后，向此队列投递消息的客户端会得到“unknown queue name”错误； 6、发送消息到指定队列 bool asyn_request_send_message(char * str_queue_name, [...]]]></description>
			<content:encoded><![CDATA[<p>项目中经常用到各种需要阻塞操作的组件，如联网上传、下载，硬件设备通讯，原来多是使用线程来解决，传递一些简单的进度信息。</p>
<p>最近做的项目用到了多台主机采集数据，同样也有一些上传功能，还有串口读卡器，此时很需要一套完善的组件通讯机制，用来分发任务，收集进度反馈。</p>
<p>前端使用消息服务器解决组件通讯问题，后端使用状态机（参考<a href="http://www.yuyuyouer.cn/blog/?p=290">qfFSM有限自动机</a>）来解决逻辑问题，理论上讲一套消息驱动的组件便OK啦。</p>
<p>这份消息队列服务器由两部分组成：</p>
<blockquote>
<ol>
<li>服务器：独立exe，命令行方式，接受参数，可指定一个tcp端口以及IP，默认为“tcp://*:117058”；</li>
<li>客户端：Win32接口DLL，提供连接服务器，发送、收取消息，注册、删除服务器消息队列；</li>
</ol>
</blockquote>
<p>服务器exe说明：</p>
<p>服务器启动后界面如下，最下方会显示busy或者idle，后面last 1s为最近一秒内处理的请求数目，sum为服务器启动后处理的请求总数。</p>
<p>下图中可以看到，服务处于busy状态，通讯端点为本机tcp端口117058，最近一秒处理了129192个请求。</p>
<p><a href="http://www.yuyuyouer.cn/blog/wp-content/uploads/2013/10/YuYuYouErMessageServer.jpg"><img class="alignnone size-full wp-image-431" title="YuYuYouErMessageServer" src="http://www.yuyuyouer.cn/blog/wp-content/uploads/2013/10/YuYuYouErMessageServer.jpg" alt="" width="517" height="347" /></a></p>
<p>客户端Win32 DLL异步接口说明：</p>
<p>以下接口分为3类，连接/关闭服务器、异步请求接口（asyn_request_开头）、异步响应接口（asyn_response_开头）。</p>
<p>所有响应消息有四个字段：id、message、status、data；</p>
<p>message为请求名称；status为“ok”表示成功，其他值为错误信息；</p>
<p>特别说明asyn_request_类接口，返回值为bool型，表示此请求是否被加入本地发送队列，并不是成功发出的标志，后面会提到本地发送队列也是有限额的（10000条），所以队列满时，会淘汰最早的请求消息。</p>
<p>务必将应用设计成以响应消息为准。</p>
<p style="padding-left: 30px;">1、连接服务器</p>
<blockquote><p>bool WINAPI asyn_connect_server(char * str_endpoint);</p>
<p>str_endpoint为服务器连接点，默认为“tcp://127.0.0.1:117058”</p>
<p>服务器端未运行时，客户端依然可以连接成功，底层会不但去尝试到服务器的连接；在此期间发送的消息会缓存在客户端进程空间中，为避免大量积压，最多缓冲10000条，超过则按照FIFO方式淘汰最早的消息。</p>
<p>此函数会开启一个线程负责与服务器通讯，并在本地维护一个请求队列和一个响应队列，大小均为10000条，对于普通互动应用而言足够了。</p></blockquote>
<p style="padding-left: 30px;">2、断开服务器连接</p>
<blockquote><p>bool asyn_disconnect_server();</p></blockquote>
<p style="padding-left: 30px;"> 3、关闭服务器</p>
<blockquote><p> bool asyn_request_shutdown_server();</p>
<p>向服务器端发送关闭指令，用于退出服务器端进程；</p></blockquote>
<p style="padding-left: 30px;">4、注册消息队列</p>
<blockquote><p>bool asyn_request_register_message_queue(char * str_queue_name);</p>
<p>发送注册消息队列请求，参数为消息队列名称；</p>
<p>消息队列服务器发送、接收消息均需要指定消息队列名称，消息排序方式为FIFO；</p>
<p>消息队列已存在时，响应为注册成功；</p></blockquote>
<p style="padding-left: 30px;">5、删除消息队列</p>
<blockquote><p>bool asyn_request_remove_message_queue(char * str_queue_name);</p>
<p>发送删除消息队列请求，参数为消息队列名称；</p>
<p>消息队列删除后，向此队列投递消息的客户端会得到“unknown queue name”错误；</p></blockquote>
<p style="padding-left: 30px;">6、发送消息到指定队列</p>
<blockquote><p>bool asyn_request_send_message(char * str_queue_name, char *message_buf, int message_length);</p>
<p>发送一条消息投递请求，参数为接收队列名称和消息数据；</p>
<p>str_queue_name为目标消息队列名称；</p>
<p>message_buf为消息缓冲区地址，message_length为消息数据长度；客户端会将这些数据作为二进制通过socket发送给服务器端，并加入到目标消息队列；</p></blockquote>
<p style="padding-left: 30px;">7、发送广播消息到所有队列</p>
<blockquote><p>bool asyn_request_broadcast_message(char *message_buf, int message_length);</p>
<p>发送一条广播请求，参数为广播消息数据；</p>
<p>message_buf为消息缓冲区地址，message_length为消息数据长度；客户端会将这些数据作为二进制通过socket发送给服务器端，在每个消息队列中添加一份；</p></blockquote>
<p style="padding-left: 30px;">8、从指定队列接收消息</p>
<blockquote><p>bool asyn_request_recv_message(char * str_queue_name);</p>
<p>发送一条接收消息请求，参数为队列名称；</p>
<p>应用可以根据需要注册一个或多个消息队列，与其他组件约定好通讯用的消息队列名称，便可以通过此接口获取其他组件发送来的消息通知；</p></blockquote>
<p style="padding-left: 30px;">9、清空指定消息队列</p>
<blockquote><p>bool asyn_request_clear_message_queue(char * str_queue_name);</p>
<p>发送清空指定消息队列请求，参数为消息队列名称；</p>
<p>消息队列服务器在运行过程中，并不会主动删除、清空一个消息队列，即使客户端进程退出，服务器仍然会保留这些消息队列，待客户端重新连接后，仍可使用。</p></blockquote>
<p style="padding-left: 30px;">10、获取响应消息</p>
<blockquote><p>bool asyn_response_query();</p>
<p>接收一条响应数据，返回值为bool型，如果成功响应数据接收成功，则返回true；</p>
<p>此接口会将响应数据保存在本地，作为当前响应消息，有效时间直达下次调用此接口获取新的响应消息，应用可通过其他asyn_response_开头的接口查询消息内各个字段的内容；</p></blockquote>
<p style="padding-left: 30px;">11、获取响应消息id</p>
<blockquote><p>int asyn_response_get_message_id();</p>
<p>获取当前响应消息的id序号，此id号，由客户端发送时生成，采用递增方式；</p></blockquote>
<p style="padding-left: 30px;">12、获取响应消息名称</p>
<blockquote><p>int asyn_response_get_message_length();</p>
<p>int asyn_response_get_message(char* buf, int length);</p>
<p>此接口由两个接口函数完成，应用首先获取消息名称的长度，然后准备足够的内存缓冲区，然调用获取数据的接口，参数为用户提供的buffer首地址以及buffer长度，接口会将消息名称复制到里面，返回值表明了实际复制的字节数。</p></blockquote>
<p style="padding-left: 30px;">13、获取响应消息状态</p>
<blockquote><p> int asyn_response_get_status_length();</p>
<p>int asyn_response_get_status(char* buf, int length);</p>
<p>与获取消息名称类似，此接口也由两个接口函数完成，参数和返回值含义均类似。</p></blockquote>
<p style="padding-left: 30px;">14、获取响应消息数据</p>
<blockquote><p>int asyn_response_get_data_length();</p>
<p>int asyn_response_get_data(char* buf, int length);</p>
<p>与获取消息名称类似，此接口也由两个接口函数完成，参数和返回值含义均类似。</p></blockquote>
<p>目前请求名称如下，分别对应上述ayn_request消息：</p>
<blockquote><p> getVersion：此请求只是例行公事，返回服务器版本信息，目前收到后可以简单忽略；</p>
<p> shutdownServer：关闭服务器请求</p>
<p> registerMessageQueue：注册消息队列请求<br />
removeMessageQueue：删除消息队列请求</p>
<p> sendMessage：发送消息请求<br />
 broadcastMessage：广播消息请求<br />
 recvMessage：接收消息请求</p>
<p> clearMessageQueue：清空消息队列请求</p></blockquote>
<p>此客户端DLL在C++、Unity3D（C#）脚本中测试OK，效果还是挺不错的。</p>
<p>大家有问题，加QQ技术群（322609996）询问即可。</p>
<p>群共享会发布最新版本，文中提到的qfFSM有限自动机，是本人为自己开发的另一个小类库，感兴趣的老大可以下载他的源码，目前支持几种主流编程语言。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yuyuyouer.cn/blog/?feed=rss2&#038;p=422</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YuYuYouEr Kinect SDK For C++ v0.3版发布</title>
		<link>http://www.yuyuyouer.cn/blog/?p=410</link>
		<comments>http://www.yuyuyouer.cn/blog/?p=410#comments</comments>
		<pubDate>Thu, 05 Sep 2013 15:48:42 +0000</pubDate>
		<dc:creator>rabbit5455</dc:creator>
				<category><![CDATA[kinect]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[kinectsdk]]></category>
		<category><![CDATA[skeleton]]></category>
		<category><![CDATA[YuYuYouEr]]></category>
		<category><![CDATA[体感]]></category>

		<guid isPermaLink="false">http://www.yuyuyouer.cn/blog/?p=410</guid>
		<description><![CDATA[&#160; C++ Win32 DLL最新为v0.3版本增加以下特性： 支持双人骨骼 双人握拳手势 支持坐标系转换：骨骼数据 &#60;-&#62; 深度图像 -&#62; 彩色图像 下载地址：http://www.yuyuyouer.cn/blog/?page_id=369 Unity3D版本也会尽快发布0.3版本，支持双人特性； &#160;]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p><strong>C++ Win32 DLL最新为v0.3版本增加以下特性：</strong></p>
<blockquote><p><strong>支持双人骨骼</strong></p>
<p><strong>双人握拳手势</strong></p>
<p><strong>支持坐标系转换：骨骼数据 &lt;-&gt; 深度图像 -&gt; 彩色图像</strong></p>
<p><strong>下载地址：<a href="http://www.yuyuyouer.cn/blog/?page_id=369">http://www.yuyuyouer.cn/blog/?page_id=369</a><br />
</strong></p></blockquote>
<p><strong>Unity3D版本也会尽快发布0.3版本，支持双人特性；</strong></p>
<p><strong><br />
</strong></p>
<p><a href="http://www.yuyuyouer.cn/blog/wp-content/uploads/2013/09/kinect_sdk_wrapper_multi.jpg"><img class="alignnone size-full wp-image-411" title="kinect_sdk_wrapper_multi" src="http://www.yuyuyouer.cn/blog/wp-content/uploads/2013/09/kinect_sdk_wrapper_multi.jpg" alt="" width="479" height="285" /></a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yuyuyouer.cn/blog/?feed=rss2&#038;p=410</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YuYuYouEr Kinect SDK Wrapper v0.2版发布 for Unity3D</title>
		<link>http://www.yuyuyouer.cn/blog/?p=385</link>
		<comments>http://www.yuyuyouer.cn/blog/?p=385#comments</comments>
		<pubDate>Tue, 30 Jul 2013 20:26:47 +0000</pubDate>
		<dc:creator>rabbit5455</dc:creator>
				<category><![CDATA[kinect]]></category>
		<category><![CDATA[Unity3D]]></category>
		<category><![CDATA[kinectsdk]]></category>
		<category><![CDATA[skeleton]]></category>
		<category><![CDATA[unity]]></category>
		<category><![CDATA[unity3d]]></category>
		<category><![CDATA[YuYuYouEr]]></category>
		<category><![CDATA[体感]]></category>

		<guid isPermaLink="false">http://www.yuyuyouer.cn/blog/?p=385</guid>
		<description><![CDATA[关于YuYuYouEr Kinect SDK Wrapper最新信息，请点击： http://www.yuyuyouer.cn/blog/?page_id=369 新的v0.2版本增加Unity3D插件支持，这份Wrapper代码会长期维护，并不断增加新特性，将来也会提供对其他体感硬件、体感平台的支持。 目前已经开始着手Android平台体感插件设计，我们会尽最大努力保证应用层接口的一致性，方便大家应用层代码移植。 此外qfFSM状态机类库支持多种语言，对于体感通用的UI交互组件算法，我们也会以状态机设计图或源码的方式发布，请大家关注本站更新。 功能说明： 提供Unity3D插件（移植自CMU Kinect Wrapper，修复bug，增加特性） 对Kinect for windows SDK v1.7进行封装 支持深度图、彩色视频、单人骨骼数据 支持Kinect Interaction握拳手势 支持语音识别 提供OpenCV图像处理函数：改变图像大小，水平、垂直翻转图像 Wrapper以Win32 DLL方式提供，可以被任何支持DLL调用的语言使用。 目前已经测试过C++、C#、Unity3D、Flash Air（ANE方式）、Java。 Unity3D插件移植自CMU Kinect Wrapper Package，替换原始版本底层实现，增加语音、握拳手势检测特性。 &#160;]]></description>
			<content:encoded><![CDATA[<p>关于YuYuYouEr Kinect SDK Wrapper最新信息，请点击：</p>
<blockquote><p><a href="http://www.yuyuyouer.cn/blog/?page_id=369">http://www.yuyuyouer.cn/blog/?page_id=369</a></p></blockquote>
<p><strong>新的v0.2版本增加Unity3D插件支持，这份Wrapper代码会长期维护，并不断增加新特性，将来也会提供对其他体感硬件、体感平台的支持。</strong></p>
<p><strong>目前已经开始着手Android平台体感插件设计，我们会尽最大努力保证应用层接口的一致性，方便大家应用层代码移植。</strong></p>
<p>此外qfFSM状态机类库支持多种语言，对于体感通用的UI交互组件算法，我们也会以状态机设计图或源码的方式发布，请大家关注本站更新。</p>
<p><strong>功能说明：</strong></p>
<blockquote><p>提供Unity3D插件（移植自CMU Kinect Wrapper，修复bug，增加特性）</p>
<p>对Kinect for windows SDK v1.7进行封装</p>
<p>支持深度图、彩色视频、单人骨骼数据</p>
<p>支持Kinect Interaction握拳手势</p>
<p>支持语音识别</p>
<p>提供OpenCV图像处理函数：改变图像大小，水平、垂直翻转图像</p></blockquote>
<p>Wrapper以Win32 DLL方式提供，可以被任何支持DLL调用的语言使用。</p>
<p>目前已经测试过C++、C#、Unity3D、Flash Air（ANE方式）、Java。</p>
<p>Unity3D插件移植自CMU Kinect Wrapper Package，替换原始版本底层实现，增加语音、握拳手势检测特性。</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yuyuyouer.cn/blog/?feed=rss2&#038;p=385</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kinect超时按钮实现 &#8211; 基于qfFSM有限状态自动机类库</title>
		<link>http://www.yuyuyouer.cn/blog/?p=347</link>
		<comments>http://www.yuyuyouer.cn/blog/?p=347#comments</comments>
		<pubDate>Tue, 23 Jul 2013 17:06:20 +0000</pubDate>
		<dc:creator>rabbit5455</dc:creator>
				<category><![CDATA[kinect]]></category>
		<category><![CDATA[qfFSM有限自动机]]></category>
		<category><![CDATA[体感浏览器]]></category>
		<category><![CDATA[Button]]></category>
		<category><![CDATA[fsm]]></category>
		<category><![CDATA[Web体感应用]]></category>
		<category><![CDATA[YuYuYouEr]]></category>
		<category><![CDATA[有限状态自动机]]></category>
		<category><![CDATA[有限自动机]]></category>
		<category><![CDATA[状态机]]></category>

		<guid isPermaLink="false">http://www.yuyuyouer.cn/blog/?p=347</guid>
		<description><![CDATA[qfFSM有限状态自动机类库目前拥有C++、C#、Java、JavaScript版本，对于同一份UML状态图，不同语言均可用qfFSM来实现。 本文使用JavaScript版本在浏览器中实现一个超时按钮，为方便测试，我使用鼠标指针来模拟Kinect关节，接入Kinect数据后，只需将手部关节坐标替换进来即可。 首先看超时按钮的UML状态图： 主状态机中有STATE_Normal、STATE_PointIn、STATE_PointOut三个状态，其中后面两个作为子状态机存在，他们内部分别含有3个状态：激活/非激活开始状态、正在激活/非激活状态、已激活/非激活状态。 设计 正在激活/非激活状态 是为了配合相应动画机制，如经典的按钮注水、按钮转满一周等计时方式。 事件方面支持UserLeave、PointIn、PointOut，以及MultiActive（多次连续激活）。 MultiActive机制可以很方便的实现 保持按住按钮，系统会周期触发某个事件。 源码中分为以下几个部分： 1、首先定义了各种常量：状态名称、事件名称、属性名称： var timeoutButton_const_def = { &#8230; }; 2、定义数据模型Model实现类： var TimeoutButton_Model = { &#8230; }; 在Model中定义各种属性，如激活时间、指针是否在对象可视范围内、计时器开始和结束。 3、定义各个子状态机、状态的实现类，他们分别继承自qfStateMachine/qfState基类，并实现doAction()事件： var State_Normal = { &#8230; }; var STATE_PointIn = { &#8230; }; var STATE_PointOut = { &#8230; }; var STATE_Active_start = { &#8230; }; var STATE_Activing = { [...]]]></description>
			<content:encoded><![CDATA[<p>qfFSM有限状态自动机类库目前拥有C++、C#、Java、JavaScript版本，对于同一份UML状态图，不同语言均可用qfFSM来实现。</p>
<p>本文使用JavaScript版本在浏览器中实现一个超时按钮，为方便测试，我使用鼠标指针来模拟Kinect关节，接入Kinect数据后，只需将手部关节坐标替换进来即可。</p>
<p>首先看超时按钮的UML状态图：</p>
<p><a href="http://www.yuyuyouer.cn/blog/wp-content/uploads/2013/07/kinect_NUI_Button_timeout_detect.jpg"><img class="alignnone size-full wp-image-348" title="kinect_NUI_Button_timeout_detect" src="http://www.yuyuyouer.cn/blog/wp-content/uploads/2013/07/kinect_NUI_Button_timeout_detect.jpg" alt="" width="491" height="293" /></a></p>
<p>主状态机中有STATE_Normal、STATE_PointIn、STATE_PointOut三个状态，其中后面两个作为子状态机存在，他们内部分别含有3个状态：激活/非激活开始状态、正在激活/非激活状态、已激活/非激活状态。</p>
<p>设计 正在激活/非激活状态 是为了配合相应动画机制，如经典的按钮注水、按钮转满一周等计时方式。</p>
<p>事件方面支持UserLeave、PointIn、PointOut，以及MultiActive（多次连续激活）。</p>
<p>MultiActive机制可以很方便的实现 保持按住按钮，系统会周期触发某个事件。</p>
<p>源码中分为以下几个部分：</p>
<p><span id="more-347"></span></p>
<p>1、首先定义了各种常量：状态名称、事件名称、属性名称：</p>
<blockquote><p>var timeoutButton_const_def = { &#8230; };</p></blockquote>
<p>2、定义数据模型Model实现类：</p>
<blockquote><p>var TimeoutButton_Model = { &#8230; };</p>
<p>在Model中定义各种属性，如激活时间、指针是否在对象可视范围内、计时器开始和结束。</p></blockquote>
<p>3、定义各个子状态机、状态的实现类，他们分别继承自qfStateMachine/qfState基类，并实现doAction()事件：</p>
<blockquote><p>var State_Normal =  { &#8230; };</p>
<p>var STATE_PointIn = { &#8230; };</p>
<p>var STATE_PointOut = { &#8230; };</p>
<p>var STATE_Active_start = { &#8230; };</p>
<p>var STATE_Activing = { &#8230; };</p>
<p>var STATE_Actived = { &#8230; };</p>
<p>var STATE_DeActive_start = {&#8230; };</p>
<p>var STATE_DeActiving = { &#8230; };</p>
<p>var STATE_DeActived = { &#8230; };</p></blockquote>
<p>4、定义了主逻辑状态机，继承自qfFsmLogic基类：</p>
<blockquote><p>var timeoutButton_Logic = { &#8230; };</p>
<p>其中核心方法为状态机初始化函数（initTimeoutButtonMachine()成员函数），包含三个方面：</p>
<p>1）设置状态机环境变量，此处只设置数据模型Model，以便各个状态获取数据属性。</p>
<p>2）实例化各个子状态机、状态，并绑定到各自父状态机中。</p>
<p>3）配置状态转移规则，这里完成对UML状态图的描述翻译。</p></blockquote>
<p>5、实例化主逻辑状态机，并调用他的start()方法：</p>
<blockquote><p>var timeoutButton = timeoutButton_Logic.createNewInstance();</p>
<p>timeoutButton.start();</p></blockquote>
<p>6、绑定mouseover、mouseout事件，完成OnTimer()函数，将来的Kinect数据获取也是一个周期性事件，直接放在此处即可。</p>
<p>7、最后是界面的Html代码，其中包含一个多次激活标志checkbox、还有一个支持超时激活的按钮（DIV实现），如下图：</p>
<blockquote><p>其中Current State为状态机当前状态，可以实时看到状态转移过程。</p>
<p><a href="http://www.yuyuyouer.cn/blog/wp-content/uploads/2013/07/kinect_timeoutButton_UI.jpg"><img class="alignnone size-full wp-image-356" title="kinect_timeoutButton_UI" src="http://www.yuyuyouer.cn/blog/wp-content/uploads/2013/07/kinect_timeoutButton_UI.jpg" alt="" width="394" height="356" /></a></p></blockquote>
<p>实现DEMO展示Url：<a href="http://www.YuYuYouEr.cn/code/qfFSM_for_javascript_kinect_timeoutButton/timeoutButton_State_Machine_Test.html" target="_blank">qfFSM_for_javascript_kinect_timeoutButton</a></p>
<p>源代码右键查看即可。</p>
<p>qfFSM各版本源码下载：<a href="http://www.yuyuyouer.cn/blog/?p=290" target="_blank">http://www.YuYuYouEr.cn/blog/?p=290</a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yuyuyouer.cn/blog/?feed=rss2&#038;p=347</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
