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 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; }