我目前正在做一个学校项目,我将使用运动捕捉和统一性。它是为提高老年人的认知和运动功能而设计的。我希望团结能够将他们的动作记录到一个csv文件中,以查看他们的状况如何。我想要在Excel中记录时间的x,y和z坐标。
我将感知神经元用于运动捕捉,共有32个传感器。统一的3D模型具有32个可移动的不同部分/肢体,包括手指。我在这里添加了一张图片:
This is what the 3D model for perception neuron looks like
我尝试使用此示例,但是它将数据提取为文本文件。
using UnityEngine;
using System.Collections;
using System.IO;
using System;
public class fileMaker : MonoBehaviour
{
public static void putBytes(ref byte[] output, int index, float value)
{
//turns a float into its 4 bytes and then puts them into the output array
//at the given index
byte[] data = BitConverter.GetBytes(value);
output[index] = data[0];
output[index + 1] = data[1];
output[index + 2] = data[2];
output[index + 3] = data[3];
}
public static void makeFile(Vector3 position)
{
//each float is 4 bytes.
//3 floats in a vector 3(x,y,z) and 3x4 =12!
byte[] output = new byte[12];
//get bytes for each part of our lil vector3
putBytes(ref output, 0, position.x);
putBytes(ref output, 4, position.y);
putBytes(ref output, 8, position.z);
File.WriteAllBytes(Application.dataPath + "/log.txt", output);
}
public static void loadFile()
{
//converts it all back into pretty print
if (File.Exists(Application.dataPath + "/log.txt"))
{
byte[] input = File.ReadAllBytes(Application.dataPath + "/log.txt");
int length = input.Length;
if (length == 12)
{
Vector3 ourVector3 = new Vector3();
ourVector3.x = (float)BitConverter.ToSingle(input, 0);
ourVector3.y = (float)BitConverter.ToSingle(input, 4);
ourVector3.z = (float)BitConverter.ToSingle(input, 8);
print("Position saved in file (" + Application.dataPath + "/log.txt): " + ourVector3.ToString());
}
}
}
}
我希望统一记录每个零件的位置数据。这是否意味着我必须为每个肢体(这是一个游戏对象)编写脚本,还是可以编写一个脚本并连接到所有肢体?
我还想知道是否可以更改上面的代码以将数据存储为csv文件而不是文本文件;我可以更改几行还是必须编写一个新脚本?我对统一和计算机编程很陌生。
答案 0 :(得分:2)
如果您的四肢都具有相同的行为,则可以声明Interface。像这样:
public interface I3DPosition{
string Get3DCoordinates();
}
然后将肢体对象链接到此接口
public LimbObject : I3DPosition
也许您也可以做一些inheritance。对于面向对象的编程,这些是非常基本的。要编写csv,应该真的很容易:
File.WriteAllText(filePath, "x,y,z");
和/或
File.AppendAllText(filePath, "x,y,z");
请参阅here