在最近做的项目中,希望配合使用Kinect2.0SDK,在Unity3d中获取捕捉到的人物的深度信息。
这里我想强调一个U3D中的坑,我让这个坑浪费的将近一天的时间。
在Kinect中,获取深度信息的流程,首先是
1.Sensor = KinectSensor.GetDefault();//获取一个默认的传感器
2.Reader = _Sensor.DepthFrameSource.OpenReader();//这里可以分为2步,可以先获取DepthFrameSoure(深度资源),然后利用深度资源,打开一个Reader的读取器
3.接下来的一步,就是从读取器中获取,我们想要的资源DepthFraam frame = Reader.AcquireLatestFrame();
坑就在这里,我们申请使用了frame,并将该函数放在了Update让他保证不断的更新,但是这里一定要记住,使用完以后,要在Update函数中每次都释放该资源 frame.Dispose();。
frame = null;
我入坑的原因,就是在Update中释放该资源,从而导致没帧的运算中,都会申请大量的frame空间,导致层序看起来好像frame中的数据不再更新。
4.Unity中的另一个坑就是,当有些代码修改完成后,需要重新启动编辑器,才能看到我们修该的效果,我因为这个问题困了我好长的时间。