在杭州森动工作一年快4个月了吧(也算公司成立没多久的前几个员工了,不过直到结束总共员工也没多少)。主要工作就是为Virtools写写插件,如今森动要么注销公司,要么被盘下重新做(注销公司很麻烦),本人现已是待业青年。现在闲着就把写的插件列个清单,一来留个纪念;二来带着问题来的,希望得到答案;三是有项目需求需要定制插件可以联系本人。
- KinectImpl:公司是做体感应用的,准备研发一款虚拟试衣间。先是用Kinect SDK写的一个插件,后发现骨骼点没有旋转,于是改用OpenNI来写,Virtools下把提供的骨骼数据进行了下转换也是用起来了,也算国内最早的3D版本虚拟试衣间了(没有考证)。
- SAEImpl:新浪微博插件,需求是用于虚拟试衣间拍照以后分享到公司的新浪微博上。
- FlashPlayer:在Virtools下播放Flash SWF文件,能够与Flash进行相向交互,能够管理多个Flash,用于UI等都没有问题,键盘鼠标消息都可以在Virtools下发送,看你能不能在Virtools下好好利用起来。Virtools下写过一个平台,把一些Flash小游戏都放进去,Flash游戏不用做修改就能跟体感结合起来,基本就是模拟鼠标。
- ISecImpl:公司跟绿动合作,准备把虚拟试衣间等放到里面,绿动提供一套SDK,这套SDK也只是封装OpenNI而已,估计后面在把Kinect加进去也是可以。这里面工作还有把FlashPlayer拿出来写了两个应用程序,一个绿动的,一个OpenNI的,改动不大,当Flash的宿主,把骨骼数据给Flash,Flash来做原生的体感应用了,比前面模拟鼠标是有趣的多了,不过为此公司配了一个写Flash程序的,也巧了,也是蜗牛出来的。
- PhysXImpl:公司并没有满足与3D版本的虚拟试衣间,想把布料加进去,本人也是比较了好几个物理引擎,最后选择了PhysX。也感谢一下以前南天门的一个同事,无私的奉献他对PhysX的研究成果,是我走的很顺利,最后把各种接口都一股脑放到BB中,Virtools下也做了各种测试,给衣服绑点,绑胶囊啊,布料是有效果,也能跟着骨骼转转,不过没有好工具,弄一件很是麻烦,最后也没有反映到产品中。不过后面我用Unity中跟一个美工同事到也出了一版布料版本的虚拟试衣间,布料用各种胶囊绑定,在Unity可视化下跟Virtools 比 下算好绑定了,不过针对某些地方处理处理到也可以接受了。就是本来我想Skinned Cloth应该可以胜任,也不用普通那种用胶囊来麻烦的绑定的,一直看不到明显布料效果。请知晓Skinned Cloth应用的朋友赐教。
- DetectionFace:用OpenCV实现的人脸检测,后面加入打开摄像头,CKTexture选取指定区域等一些无关人脸检测的东西。
- RFIDImpl:虚拟试衣间想加入一个身份识别的应用,把rfid应用起来,先是用14443A读写器的一个,后面有用什么M1读写器,前面的那个需要自己动态导出DLL接口,略显麻烦,M1读写器的开发包就好用的多,硬件提供商应该好好提供开发包才是啊。不过两个都写完了,只是为什么多写了一份,最后却没有用起来。
- DueDateBB:精锐加密狗的插件,检测是否有加密狗,是否到了截至时间。为此还提供批量设置读取加密狗截至时间的程序。很苦逼的一个加密狗,相比其他有好配套工具的加密狗实在是麻烦,只有丑陋的C语言开发库,提供几十个范例,上百页PDF学习资料,好处是价格稍微便宜些,可以更灵活控制吧。坏处写起来很苦逼,最后还是不会在keil下单步调试,靠些返回值弄完,没时间整啊,还要考虑大小端问题。关键苦逼做完这些,后面都不再需要它了,加密狗也只是前期用了用,后面都去掉了。
- ZeroMQ:花了半天写了个ZeroMQBind的BB,这个DLL里面提供了客户端,服务端,在VT来写服务器,有木有啊,算了要写就写了吧。最后在一个CMO就可以客户端、服务端进行通讯了。后面又要求分成客户端、服务端两个DLL,还要把Array数据发送出去,接收后同样写到Array中去。再忍,完成需求,幸好有ZeroMQ,助我快速完成这BT需求,不用考虑协议,分包,粘包,重连等,只是用VT来写服务器,有木有。
- AIMSocket:Intel AIM的应用插件,Intel AIM是用来识别性别、年龄段的,价格不菲啊,一台机子绑定一个License,每个License按月收费。做应用只能通过其AIMSocketAPI与机子上AIM服务器进行,用boost.asio来实现了这个客户端,一直询问是否检测到了人没有,检测到了服务器把性别、年龄段等信息发过来进行解析写到Array中。
- ZBarBB:用ZBar第三方库来识别二维码、一维码,写以前比较过QrCode、Zing,QrCode很多年的代码了,Zing主要是Java应用,Windows下c++的估计也不太好编译通过。ZBar可以下到一套编译好的,直接用起来很方便,检测效果还可以。
- DesktopBB:需求只要截取桌面,本人通过各种方法查找桌面句柄,然后截图,发现都是全屏截图。笨的方法本人能够找到桌面ListView句柄,和桌面背景图,可以自己绘制一下,另一个同事给了些电子白板做法,说是可以透过自己截图,通过代码片段没看太懂,一个一个窗口句柄的遍历,没有完整的就没有去尝试,后面这个截图插件也不需要了,后面VT下最小化通过本人写的键盘,鼠标模拟完成需求,这个就不用了。确实需要的话用笨的方式去实现了。
- SapiBB:语音识别插件,用的是微软Sapi,文字和声音之间相互转换。
- MouseEvent:模拟Windows系统鼠标消息。
- KeyboardEvent:模拟Windows系统键盘消息。
- AudioInput:实时获取麦克风声音输入大小,用的是微软的waveIn。
- ProcessManager:拉起进程及关闭拉起进程的插件。
- Shutdown:原来需求是按窗口标题查找进程然后强行杀掉,后面换成按进程名来查找,加上查找进程是否存在、关机、重启、窗口最小化、窗口全部最小化(显示桌面)、恢复窗口等比较独立的功能,都是按进程名进行查找相应窗口句柄然后进行操作。
- SerialPort:串口通讯插件,用boost.asio实现串口读写,大致完成串口助手的功能了。
- Player:在VT SDK示例Standalone Player上进行修改,把参数放到配置文件中去,另加上窗口透明,是否需要标题,窗口置顶等额外需求。
- PrintBitmap:打印机打印图片的插件,完成了当时的打印需求,没有定制选项。