当前位置:   article > 正文

unity加kinect2.0拍照和利用RPC图片传输制作照片墙问题_unity kinect 拍照

unity kinect 拍照

拍照问题上周六解决了,就是获取kinect的彩色图片,然后转换成texture2D即可

然后是图片传输问题,因为要求每个电脑装个kinect2.0,而且每个电脑开一个客户端,

然后一个服务端是照片墙功能,所以要求照片墙的那个做服务器,来处理接受的图片


这里遇到的主要问题就是如何传图片

一开始想到了socket,但是想到整这个就感觉会很复杂,

所以想用unity里自带的来解决些问题


当然之后就顺利成章的遇到了RPC

RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。

RPC其实也是一种C/S的编程模式,有点类似C/SSocket编程模式,但要比它更高一层。当我们在建立RPC服务以后,客户端的调用参数通过底层的RPC传输通道,可以是UDP,也可以是TCP(也即TI-RPC—无关性传输),并根据传输前所提供的目的地址及RPC上层应用程序号转至相应的RPC Application Porgramme Server


RPC定义
[RPC]
void RequestMessage2(string message, NetworkMessageInfo info)
{
//message网络请求发送的内容,这个可以自己处理
//NetworkMessageInfo保持了谁发送这个RPC的细节 这个之前的参数个数以及参数类型必须与执行RPC时的参数一致 可以是string byte[] 等等 NetworkMessageInfo可以不写这个参数
    Message += "\n" + "发送者" + info.sender + ":" + message;
}
调用RPC
GetComponent<NetworkView>().RPC("RequestMessage2", RPCMode.All, inputMessage);
参数一RequestMessage2是接受消息的方法,该方法上必须要有RPC标识
参数二RPCMode发送模式 有
Server向服务器发送
Others发送除了自己之外的每个客户端(包括服务端)
OtherBuffered
ALL
ALLBuffered
参数三inputMessage  必须与RPC定义函数的第一个参数类型一致



然后写的时候在服务端和客户端 都要定义相同的RPC函数

然后就可以进行发送了

首先需要将texture2d转换成byte[]形式,用了个偷懒的方法,因为直接读图片就是byte[]形式 所以就用这个测试了

byte[] imageData = File.ReadAllBytes("x:/x.png");

然后发送byte[]数据

服务端接收后直接encode到png赋在物体材质贴图就可以了

需要注意的是本地发送图片和encode都很快

但是局域网就很慢了,需要延迟encode和赋予物体,不然贴图就是问号了


提供些解决方案的链接,我就是从中得到启发的

http://answers.unity3d.com/questions/758155/send-texture-over-network.html

http://answers.unity3d.com/questions/190340/how-can-i-send-a-render-texture-over-the-network.html

http://answers.unity3d.com/questions/54424/sending-bulk-data-via-rpc.html

http://answers.unity3d.com/questions/159109/sending-array-over-the-network-and-onserializenetw.html

http://answers.unity3d.com/questions/829757/how-do-i-send-an-array-over-the-network.html

http://answers.unity3d.com/questions/142751/streaming-textures-possible.html

http://forum.unity3d.com/threads/unity5-beta-webgl-unity-websockets-plug-in.277567/



另外RPC方法其实过时了,在unity5.1的时候有新的系统了,高于换个版本的注意可以试试了

好像提供的方法很多,还能从底层操作

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/114138
推荐阅读
相关标签
  

闽ICP备14008679号