我正在使用 Kinect V2 进行体积录音。我正在使用 Kinect sdk 版本 2(在 C# 中)。我想保存一个包含几个点云“框架”的文件。我将在 Unity 中导入文件并将帧作为“点云动画”播放。过去我在 Unity ( https://vimeo.com/140683403 ) 中完成了此操作,但这次我使用 VisualStudio 来访问 SDK 中的所有方法。
该文件应包含:
- 顶点数组(点)
- 一组颜色(每个点的颜色)
最终应该可以添加:
- 一组三角形
- 用户关节(我目前正在使用它来记录人类)
在我的第一次尝试中,我编写了一个非常简单的 UserFrame 类,其中包含一个顶点列表。然后我序列化了一个 UserFrame 列表,我可以在 Unity 中成功导入它。但是,在 Unity 中反序列化它需要很长时间(大约一分钟,几秒钟的记录)所以我想知道是否有更好的方法。
- 我应该编写和解析 ASCII 文件吗?
- 在之前的尝试中,我的顶点是一个数组而不是一个列表。这会提高反序列化的速度吗?
这是该课程的编辑版本:
public class UserFrame
{
//Frame time-stamp. Could be long int in milliseconds
//public float time;
// Each element in the vertexList contains an array of 3 floats.
public List<float[]> vertexList;
public UserFrame(List<float[]> _vertexList) {
vertexList = _vertexList;
}
}
序列化代码:
Stream stream;
stream = File.Open(finalPath, FileMode.Create);
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(stream, userFrameList);
stream.Close();
和反序列化(这是缓慢的部分):
Stream stream = File.Open (fileName, FileMode.Open);
BinaryFormatter bf = new BinaryFormatter ();
dummyFrames = (List <UserFrame>)bf.Deserialize (stream);
stream.Close ();