Exemplo n.º 1
0
    public void BuildTimeline()
    {
        keyValues = settings.keyframes.values;
        _SliderSettings = settings.keyframes.sliderSettings;
        listademesh = new List<Mesh>();
        for (int j = 0; j < settings.meshList.id.Length; j++)
        {
            for (int i = 0; i < morphTargets.Count; i++)
            {
                if (morphTargets[i].name == settings.meshList.description[j])
                {
                    //morphTargets[i].hideFlags = HideFlags.DontSave;
                    listademesh.Add(morphTargets[i]);
                }
            }

        }

        timeline = new Timeline[keyValues.Length + 1];

        v3_listademesh = new vertexTarget[listademesh.Count];

        Vector3[] v3_BaseMesh = neutralMesh.vertices;
        for (int j = 0; j < listademesh.Count; j++)
        {
            v3_listademesh[j] = new vertexTarget();
            v3_listademesh[j].target = new Vector3[neutralMesh.vertexCount];
            v3_listademesh[j].target = listademesh[j].vertices;

            for (int h = 0; h < neutralMesh.vertexCount; h++)
            {
                v3_listademesh[j].target[h] -= v3_BaseMesh[h];
            }
        }

        for (int i = 0; i < keyValues.Length; i++)
        {

            Vector3[] v3_temp = new Vector3[neutralMesh.vertexCount];

            v3_temp = neutralMesh.vertices;

            float[] slider = _SliderSettings[i];

            for (int j = 0; j < listademesh.Count; j++)
            {
                for (int h = 0; h < neutralMesh.vertexCount; h++)
                {
                    v3_temp[h] += v3_listademesh[j].target[h] * ((float)slider[j] / 100);
                }
            }

            timeline[i] = new Timeline(keyValues[i], v3_temp);

        }

        timeline[keyValues.Length] = new Timeline(settings.animationTime, neutralMesh.vertices);

        if (neutralMesh_temp == null)
        {
            neutralMesh_temp = Instantiate(neutralMesh) as Mesh;
        }

        neutralMesh_temp.vertices = neutralMesh.vertices;

        if (mainObject.GetComponent<MeshFilter>())
        {
            MeshFilter filter = mainObject.GetComponent<MeshFilter>();
            filter.sharedMesh.vertices = neutralMesh.vertices;
            if (filter.sharedMesh != null)
            {
                filter.sharedMesh = neutralMesh_temp;
            }
            filter.sharedMesh.name = "Tagarela";
            basemesh = filter.sharedMesh as Mesh;
            //basemesh.hideFlags = HideFlags.DontSave;
        }
        else if (mainObject.GetComponent<SkinnedMeshRenderer>())
        {
            SkinnedMeshRenderer filter = mainObject.GetComponent<SkinnedMeshRenderer>();
            filter.sharedMesh.vertices = neutralMesh.vertices;
            if (filter.sharedMesh != null)
            {
                filter.sharedMesh = neutralMesh_temp;
            }
            filter.sharedMesh.name = "Tagarela";
            basemesh = filter.sharedMesh as Mesh;
            //basemesh.hideFlags = HideFlags.DontSave;
        }
    }
Exemplo n.º 2
0
    public void BuildTimeline()
    {
        keyValues       = settings.keyframes.values;
        _SliderSettings = settings.keyframes.sliderSettings;
        listademesh     = new List <Mesh>();
        for (int j = 0; j < settings.meshList.id.Length; j++)
        {
            for (int i = 0; i < morphTargets.Count; i++)
            {
                if (morphTargets[i].name == settings.meshList.description[j])
                {
                    //morphTargets[i].hideFlags = HideFlags.DontSave;
                    listademesh.Add(morphTargets[i]);
                }
            }
        }

        timeline = new Timeline[keyValues.Length + 1];

        v3_listademesh = new vertexTarget[listademesh.Count];

        Vector3[] v3_BaseMesh = neutralMesh.vertices;
        for (int j = 0; j < listademesh.Count; j++)
        {
            v3_listademesh[j]        = new vertexTarget();
            v3_listademesh[j].target = new Vector3[neutralMesh.vertexCount];
            v3_listademesh[j].target = listademesh[j].vertices;

            for (int h = 0; h < neutralMesh.vertexCount; h++)
            {
                v3_listademesh[j].target[h] -= v3_BaseMesh[h];
            }
        }

        for (int i = 0; i < keyValues.Length; i++)
        {
            Vector3[] v3_temp = new Vector3[neutralMesh.vertexCount];

            v3_temp = neutralMesh.vertices;

            float[] slider = _SliderSettings[i];

            for (int j = 0; j < listademesh.Count; j++)
            {
                for (int h = 0; h < neutralMesh.vertexCount; h++)
                {
                    v3_temp[h] += v3_listademesh[j].target[h] * ((float)slider[j] / 100);
                }
            }

            timeline[i] = new Timeline(keyValues[i], v3_temp);
        }

        timeline[keyValues.Length] = new Timeline(settings.animationTime, neutralMesh.vertices);

        if (neutralMesh_temp == null)
        {
            neutralMesh_temp = Instantiate(neutralMesh) as Mesh;
        }

        neutralMesh_temp.vertices = neutralMesh.vertices;

        if (mainObject.GetComponent <MeshFilter>())
        {
            MeshFilter filter = mainObject.GetComponent <MeshFilter>();
            filter.sharedMesh.vertices = neutralMesh.vertices;
            if (filter.sharedMesh != null)
            {
                filter.sharedMesh = neutralMesh_temp;
            }
            filter.sharedMesh.name = "Tagarela";
            basemesh = filter.sharedMesh as Mesh;
            //basemesh.hideFlags = HideFlags.DontSave;
        }
        else if (mainObject.GetComponent <SkinnedMeshRenderer>())
        {
            SkinnedMeshRenderer filter = mainObject.GetComponent <SkinnedMeshRenderer>();
            filter.sharedMesh.vertices = neutralMesh.vertices;
            if (filter.sharedMesh != null)
            {
                filter.sharedMesh = neutralMesh_temp;
            }
            filter.sharedMesh.name = "Tagarela";
            basemesh = filter.sharedMesh as Mesh;
            //basemesh.hideFlags = HideFlags.DontSave;
        }
    }