public void MapBoneWeightTest() { { var map = new BoneMap(); map.Add(new GameObject("a"), new GameObject("A")); map.Add(new GameObject("b"), new GameObject("B")); map.Add(new GameObject("c"), new GameObject("C")); map.Add(new GameObject("d"), new GameObject("D")); map.Add(null, new GameObject("null")); // map.Add(new GameObject("c"), null); // ありえないので Exception にしてある var boneWeights = map.CreateBoneWeight(64).ToArray(); var newBoneWeight = MeshUtility.BoneNormalizer.MapBoneWeight(boneWeights, map.Map, map.SrcBones.ToArray(), map.DstBones.ToArray()); // 正常系 // exception が出なければよい } { var map = new BoneMap(); map.Add(new GameObject("a"), new GameObject("A")); map.Add(new GameObject("b"), new GameObject("B")); map.Add(new GameObject("c"), new GameObject("C")); map.Add(new GameObject("d"), new GameObject("D")); map.Add(null, new GameObject("null")); // map.Add(new GameObject("c"), null); // ありえないので Exception にしてある var boneWeights = map.CreateBoneWeight(64).ToArray(); var newBoneWeight = MeshUtility.BoneNormalizer.MapBoneWeight(boneWeights, map.Map, map.SrcBones.ToArray(), map.DstBones.ToArray()); // 4 つめが 0 になる Assert.AreEqual(0, newBoneWeight[1].boneIndex0); Assert.AreEqual(0, newBoneWeight[1].weight0); // 5 つめ以降が 0 になる。out of range Assert.AreEqual(0, newBoneWeight[1].boneIndex1); Assert.AreEqual(0, newBoneWeight[1].weight1); } }