「LAGライブラリを試してみるその3」の編集履歴(バックアップ)一覧はこちら
「LAGライブラリを試してみるその3」(2010/08/22 (日) 20:47:02) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
*&bold(){LAGライブラリを試してみるその3}
予め完成したモーションではなく、ゲーム中で直接ボーンを動かしたいというときに使う命令を試してみたよ。
本家LAG氏のサイトでいうところのsample4に書かれているやつ。
*&bold(){命令そのものは1行で済む}
今回使うのは、animationplayerクラスの「SetBoneMatrix」という命令。
名前からわかるとおり、ボーンの行列情報をセットするってことだ。
この命令をXNAのUpdate()関数内に書いてやる。
ちなみにカッコ内に入れる引数は、SetBoneMatrix(「ボーンの番号か名前」,「どう動かしたいかを書いた行列」 )という風になっている。
下の画像では、一旦bonechangeというmatrix変数を作りつつ、45度回転させるように数値を入れておいてSetBoneMatrixに渡したので
すこし不必要な命令も映っているけど、基本的には赤線の部分の命令だけでなんとかなるよ。
&ref(source1.png)
*&bold(){実際にやってみると}
プレイヤーがAキーを押すと腕を前へ出すようにしたかった。
これは何もしていない状態。待機モーションをしている。
&ref(noble.png)
これがキーを押した後の状態。ちゃんと45度回転して、
腕が前に突き出たようになった。
&ref(handmove.png)
*&bold(){結果}
この機能が使えれば、完成モーションではできない「キャラの体は走ってる方向を向いてるけど頭は敵の方を向き続ける」
みたいなリアルタイム操作ができるようになるので、とても重要な機能だと思う。
ただし問題があって、どうやらこの命令はボーン情報が完成モーションとブレンドされてしまうらしく、実験用の管理人さんモデルが
「腕を前を突き出しつつも、肩を上下させる待機モーションも同時にやってしまっている」
というちょっと変わったことになってしまっていた。
もしLAGライブラリにボーンの手動変形時は一時的に自動モーションを切るって機能があればいいんだけど、
まだ調べられていないからできるかどうかはわからないところ。こんごの課題になりそうだ。
*&bold(){LAGライブラリを試してみるその3}
予め完成したモーションではなく、ゲーム中で直接ボーンを動かしたいというときに使う命令を試してみたよ。
本家LAG氏のサイトでいうところのsample4に書かれているやつ。
*&bold(){命令そのものは1行で済む。(SetBoneMatrix命令)}
今回使うのは、animationplayerクラスの「SetBoneMatrix」という命令。
名前からわかるとおり、ボーンの行列情報をセットするってことだ。
この命令をXNAのUpdate()関数内に書いてやる。
ちなみにカッコ内に入れる引数は、SetBoneMatrix(「ボーンの番号か名前」,「どう動かしたいかを書いた行列」 )という風になっている。
下の画像では、一旦bonechangeというmatrix変数を作りつつ、45度回転させるように数値を入れておいてSetBoneMatrixに渡したので
すこし不必要な命令も映っているけど、基本的には赤線の部分の命令だけでなんとかなるよ。
&ref(source1.png)
*&bold(){実際にやってみると}
プレイヤーがAキーを押すと腕を前へ出すようにしたかった。
これは何もしていない状態。待機モーションをしている。
&ref(noble.png)
これがキーを押した後の状態。ちゃんと45度回転して、
腕が前に突き出たようになった。
&ref(handmove.png)
*&bold(){結果}
この機能が使えれば、完成モーションではできない「キャラの体は走ってる方向を向いてるけど頭は敵の方を向き続ける」
みたいなリアルタイム操作ができるようになるので、とても重要な機能だと思う。
ただし問題があって、どうやらこの命令はボーン情報が完成モーションとブレンドされてしまうらしく、実験用の管理人さんモデルが
「腕を前を突き出しつつも、肩を上下させる待機モーションも同時にやってしまっている」
というちょっと変わったことになってしまっていた。
もしLAGライブラリにボーンの手動変形時は一時的に自動モーションを切るって機能があればいいんだけど、
まだ調べられていないからできるかどうかはわからないところ。こんごの課題になりそうだ。