Inheritance: MonoBehaviour
    public Vector3[] source; // 元頂点, source_position

    #endregion Fields

    #region Methods

    // SkinScriptの配列を子供の表情から探して拾ってくる
    MMDSkinsScript[] GetSkinScripts()
    {
        // 表情のスクリプトを拾ってくる
        var scripts = new MMDSkinsScript[transform.GetChildCount()];
        for (int i = 0; i < scripts.Length; i++)
            scripts[i] = transform.GetChild(i).GetComponent<MMDSkinsScript>();

        return scripts;
    }
    // SkinScriptの配列を子供の表情から探して拾ってくる
    MMDSkinsScript[] GetSkinScripts()
    {
        // 表情のスクリプトを拾ってくる
        var scripts = new MMDSkinsScript[transform.GetChildCount()];

        for (int i = 0; i < scripts.Length; i++)
        {
            scripts[i] = transform.GetChild(i).GetComponent <MMDSkinsScript>();
        }

        return(scripts);
    }
Beispiel #3
0
 /// <summary>
 /// 初回処理
 /// </summary>
 public void Awake()
 {
     children_ = new List <Transform> [Enum.GetValues(typeof(MMDSkinsScript.SkinType)).Length];
     for (int i = 0, i_max = children_.Length; i < i_max; ++i)
     {
         children_[i] = new List <Transform>();
     }
     //子登録
     foreach (Transform child in Selection.activeTransform)
     {
         MMDSkinsScript skins = child.GetComponent <MMDSkinsScript>();
         children_[(int)skins.skinType].Add(child);
     }
 }
Beispiel #4
0
        // モーフ情報(頂点インデックス、モーフ先頂点など)を記録する
        void AssignMorphVectorsForSkin(PMD.PMDFormat.SkinData data, PMD.PMDFormat.VertexList vtxs, MMDSkinsScript script)
        {
            uint count = data.skin_vert_count;

            int[]     indices      = new int[count];
            Vector3[] morph_target = new Vector3[count];

            for (int i = 0; i < count; i++)
            {
                // ここで設定する
                indices[i] = (int)data.skin_vert_data[i].skin_vert_index;

                // モーフ先 - 元頂点
                //morph_target[i] = (data.skin_vert_data[i].skin_vert_pos - vtxs.vertex[indices[i]].pos).normalized;
                //morph_target[i] = data.skin_vert_data[i].skin_vert_pos - vtxs.vertex[indices[i]].pos;
                morph_target[i] = data.skin_vert_data[i].skin_vert_pos * scale_;
            }

            // スクリプトに記憶させる
            script.morphTarget   = morph_target;
            script.targetIndices = indices;

            switch (data.skin_type)
            {
            case 0:
                script.skinType        = MMDSkinsScript.SkinType.Base;
                script.gameObject.name = "base";
                break;

            case 1:
                script.skinType = MMDSkinsScript.SkinType.EyeBrow;
                break;

            case 2:
                script.skinType = MMDSkinsScript.SkinType.Eye;
                break;

            case 3:
                script.skinType = MMDSkinsScript.SkinType.Lip;
                break;

            case 4:
                script.skinType = MMDSkinsScript.SkinType.Other;
                break;
            }
        }
Beispiel #5
0
            // モーフ情報(頂点インデックス、モーフ先頂点など)を記録する
            void AssignMorphVectorsForSkin(PMD.PMDFormat.SkinData data, PMD.PMDFormat.VertexList vtxs, MMDSkinsScript script)
            {
                uint count = data.skin_vert_count;
                int[] indices = new int[count];
                Vector3[] morph_target = new Vector3[count];

                for (int i = 0; i < count; i++)
                {
                    // ここで設定する
                    indices[i] = (int)data.skin_vert_data[i].skin_vert_index;

                    // モーフ先 - 元頂点
                    //morph_target[i] = (data.skin_vert_data[i].skin_vert_pos - vtxs.vertex[indices[i]].pos).normalized;
                    //morph_target[i] = data.skin_vert_data[i].skin_vert_pos - vtxs.vertex[indices[i]].pos;
                    morph_target[i] = data.skin_vert_data[i].skin_vert_pos;
                }

                // スクリプトに記憶させる
                script.morphTarget = morph_target;
                script.targetIndices = indices;

                switch (data.skin_type)
                {
                    case 0:
                        script.skinType = MMDSkinsScript.SkinType.Base;
                        script.gameObject.name = "base";
                        break;

                    case 1:
                        script.skinType = MMDSkinsScript.SkinType.EyeBrow;
                        break;

                    case 2:
                        script.skinType = MMDSkinsScript.SkinType.Eye;
                        break;

                    case 3:
                        script.skinType = MMDSkinsScript.SkinType.Lip;
                        break;

                    case 4:
                        script.skinType = MMDSkinsScript.SkinType.Other;
                        break;
                }
            }