IKボーンを適応モーションごとに行っていたが、モーションを全て適応後にIK計算するように修正
@@ -221,20 +221,6 @@ | ||
221 | 221 | if (mmdModel.mmdXNA.TimeRular != null && mmdModel.UseTimeRular) |
222 | 222 | { |
223 | 223 | mmdModel.mmdXNA.TimeRular.EndMark(2, "Anime-MotionToBone"); |
224 | - mmdModel.mmdXNA.TimeRular.BeginMark(2, "Anime-IKBone", Color.Red); | |
225 | - } | |
226 | -#endif | |
227 | - mmdModel.BoneManager.UpdateWorldTransforms(); | |
228 | - //IKボーンの処理 | |
229 | - for (int i2 = 0; i2 < mmdModel.BoneManager.Count; i2++) | |
230 | - { | |
231 | - if (mmdModel.BoneManager[i2].BoneData.IK != null) | |
232 | - mmdModel.BoneManager.SolveIK(i2, mmdModel.BoneManager[i2].BoneTransform); | |
233 | - } | |
234 | -#if TRACE | |
235 | - if (mmdModel.mmdXNA.TimeRular != null && mmdModel.UseTimeRular) | |
236 | - { | |
237 | - mmdModel.mmdXNA.TimeRular.EndMark(2, "Anime-IKBone"); | |
238 | 224 | mmdModel.mmdXNA.TimeRular.BeginMark(2, "Anime-Face", Color.BlueViolet); |
239 | 225 | } |
240 | 226 | #endif |
@@ -252,6 +238,23 @@ | ||
252 | 238 | |
253 | 239 | } |
254 | 240 | } |
241 | + | |
242 | +#if TRACE | |
243 | + if (mmdModel.mmdXNA.TimeRular != null && mmdModel.UseTimeRular) | |
244 | + mmdModel.mmdXNA.TimeRular.BeginMark(2, "Anime-IKBone", Color.Red); | |
245 | +#endif | |
246 | + //IKボーンの処理前にモデルのワールド座標系更新 | |
247 | + mmdModel.BoneManager.UpdateWorldTransforms(); | |
248 | + //IKボーンの処理 | |
249 | + for (int i2 = 0; i2 < mmdModel.BoneManager.Count; i2++) | |
250 | + { | |
251 | + if (mmdModel.BoneManager[i2].BoneData.IK != null) | |
252 | + mmdModel.BoneManager.SolveIK(i2, mmdModel.BoneManager[i2].BoneTransform); | |
253 | + } | |
254 | +#if TRACE | |
255 | + if (mmdModel.mmdXNA.TimeRular != null && mmdModel.UseTimeRular) | |
256 | + mmdModel.mmdXNA.TimeRular.EndMark(2, "Anime-IKBone"); | |
257 | +#endif | |
255 | 258 | //こちらではボーンマネージャのUpdateは行わない |
256 | 259 | } |
257 | 260 | } |