示例#1
0
    void readFile(string fileName)
    {
        //List config files
        string[] lines = System.IO.File.ReadAllLines(@"Assets\" + fileName);// dirty because Assets is inside Assets....<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

        ReadFaceFile       readFace    = GetComponent <ReadFaceFile>();
        SkinnedFaceTracing skinnedFace = GetComponent <SkinnedFaceTracing>();
        FaceMorpher        faceMorpher = GetComponent <FaceMorpher>();

        print(" <<<Load Anim File>>> ");

        faceMorpher.resetFaceStates();

        for (int i = 1; i < lines.Length; i++)
        {
            string[] spl      = lines[i].Split('_');
            string   faceName = spl[0];
            int      frame    = int.Parse(spl[1]);

            string cleanName = cleanInput(faceName, 7);

            readFace.loadFace(cleanName);
            Vector3[] faceV = skinnedFace.returnCurrentFace();
            faceMorpher.addFaceState(frame, faceV, faceName);
            //print("WE GET FACE V LENGTH " + faceV.Length);
        }
    }
示例#2
0
    void DecorateMesh()
    {
        Transform root = guy.transform.parent;
        //print(" lossyScale is" + parent.transform.lossyScale);

        Vector3 initScale  = pointCube.transform.localScale;
        Vector3 lossyScale = childGroup.transform.lossyScale;

        childGroup.transform.position = guy.transform.position;

        Vector3 normalizeScale = new Vector3(initScale.x / lossyScale.x, initScale.y / lossyScale.y, initScale.z / lossyScale.z);

        sft.resetIndexLinks();//reset index links


        for (int i = 0; i < vertices.Length; i++)
        {
            // WE HAD TO TRACKING
            if (vertices[i].y > startY && vertices[i].z > startZ)
            {
                GameObject newCube = GameObject.Instantiate(pointCube);
                newCube.transform.parent     = childGroup.transform;
                newCube.transform.localScale = normalizeScale;
                // 100 car on est a 0.01
                newCube.transform.position = vertices[i] * guy.transform.localScale.x * 100 * root.transform.localScale.x + guy.transform.position;

                newCube.transform.name = "newCube" + i;
                sft.addIndexLink(i);
            }

            //loading++;
        }

        childGroup.transform.rotation = new Quaternion(0, 0, 0, 0);
        sft.setVertices();
        // sft.linkToTrackingPosition();

        // WHEN INDEX LINKING IS DONE , WE CAN INIT THE MORPHING
        FaceMorpher morpher = GetComponent <FaceMorpher>();

        morpher.initMorphing();
    }
示例#3
0
    void OnGUI()
    {
        int modeValue = skinnedGui.returnModeValue();

        if (modeValue == 2)
        {
            if (GUI.Button(new Rect(400, 10, 150, 40), "Save Anim File"))
            {
                saving = !saving;
                animNameInputField.SetActive(saving);
            }

            if (saving)
            {
                if (Input.GetKeyDown(KeyCode.Return))
                {
                    FaceMorpher   morpher   = GetComponent <FaceMorpher>();
                    List <string> faceNames = morpher.returnFaceNames();
                    List <int>    frames    = morpher.returnFrames();
                    List <string> lines     = new List <string>();

                    lines.Add("" + morpher.nbFrames);

                    for (int i = 0; i < faceNames.Count; i++)
                    {
                        string line = faceNames[i] + "_" + frames[i];
                        lines.Add(line);
                    }

                    InputField field = animNameInputField.GetComponent <InputField>();

                    string fileName = field.text;

                    System.IO.File.WriteAllLines("Assets/AnimFiles/" + fileName + ".txt", lines.ToArray());

                    saving = false;
                    animNameInputField.SetActive(saving);
                }
            }
        }
    }