Hi there...
I found this post (
http://answers.unity3d.com/questions/28580/
recording-animations.html) for animation capture and i am trying to
implemented in my Unity-Kinect...
My code now looks like
var object : Transform;
var clip1 : AnimationClip;
var posXCurve;
var posYCurve;
var posZCurve;
var rotXCurve;
var rotYCurve;
var rotZCurve;
var rotX2Curve;
var rotY2Curve;
var rotZ2Curve;
static var recStart : boolean;
static var isRecording : boolean;
static var recMode = false;
static var stopMode = false;
static var playMode = false;
function OnGUI() {
// Make a background box
GUI.Box (Rect (10,10,100,120), "Motion Capture");
if (GUI.Button (Rect (20,40,80,20), "Record")) {
recMode = true;
stopMode = false;
playMode = false;
}
if (GUI.Button (Rect (20,70,80,20), "Stop")) {
recMode = false;
stopMode = true;
playMode = false;
}
if (GUI.Button (Rect (20,100,80,20), "Play")) {
recMode = false;
stopMode = false;
playMode = true;
}
}
function startRec(){
posXCurve = new AnimationCurve();
posYCurve = new AnimationCurve();
posZCurve = new AnimationCurve();
rotXCurve = new AnimationCurve();
rotYCurve = new AnimationCurve();
rotZCurve = new AnimationCurve();
rotX2Curve = new AnimationCurve();
rotY2Curve = new AnimationCurve();
rotZ2Curve = new AnimationCurve();
recStart = true;
isRecording = true;
print("RECORDING");
}
function stopRec(){
isRecording = false;
clip1.SetCurve("", Transform, "localPosition.x", posXCurve);
clip1.SetCurve("", Transform, "localPosition.y", posYCurve);
clip1.SetCurve("", Transform, "localPosition,z", posZCurve);
clip1.SetCurve("", Transform, "localRotation,x", rotXCurve);
clip1.SetCurve("", Transform, "localRotation,y", rotYCurve);
clip1.SetCurve("", Transform, "localRotation,z", rotZCurve);
clip1.SetCurve("_d_camera", Transform, "localRotation,x",
rotX2Curve);
clip1.SetCurve("_d_camera", Transform, "localRotation,y",
rotY2Curve);
clip1.SetCurve("_d_camera", Transform, "localRotation,z",
rotZ2Curve);
object.animation.AddClip (clip1, "aniMo");
print("STOPPED!!");
}
function playAnim(){
object.animation.Play("aniMo");
print("Playing");
}
function Update(){
if(recMode){
startRec();
}else if(stopMode){
stopRec();
}else if(playMode){
playAnim();
}else{
}
}
/*mainObj is the same GameObject that is being used when you add
keyframes to the
position curve and it is recording the localRotation instead of the
localEulerAngles.*/
function LateUpdate(){
if(recStart) {
nowTime = 0;
recStart = false;
}
if(isRecording){
posXCurve.AddKey(nowTime, object.transform.localPosition.x);
posYCurve.AddKey(nowTime, object.transform.localPosition.y);
posZCurve.AddKey(nowTime, object.transform.localPosition.z);
rotXCurve.AddKey(nowTime, object.transform.localEulerAngles.x);
rotYCurve.AddKey(nowTime, object.transform.localEulerAngles.y);
rotZCurve.AddKey(nowTime, object.transform.localEulerAngles.z);
rotX2Curve.AddKey(nowTime,
object.transform.localEulerAngles.x);
rotY2Curve.AddKey(nowTime,
object.transform.localEulerAngles.y);
rotZ2Curve.AddKey(nowTime,
object.transform.localEulerAngles.z);
nowTime = nowTime + Time.deltaTime;
}
}
When I am trying to record he motion it puts just only one keyframe...
Do you know why this doesn't work??