private static PMXFormat.MorphList ConvertMorphList(PMDFormat pmd)
    {
        PMXFormat.MorphList result = new PMXFormat.MorphList();
        //頂点インデックス用辞書の作成
        PMDFormat.SkinData      pmd_skin_data_base            = pmd.skin_list.skin_data.Where(x => 0 == x.skin_type).First();
        Dictionary <uint, uint> morph_vertex_index_dictionary = new Dictionary <uint, uint>(pmd_skin_data_base.skin_vert_data.Length);

        for (uint i = 0, i_max = (uint)pmd_skin_data_base.skin_vert_data.Length; i < i_max; ++i)
        {
            morph_vertex_index_dictionary.Add(i, pmd_skin_data_base.skin_vert_data[i].skin_vert_index);
        }
        //base以外の変換
        result.morph_data = new PMXFormat.MorphData[pmd.skin_list.skin_data.Where(x => 0 != x.skin_type).Count()];     //base分を除外
        int morph_data_count = 0;

        for (int i = 0, i_max = pmd.skin_list.skin_data.Length; i < i_max; ++i)
        {
            if (0 != pmd.skin_list.skin_data[i].skin_type)
            {
                //base以外なら
                string eg_skin_name = (((null != pmd.eg_skin_name_list) && (1 <= i))? pmd.eg_skin_name_list.skin_name_eg[i - 1]: null);
                result.morph_data[morph_data_count++] = ConvertMorphData(pmd.skin_list.skin_data[i], eg_skin_name, morph_vertex_index_dictionary);
            }
        }
        return(result);
    }
    private PMXFormat.MorphList ReadMorphList()
    {
        PMXFormat.MorphList result = new PMXFormat.MorphList();
        uint morph_count           = binary_reader_.ReadUInt32();

        result.morph_data = new PMXFormat.MorphData[morph_count];
        for (uint i = 0, i_max = (uint)result.morph_data.Length; i < i_max; ++i)
        {
            result.morph_data[i] = ReadMorphData();
        }
        return(result);
    }
Example #3
0
	private PMXFormat.MorphList ReadMorphList() {
		PMXFormat.MorphList result = new PMXFormat.MorphList();
		uint morph_count = binary_reader_.ReadUInt32();
		result.morph_data = new PMXFormat.MorphData[morph_count];
		for (uint i = 0, i_max = (uint)result.morph_data.Length; i < i_max; ++i) {
			result.morph_data[i] = ReadMorphData();
		}
		return result;
	}
	private static PMXFormat.MorphList ConvertMorphList(PMDFormat pmd) {
		PMXFormat.MorphList result = new PMXFormat.MorphList();
		//頂点インデックス用辞書の作成
		PMDFormat.SkinData pmd_skin_data_base = pmd.skin_list.skin_data.Where(x=>0==x.skin_type).First();
		Dictionary<uint, uint> morph_vertex_index_dictionary = new Dictionary<uint, uint>(pmd_skin_data_base.skin_vert_data.Length);
		for (uint i = 0, i_max = (uint)pmd_skin_data_base.skin_vert_data.Length; i < i_max; ++i) {
			morph_vertex_index_dictionary.Add(i, pmd_skin_data_base.skin_vert_data[i].skin_vert_index);
		}
		//base以外の変換
		result.morph_data = new PMXFormat.MorphData[pmd.skin_list.skin_data.Where(x=>0!=x.skin_type).Count()]; //base分を除外
		int morph_data_count = 0;
		for (int i = 0, i_max = pmd.skin_list.skin_data.Length; i < i_max; ++i) {
			if (0 != pmd.skin_list.skin_data[i].skin_type) {
				//base以外なら
				string eg_skin_name = (((null != pmd.eg_skin_name_list) && (1 <= i))? pmd.eg_skin_name_list.skin_name_eg[i - 1]: null);
				result.morph_data[morph_data_count++] = ConvertMorphData(pmd.skin_list.skin_data[i], eg_skin_name, morph_vertex_index_dictionary);
			}
		}
		return result;
	}