-1

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 enter image description here enter image description here

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++;
    }

}
Eilia
  • 21
  • 6
  • What have you tried yourself and why didn't it work? Have you tried googling before asking this question? – RatzMouze Aug 28 '23 at 08:29
  • @RatzMouze here What i tried – Eilia Aug 29 '23 at 05:59
  • Okay, why didn't it work? Do you get an error or? Why do you think it should work? I just now googled "mixamo rigging model c#" and it does not look like what you have coded, so maybe try to search for a tutorial of some kind. – RatzMouze Aug 29 '23 at 06:12
  • no error, i want to my 3d model animating by follow json that animation clip information – Eilia Aug 29 '23 at 07:39

0 Answers0