テスト用のプログラムを拝見しました
DXライブラリの初期設定では物理演算をファイル読み込みの際に行い、モーションデータに変換して
扱うようになっているのですが、それが悪さをしてモーフ以外何もキーが打たれていない表情用のモーションでも
「何もボーンが動かず物理演算だけが行われるモーションデータ」として変換作成されてしまい
待機モーションとブレンドした際に変なブレンド結果になってしまいます
この問題の解決策は二つあり、物理演算をファイル読み込みの際に行うのではなく、
読み込んだ後の実際にモデルが動く際に物理演算を行うという方法と、モーションではなく
直接シェイプの適用率を設定する機能を使用する方法があります
一つ目の方法は MV1LoadModel でモデルを読み込む前の部分に以下の記述を追加して
MV1SetLoadModelUsePhysicsMode( DX_LOADMODEL_PHYSICS_REALTIME ) ;
ファイル読み込みの際ではなくリアルタイムに物理演算を行うようにすることで
「物理演算結果を変換したモーションデータ」を無くし「物理演算結果を変換したモーション」が
「待機モーション」に干渉しないようにする方法です
ただ、この方法は CPU の負荷が大きくなる他、毎フレーム MV1PhysicsCalculation を呼んで物理演算を行ったり、
モデルをワープさせた際に MV1PhysicsResetState を使用する必要があるなど、適切な処理を行わないと
物理演算の部分がビヨーンと延びる破綻現象が発生するので、難易度は高めです
二つ目の方法は MV1SetShapeRate を使用してシェイプの適用率を直接指定する方法です
// 指定シェイプの適用率を設定する( Rate 0.0f:0% 〜 1.0f:100% )
int MV1SetShapeRate( int MHandle, int ShapeIndex, float Rate ) ;
// シェイプの名前からモデル中のシェイプの番号を取得する( 無かった場合は戻り値が-1 )
int MV1SearchShape( int MHandle, const TCHAR *ShapeName ) ;
ShapeIndex でシェイプの番号( DxLibModelViewer.exe で確認できるほか、MV1SearchShape で検索することもできます )を
指定して、そのシェイプの適用率を Rate で 0.0f(0%)から1.0f(100%)の値で指定します
こちらを使う場合は物理演算の設定を変更する必要も無く、お手軽です
二つ目の MV1SetShapeRate を使用する方法のほうが簡単なのでお勧めです
こちらの関数ですが、確認したところ関数リファレンスに載っていませんでした
今回追加しましたので、よろしければご覧ください m(_ _;m
<MV1SetShapeRateの関数リファレンスの解説>
http://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_3d.html#R21N3
<MV1SearchShapeの関数リファレンスの解説>
http://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_3d.html#R21N2