private PMXFormat.IK_Data ReadIkData()
    {
        PMXFormat.IK_Data result = new PMXFormat.IK_Data();
        result.ik_bone_index = CastIntRead(binary_reader_, format_.header.boneIndexSize);
        result.iterations    = binary_reader_.ReadUInt32();
        result.limit_angle   = binary_reader_.ReadSingle();
        uint ik_link_count = binary_reader_.ReadUInt32();

        result.ik_link = new PMXFormat.IK_Link[ik_link_count];
        for (uint i = 0, i_max = (uint)result.ik_link.Length; i < i_max; ++i)
        {
            result.ik_link[i] = ReadIkLink();
        }
        return(result);
    }
Exemplo n.º 2
0
	private PMXFormat.IK_Data ReadIkData() {
		PMXFormat.IK_Data result = new PMXFormat.IK_Data();
		result.ik_bone_index = CastIntRead(binary_reader_, format_.header.boneIndexSize);
		result.iterations = binary_reader_.ReadUInt32();
		result.limit_angle = binary_reader_.ReadSingle();
		uint ik_link_count = binary_reader_.ReadUInt32();
		result.ik_link = new PMXFormat.IK_Link[ik_link_count];
		for (uint i = 0, i_max = (uint)result.ik_link.Length; i < i_max; ++i) {
			result.ik_link[i] = ReadIkLink();
		}
		return result;
	}
	private static PMXFormat.IK_Data ConvertIKData(PMDFormat.IK pmd_ik) {
		PMXFormat.IK_Data result = null;
		if (null != pmd_ik) {
			result = new PMXFormat.IK_Data();
			result.ik_bone_index = pmd_ik.ik_target_bone_index;
			result.iterations = pmd_ik.iterations;
			result.limit_angle = pmd_ik.control_weight * 4.0f; //PMXConverter側で4倍されるので逆補正
			result.ik_link = pmd_ik.ik_child_bone_index.Select(x=>ConvertIKLink(x)).ToArray();
		}
		return result;
	}