here is my json file that is printed animation clip
using json file, i want to animating for my mixamo rigging model in unity C# script i can load json file
{
"animationCurves": [
{
"propertyName": "m_LocalRotation.x",
"Path": "mixamorig:Hips",
"keyframes": [
{
"time": 0.0,
"value": -0.0762663409113884
},
{
"time": 0.10000000894069672,
"value": -0.14962874352931977
},
{
"time": 0.20000001788139344,
"value": -0.17991840839385987
},
{
"time": 0.3333333432674408,
"value": -0.09296993911266327
},
{
"time": 0.46666669845581057,
"value": -0.054657794535160068
},
{
"time": 0.6000000238418579,
"value": -0.12188190966844559
},
{
"time": 0.7000000476837158,
"value": -0.19801661372184754
},
{
"time": 0.8666667342185974,
"value": -0.07813180238008499
},
{
"time": 1.0666667222976685,
"value": -0.03217213600873947
},
{
"time": 1.2000000476837159,
"value": -0.1532047688961029
},
{
"time": 1.3333333730697632,
"value": -0.12843510508537293
},
{
"time": 1.4666666984558106,
"value": 0.002400096971541643
},
{
"time": 1.6000001430511475,
"value": -0.010161708109080792
},
{
"time": 1.7000000476837159,
"value": -0.0966675877571106
},
{
"time": 1.8000000715255738,
"value": -0.18168291449546815
},
{
"time": 1.9666668176651,
"value": -0.03760986775159836
},
{
"time": 2.133333444595337,
"value": 0.002911123912781477
},
{
"time": 2.2333333492279054,
"value": -0.1107305958867073
},
{
"time": 2.3333334922790529,
"value": -0.17717519402503968
},
{
"time": 2.4666666984558107,
"value": -0.02704346925020218
},
{
"time": 2.566666841506958,
"value": 0.044172871857881549
},
{
"time": 2.7333335876464845,
"value": -0.06689106673002243
},
{
"time": 2.866666793823242,
"value": -0.1698661893606186
},
{
"time": 2.9666669368743898,
"value": -0.06363913416862488
},
{
"time": 3.0333335399627687,
"value": -0.0049882433377206329
},
{
"time": 3.133333444595337,
"value": 0.017666654661297799
},
{
"time": 3.266666889190674,
"value": -0.09348979592323303
},
{
"time": 3.4000000953674318,
"value": -0.150802344083786
},
{
"time": 3.5333335399627687,
"value": -0.00914978701621294
},
{
"time": 3.700000286102295,
"value": 0.011832792311906815
},
{
"time": 3.8000001907348635,
"value": -0.055010806769132617
},
{
"time": 3.9333336353302,
"value": -0.11244028061628342
},
{
"time": 4.066667079925537,
"value": -0.006538539193570614
},
{
"time": 4.266666889190674,
"value": -0.024123327806591989
},
{
"time": 4.400000095367432,
"value": -0.09977295249700546
},
{
"time": 4.533333778381348,
"value": -0.02027514949440956
},
{
"time": 4.700000286102295,
"value": -0.010288001969456673
},
{
"time": 4.800000190734863,
"value": -0.03852149844169617
},
{
"time": 4.866666793823242,
"value": -0.05164175108075142
},
{
"time": 4.900000095367432,
"value": -0.0554104708135128
},
{
"time": 5.000000476837158,
"value": -0.030025074258446695
},
{
"time": 5.100000381469727,
"value": -0.024121802300214769
},
{
"time": 5.233333587646484,
"value": -0.0601608008146286
},
{
"time": 5.333333492279053,
"value": -0.058905813843011859
},
{
"time": 5.433333396911621,
"value": -0.0305410698056221
},
{
"time": 5.566667079925537,
"value": -0.004546624608337879
},
{
"time": 5.700000286102295,
"value": -0.03368762880563736
},
{
"time": 5.800000190734863,
"value": -0.052992600947618487
},
{
"time": 5.966667175292969,
"value": -0.01642114296555519
},
{
"time": 6.100000381469727,
"value": 0.021025443449616433
},
{
"time": 6.200000286102295,
"value": 0.02335663139820099
},
{
"time": 6.300000190734863,
"value": -0.08340518921613693
},
{
"time": 6.333333492279053,
"value": -0.10923442989587784
},
{
"time": 6.366666793823242,
"value": -0.10487721860408783
},
{
"time": 6.40000057220459,
"value": -0.091948002576828
},
{
"time": 6.466667175292969,
"value": -0.04697670787572861
},
{
"time": 6.633333683013916,
"value": 0.05024123936891556
},
{
"time": 6.733333587646484,
"value": 0.08762708306312561
},
{
"time": 6.833333492279053,
"value": 0.07681617140769959
},
{
"time": 6.90000057220459,
"value": 0.05560070276260376
},
{
"time": 6.966667175292969,
"value": 0.008116211742162705
},
{
"time": 7.033333778381348,
"value": -0.011124870739877224
},
{
"time": 7.133333683013916,
"value": -0.006781359668821096
},
{
"time": 7.266666889190674,
"value": 0.02195155806839466
},
{
"time": 7.433333873748779,
"value": 0.08463568240404129
},
{
"time": 7.466667175292969,
"value": 0.09898026287555695
},
{
"time": 7.500000476837158,
"value": 0.11584439873695374
},
{
"time": 7.566667079925537,
"value": 0.11654751747846604
},
{
"time": 7.633333683013916,
"value": 0.11576370894908905
},
{
"time": 7.700000286102295,
"value": 0.1013013944029808
},
{
"time": 7.766666889190674,
"value": 0.05811286345124245
},
{
"time": 7.8666672706604,
"value": -0.000005300902103044791
},
{
"time": 8.0,
"value": -0.01235875952988863
},
{
"time": 8.133334159851075,
"value": -0.03972132131457329
},
{
"time": 8.200000762939454,
"value": -0.061851866543293
}
]
}, ..... {
"propertyName": "m_LocalScale.x",
"Path": "mixamorig:RightUpLeg",
"keyframes": [
{
"time": 0.0,
"value": 1.0
},
{
"time": 8.200000762939454,
"value": 1.0
}
]
},
{
"propertyName": "m_LocalScale.y",
"Path": "mixamorig:RightUpLeg",
"keyframes": [
{
"time": 0.0,
"value": 1.0
},
{
"time": 8.200000762939454,
"value": 1.0
}
]
},
{
"propertyName": "m_LocalScale.z",
"Path": "mixamorig:RightUpLeg",
"keyframes": [
{
"time": 0.0,
"value": 1.0
},
{
"time": 8.200000762939454,
"value": 1.0
}
]
},
{
"propertyName": "m_LocalScale.x",
"Path": "mixamorig:RightLeg",
"keyframes": [
{
"time": 0.0,
"value": 1.0
},
{
"time": 8.200000762939454,
"value": 1.0
}
]
},
{
"propertyName": "m_LocalScale.y",
"Path": "mixamorig:RightLeg",
"keyframes": [
{
"time": 0.0,
"value": 1.0
},
{
"time": 8.200000762939454,
"value": 1.0
}
]
},
{
"propertyName": "m_LocalScale.z",
"Path": "mixamorig:RightLeg",
"keyframes": [
{
"time": 0.0,
"value": 1.0
},
{
"time": 8.200000762939454,
"value": 1.0
}
]
},
{
"propertyName": "m_LocalScale.x",
"Path": "mixamorig:RightFoot",
"keyframes": [
{
"time": 0.0,
"value": 1.0
},
{
"time": 8.200000762939454,
"value": 1.0
}
]
},
{
"propertyName": "m_LocalScale.y",
"Path": "mixamorig:RightFoot",
"keyframes": [
{
"time": 0.0,
"value": 1.0
},
{
"time": 8.200000762939454,
"value": 1.0
}
]
},
{
"propertyName": "m_LocalScale.z",
"Path": "mixamorig:RightFoot",
"keyframes": [
{
"time": 0.0,
"value": 1.0
},
{
"time": 8.200000762939454,
"value": 1.0
}
]
},
{
"propertyName": "m_LocalScale.x",
"Path": "mixamorig:RightToeBase",
"keyframes": [
{
"time": 0.0,
"value": 1.0
},
{
"time": 8.200000762939454,
"value": 1.0
}
]
},
{
"propertyName": "m_LocalScale.y",
"Path": "mixamorig:RightToeBase",
"keyframes": [
{
"time": 0.0,
"value": 1.0
},
{
"time": 8.200000762939454,
"value": 1.0
}
]
},
{
"propertyName": "m_LocalScale.z",
"Path": "mixamorig:RightToeBase",
"keyframes": [
{
"time": 0.0,
"value": 1.0
},
{
"time": 8.200000762939454,
"value": 1.0
}
]
}
]
}
i can load the json file like this
and could you please let me know how to animation for model using C# script
i wish my model animating by each propertyName
what i tried
using UnityEngine;
using System.Collections.Generic;
using System.IO;
using UnityEditor;
using System.Collections;
using System.Text;
public class AnimationClipPlayer : MonoBehaviour
{
public Transform[] bonesToAnimate; // List of bones or properties to animate
public string jsonFilePath = "AnimationClip.json";
int i, a, b, c, d, e, f, g, h, j, k, l, n, m, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, an, am, ao, ap, aq, ar, at, au, av, aw, ax;
private AnimationData animationData;
[System.Serializable]
private class AnimationCurveData
{
public string propertyName;
public string Path;
public List<KeyframeData> keyframes = new List<KeyframeData>();
}
[System.Serializable]
private class KeyframeData
{
public float time;
public float value;
}
[System.Serializable]
private class AnimationData
{
public List<AnimationCurveData> animationCurves = new List<AnimationCurveData>();
}
private void Start()
{
aa = ab = ac = ad = ae = af = ag = ah = ai = aj = ak = al = an = am = ao = ap = aq = ar = at = au = av = aw = ax = e = f = g = h = j = k = l = n = m = o = p = q = r = s = t = u = v = w = x = y = z = d = c = b = a = i = 0;
LoadAnimationDataFromJson();
}
private void LoadAnimationDataFromJson()
{
string json = File.ReadAllText(jsonFilePath);
animationData = JsonUtility.FromJson<AnimationData>(json);
}
// 모든 Update함수가 호출된 뒤 호출
void Update()
{
setBoneTransform();
}
private void setBoneTransform()
{
if (i == animationData.animationCurves[210].keyframes.Count) // 165
aa = ab = ac = ad = ae = af = ag = ah = ai = aj = ak = al = an = am = ao = ap = aq = ar = at = au = av = aw = ax = e = f = g = h = j = k = l = n = m = o = p = q = r = s = t = u = v = w = x = y = z = d = c = b = a = i = 0;
if (animationData.animationCurves[210].keyframes[i].time == animationData.animationCurves[0].keyframes[c].time) bonesToAnimate[2].rotation = new Quaternion(animationData.animationCurves[0].keyframes[c].value, animationData.animationCurves[1].keyframes[c].value, animationData.animationCurves[2].keyframes[c].value, animationData.animationCurves[3].keyframes[c++].value); // hip
if (animationData.animationCurves[210].keyframes[i].time == animationData.animationCurves[4].keyframes[d].time) bonesToAnimate[62].rotation = new Quaternion(animationData.animationCurves[4].keyframes[d].value, animationData.animationCurves[5].keyframes[d].value, animationData.animationCurves[6].keyframes[d].value, animationData.animationCurves[7].keyframes[d++].value); // Spine
if (animationData.animationCurves[210].keyframes[i].time == animationData.animationCurves[8].keyframes[e].time) bonesToAnimate[63].rotation = new Quaternion(animationData.animationCurves[8].keyframes[e].value, animationData.animationCurves[9].keyframes[e].value, animationData.animationCurves[10].keyframes[e].value, animationData.animationCurves[11].keyframes[e++].value); // Spine1
if (animationData.animationCurves[210].keyframes[i].time == animationData.animationCurves[12].keyframes[f].time) bonesToAnimate[64].rotation = new Quaternion(animationData.animationCurves[12].keyframes[f].value, animationData.animationCurves[13].keyframes[f].value, animationData.animationCurves[14].keyframes[f].value, animationData.animationCurves[15].keyframes[f++].value); // Spine2
if (animationData.animationCurves[210].keyframes[i].time == animationData.animationCurves[16].keyframes[g].time) bonesToAnimate[32].rotation = new Quaternion(animationData.animationCurves[16].keyframes[g].value, animationData.animationCurves[17].keyframes[g].value, animationData.animationCurves[18].keyframes[g].value, animationData.animationCurves[19].keyframes[g++].value); // Neck
if (animationData.animationCurves[210].keyframes[i].time == animationData.animationCurves[20].keyframes[h].time) bonesToAnimate[0].rotation = new Quaternion(animationData.animationCurves[20].keyframes[h].value, animationData.animationCurves[21].keyframes[h].value, animationData.animationCurves[22].keyframes[h].value, animationData.animationCurves[23].keyframes[h++].value); // Head
if (animationData.animationCurves[210].keyframes[i].time == animationData.animationCurves[24].keyframes[j].time) bonesToAnimate[28].rotation = new Quaternion(animationData.animationCurves[24].keyframes[j].value, animationData.animationCurves[25].keyframes[j].value, animationData.animationCurves[26].keyframes[j].value, animationData.animationCurves[27].keyframes[j++].value); // LeftShoulder
if (animationData.animationCurves[210].keyframes[i].time == animationData.animationCurves[28].keyframes[k].time) bonesToAnimate[3].rotation = new Quaternion(animationData.animationCurves[28].keyframes[k].value, animationData.animationCurves[29].keyframes[k].value, animationData.animationCurves[30].keyframes[k].value, animationData.animationCurves[31].keyframes[k++].value); // LeftArm
if (animationData.animationCurves[210].keyframes[i].time == animationData.animationCurves[32].keyframes[l].time) bonesToAnimate[5].rotation = new Quaternion(animationData.animationCurves[32].keyframes[l].value, animationData.animationCurves[33].keyframes[l].value, animationData.animationCurves[34].keyframes[l].value, animationData.animationCurves[35].keyframes[l++].value); // LeftForeArm
if (animationData.animationCurves[210].keyframes[i].time == animationData.animationCurves[36].keyframes[n].time) bonesToAnimate[6].rotation = new Quaternion(animationData.animationCurves[36].keyframes[n].value, animationData.animationCurves[37].keyframes[n].value, animationData.animationCurves[38].keyframes[n].value, animationData.animationCurves[39].keyframes[n++].value); // LeftHand
if (animationData.animationCurves[210].keyframes[i].time == animationData.animationCurves[52].keyframes[m].time) bonesToAnimate[7].rotation = new Quaternion(animationData.animationCurves[52].keyframes[m].value, animationData.animationCurves[53].keyframes[m].value, animationData.animationCurves[54].keyframes[m].value, animationData.animationCurves[55].keyframes[m++].value); // LeftHandIndex1
if (animationData.animationCurves[210].keyframes[i].time == animationData.animationCurves[56].keyframes[o].time) bonesToAnimate[8].rotation = new Quaternion(animationData.animationCurves[56].keyframes[o].value, animationData.animationCurves[57].keyframes[o].value, animationData.animationCurves[58].keyframes[o].value, animationData.animationCurves[59].keyframes[o++].value); // LeftHandIndex2
if (animationData.animationCurves[210].keyframes[i].time == animationData.animationCurves[60].keyframes[p].time) bonesToAnimate[9].rotation = new Quaternion(animationData.animationCurves[60].keyframes[p].value, animationData.animationCurves[61].keyframes[p].value, animationData.animationCurves[62].keyframes[p].value, animationData.animationCurves[63].keyframes[p++].value); // LeftHandIndex3
if (animationData.animationCurves[210].keyframes[i].time == animationData.animationCurves[64].keyframes[q].time) bonesToAnimate[11].rotation = new Quaternion(animationData.animationCurves[64].keyframes[q].value, animationData.animationCurves[65].keyframes[q].value, animationData.animationCurves[66].keyframes[q].value, animationData.animationCurves[67].keyframes[q++].value); // LeftHandMiddle1
if (animationData.animationCurves[210].keyframes[i].time == animationData.animationCurves[68].keyframes[r].time) bonesToAnimate[12].rotation = new Quaternion(animationData.animationCurves[68].keyframes[r].value, animationData.animationCurves[69].keyframes[r].value, animationData.animationCurves[70].keyframes[r].value, animationData.animationCurves[71].keyframes[r++].value); // LeftHandMiddle2
if (animationData.animationCurves[210].keyframes[i].time == animationData.animationCurves[72].keyframes[s].time) bonesToAnimate[13].rotation = new Quaternion(animationData.animationCurves[72].keyframes[s].value, animationData.animationCurves[73].keyframes[s].value, animationData.animationCurves[74].keyframes[s].value, animationData.animationCurves[75].keyframes[s++].value); // LeftHandMiddle3
if (animationData.animationCurves[210].keyframes[i].time == animationData.animationCurves[76].keyframes[t].time) bonesToAnimate[19].rotation = new Quaternion(animationData.animationCurves[76].keyframes[t].value, animationData.animationCurves[77].keyframes[t].value, animationData.animationCurves[78].keyframes[t].value, animationData.animationCurves[79].keyframes[t++].value); // LeftHandRing1
if (animationData.animationCurves[210].keyframes[i].time == animationData.animationCurves[80].keyframes[u].time) bonesToAnimate[20].rotation = new Quaternion(animationData.animationCurves[80].keyframes[u].value, animationData.animationCurves[81].keyframes[u].value, animationData.animationCurves[82].keyframes[u].value, animationData.animationCurves[83].keyframes[u++].value); // LeftHandRing2
if (animationData.animationCurves[210].keyframes[i].time == animationData.animationCurves[84].keyframes[v].time) bonesToAnimate[21].rotation = new Quaternion(animationData.animationCurves[84].keyframes[v].value, animationData.animationCurves[85].keyframes[v].value, animationData.animationCurves[86].keyframes[v].value, animationData.animationCurves[87].keyframes[v++].value); // LeftHandRing3
if (animationData.animationCurves[210].keyframes[i].time == animationData.animationCurves[88].keyframes[w].time) bonesToAnimate[15].rotation = new Quaternion(animationData.animationCurves[88].keyframes[w].value, animationData.animationCurves[89].keyframes[w].value, animationData.animationCurves[90].keyframes[w].value, animationData.animationCurves[91].keyframes[w++].value); // LeftHandPinky1
if (animationData.animationCurves[210].keyframes[i].time == animationData.animationCurves[92].keyframes[x].time) bonesToAnimate[16].rotation = new Quaternion(animationData.animationCurves[92].keyframes[x].value, animationData.animationCurves[93].keyframes[x].value, animationData.animationCurves[94].keyframes[x].value, animationData.animationCurves[95].keyframes[x++].value); // LeftHandPinky2
if (animationData.animationCurves[210].keyframes[i].time == animationData.animationCurves[96].keyframes[y].time) bonesToAnimate[17].rotation = new Quaternion(animationData.animationCurves[96].keyframes[y].value, animationData.animationCurves[97].keyframes[y].value, animationData.animationCurves[98].keyframes[y].value, animationData.animationCurves[99].keyframes[y++].value); // LeftHandPinky3
if (animationData.animationCurves[210].keyframes[i].time == animationData.animationCurves[100].keyframes[z].time) bonesToAnimate[58].rotation = new Quaternion(animationData.animationCurves[100].keyframes[z].value, animationData.animationCurves[101].keyframes[z].value, animationData.animationCurves[102].keyframes[z].value, animationData.animationCurves[103].keyframes[z++].value); // RightShoulder
if (animationData.animationCurves[210].keyframes[i].time == animationData.animationCurves[104].keyframes[aa].time) bonesToAnimate[33].rotation = new Quaternion(animationData.animationCurves[104].keyframes[aa].value, animationData.animationCurves[105].keyframes[aa].value, animationData.animationCurves[106].keyframes[aa].value, animationData.animationCurves[107].keyframes[aa++].value); // RightArm
if (animationData.animationCurves[210].keyframes[i].time == animationData.animationCurves[108].keyframes[ab].time) bonesToAnimate[35].rotation = new Quaternion(animationData.animationCurves[108].keyframes[ab].value, animationData.animationCurves[109].keyframes[ab].value, animationData.animationCurves[110].keyframes[ab].value, animationData.animationCurves[111].keyframes[ab++].value); // RightForeArm
if (animationData.animationCurves[210].keyframes[i].time == animationData.animationCurves[112].keyframes[ac].time) bonesToAnimate[36].rotation = new Quaternion(animationData.animationCurves[112].keyframes[ac].value, animationData.animationCurves[113].keyframes[ac].value, animationData.animationCurves[114].keyframes[ac].value, animationData.animationCurves[115].keyframes[ac++].value); // RightHand
if (animationData.animationCurves[210].keyframes[i].time == animationData.animationCurves[116].keyframes[ad].time) bonesToAnimate[53].rotation = new Quaternion(animationData.animationCurves[116].keyframes[ad].value, animationData.animationCurves[117].keyframes[ad].value, animationData.animationCurves[118].keyframes[ad].value, animationData.animationCurves[119].keyframes[ad++].value); // RightHandThumb1
if (animationData.animationCurves[210].keyframes[i].time == animationData.animationCurves[128].keyframes[ae].time) bonesToAnimate[37].rotation = new Quaternion(animationData.animationCurves[128].keyframes[ae].value, animationData.animationCurves[129].keyframes[ae].value, animationData.animationCurves[130].keyframes[ae].value, animationData.animationCurves[131].keyframes[ae++].value); // RightHandIndex1
if (animationData.animationCurves[210].keyframes[i].time == animationData.animationCurves[132].keyframes[af].time) bonesToAnimate[38].rotation = new Quaternion(animationData.animationCurves[132].keyframes[af].value, animationData.animationCurves[133].keyframes[af].value, animationData.animationCurves[134].keyframes[af].value, animationData.animationCurves[135].keyframes[af++].value); // RightHandIndex2
if (animationData.animationCurves[210].keyframes[i].time == animationData.animationCurves[136].keyframes[ag].time) bonesToAnimate[39].rotation = new Quaternion(animationData.animationCurves[136].keyframes[ag].value, animationData.animationCurves[137].keyframes[ag].value, animationData.animationCurves[138].keyframes[ag].value, animationData.animationCurves[139].keyframes[ag++].value); // RightHandIndex3
...
a++;
}
i++;
}
}