雑談 Mayaアニメーション作成時の回転攻撃の話&Unityアニメーションのルートノードの話
雑談回です。なんとなく思いついた即席対処法を忘れないようにメモっておきます。
Mayaでのモデル回転アニメーション
例えば、かっこいいキャラは連携技の最後に一回転して敵を斬ったり、ジャンプ回転キックみたいなことをしたいですよね!(僕が直面したのはふわふわ浮いてる敵の回転攻撃でしたが、、)その時、アニメーションを作成することはさほど難しくはないと思うのですが、回転したら軸が360度のままになってしまうんです。(みんな知ってるかこのくらい笑)
んで、何が問題かというと、Unityでそのアニメーションを他のものと繋いだ際にきっと0度に戻りながらそのアニメーションに遷移するとおもうんです。(未検証ですが、多分そう)しかし、回転攻撃した後に軸を戻すために今の逆回りのアニメーションを突っ込むのもおかしいですよね。だってカッコよく決めたのに、輪ゴムのねじれを直すみたいな作業を入れるんですから笑
本当はもっといいやり方があるのかもしれないけれど、今回僕が試した手法は、、、次のフレームに360度回転し直したアニメーションを挟むことです!。。うん。これだけ笑
コツとしては”体全体の回転はルートノードだけを使用すること。”,”360度回転し直したフレームのアニメーションに少しずれを持たせてやること”ですかね。
なんか無理やりな手法ばっかりしか思いつきませんが、これでなんとか乗り切れているので、とりあえずは創意工夫があっていいのではないでしょうか笑
Unityアニメーションのルートノード
Humanoid骨格以外でのモデルには、ルートノードが設定されていませんでした。おそらく僕の設定し忘れだとは思いますが、、この時アニメーションのBake Into Poseなどが表示されず少し困っていました。Rig項目からルートを設定してあげれば、解決します。
以上。引き続き頑張れ!
Maya オブジェクトのミラーコピーを作る
今回はこちらのMELを使用させていただきました。その時のメモ。
準備
上のサイト様からありがたくダウンロードをさせてもらいましょう。保存場所はmayaフォルダの奥にある scripts フォルダとなります。その後、mayaを起動していたら、再起動して読み込ませてあげます。
下にMELなるフォームがあるのでそこに読み込ませたEMLの名前+;を打ち込んであげます。(;がなくても起動してくれましたが。。)今回はAriMirrorと打ち込みます。これで、ツールが起動いたしました。
使用方法
オブジェクトを選択し、ダウンロードしたサイトさんをよく読んで使用しましょう。
このミラーなどの判定基準は、選択したオブジェクトのピボットを基準としています。よって、ピボットが変な位置にあると、予期しないミラーが生成されます。なので、しっかりピボットの位置を変更してあげましょう。
カスタム ピボット編集モードをアクティブにする | Maya | Autodesk Knowledge Network
こちらにやり方が書いてあります。僕はまず、オブジェクトを選択>移動ツールを選択>キーボードで"d"ボタンを押しっぱなしにする>ピボットが動かせるようになる。と行いました。もし回転などをさせてあげたい場合は、回転ツールを選択すれば良いと思います。
以上。
Maya〜Humanoid骨格で自作のアニメーションを作ってFBXで出力したい
満を辞して登場!ついに因縁のアニメーション制作!ここの部分を打ち込んでいる今、僕はまだ取り掛かっていません!できるかわからないです!
2日後...
こんばんは笑 超時間を費やしました。正確に言うと、一昨日の23時から明け方4時までと、本日8日を丸々使いまして、無事fbx形式のアニメーションを書き出せました!しかもすでにUnityの方で動作確認済み!素晴らしい!ただ、例のごとく参考サイト通りに全く行かず、(今回はひどかった。。)結局自我流となってしまいました。ので、今回もそんなとりあえず動くfbxをとりあえず出力できれば後は自分で頑張れると言う人向けに、頑張って描こうかなと!このように思っています![Unityに送信]
ああ、なんて便利な機能が実装されているのだろう。。そう思ってました。これが元凶で、いざアニメーションをつけて出力すると、Unityには土嚢のような謎の物体しか読み込まれないではありませんか笑
このボタンが機能しなかったため、(原因はイマイチわからないけど、自分が悪い)他の方法を探していました。
そもそもなんでfbxで出力したいのか
僕の知っている知識の中では、アニメーションに好きなタイミングで実行させたい関数を付与できるのがfbx形式のアニメーションのみだとわかっているからです。Eventってことです。例えば、剣を振り終わったら、booleanのAttack変数をfalseにする関数を振り終わったタイミングで呼ぶように指定でき、便利だからです。もし、fbx形式以外でもできるのなら話は変わってきますが、この理由でfbxにこだわっていました。Assets Storeのアニメーションはfbxではなかったりするので、困ってました。
実行環境
Maya2016
MacOS 10.12.1
unity 5.4.1fかな確か。。
Mayaでアニメーションを作成する
まずここはアニメーションに変更してください。
そしてここがアニメーションを管理する場所となります。
ここにキーと呼ばれる、アニメーションの途中のポーズをたくさん保存して、それをある程度Mayaの方で補完をしてもらい、アニメーションとなります。
ポーズの変更は基本的にRigを回転で変えていきます。Rigを移動で動かすと体が伸びますので全体のRigを選択して、場所を少し移動させる以外はあまりやらないほうがいいかな思います。とりあえずポーズを決めましょう。
こんな感じかな。そしたらこれをキーとして保存します。
この下の写真の項目の一番下の3つに分割するビューに変更します。
そしたらこの右のやつをすべて選択します。(写真はすでに選択している場面で、選択すると黄色くなります。)
最後に、先ほど見せた時間の帯のような部分でそのポーズを登録したい部分をクリック。そして、上部のメニューより[キー>キーの設定]を実行すると、選択した時間に赤い縦線が入ると思います。これでキーが保存できました。
後はポーズを変えてこれを繰り返し、パラパラ漫画のように作っていきます。まず大まかに流れを作成してから、間に中間のポーズを挿入してくと良いでしょう。最終的にこんな感じになると思います。
グラフの扱いについては調べれば出てくるのでそれほど困らないと思います。
アニメーションをfbxで出力
ここからは効率悪い作業になるかもしれません。
まず、出力したいキャラのRigとオブジェクトを選択してください。
[ファイル>選択項目の書き出し...]の四角ボタンからオプションを開いてください。このような画面になります。
ファイルタイプはfbxを指定してください。[プリセットを編集]ボタンを押します。
[アニメーションをベイク処理]の項目をチェックし、自分のアニメーションの再生フレームを設定します。
プリセットを保存してください。
これでfbxを書き出し(警告が出るが問題はない)、Unityにインポートすればアニメーション付きfbxとして読み込まれます!!(正確にはオブジェクトと言うべきか)
自分のために書きましたが、もし悩んでいる方の参考になれば幸いです。
あ、このキャラクタを作成するシリーズもあるので、もしよかったら。
thinline196.hatenablog.com
thinline196.hatenablog.com
雑談 UnityのAnimationControllerとか
眠い。。昨日4時に寝たから睡眠不足です。Mayaの方で色々悪戦苦闘してたらそんな時間で今日も8時に前におきました笑 このことについては、ひと段落したら記事にします! ということで、これを書く必要もないんじゃないかと思っているけど、一応色々とメモ。
AnimtionController
今日はバトルシーンのキャラクターのアニメーションをデモ段階でつけてみました。コマンドで技を設定してやると、その技を繰り出します!と、そこまではよかったのですが、今回の企画、一度に3つの行動を決定し、順番に自動で実行する仕組みにしたい!そこで、リストに技を格納、そこから順に技を読み込み、キャラクターコントローラに渡してあげる。アニメーションが終わるまでは、次の技は渡さない!これが大まかな構想。
で、問題だったのはアニメーションの終わりをはっきりとさせず、アニメーションプレハブのトランジションにhas exit time?(exitingかも)を設定していたこと。
これにより、トランジションの途中(一つ目の技が終わり切らない)で次の技が呼ばれてしまった。結果、3つのうち2つの技のアニメーションしか目み言える形で実行されなかった。
この解決方法は、簡単単純。攻撃後のIdle状態に戻るトランジションをbooleanで設定すれば良い。僕の場合は、Attackingがtrueならアニメーションを始め、falseに変わったら、それをアニメーションの終了とし、時再度技が呼ばれるような仕組みになっていた。意図的にこのfalse時にアニメーションをIdleに戻すトランジションをつけてやることで、アニメーション中に技が呼ばれることがなくなった。後から考えれば当たり前だけど、友人に相談するまで考えもしなかった!助かった!
UnityEvent
まだ触っていないが、何かを動的に作成し、そこに他のもつ関数を渡してやる際に、このUnityEvent が使えるらしい。Addで渡す関数を指定し、Invokeで実行するような感じだった。眠いからしっかりみてない。忘れないようにここにメモしておきます。
雑談 GarbageBandの使用感とUnityでのBGMループのつなぎ目
雑談です。超お久しぶりです。ようやく発表が終わったと思ったっけやりたいことやってたら、全然ブログをきにする余裕がなかった!まぁUnityの記事ならともかく、雑談を読む人なんてそうそういないと思うので、今回も適当に自分用のメモを残します。
GarbageBand使ってみてました
デフォルトでMacBook付いてきた、巷でも有名なGarbageBand. 正直とてもありがたい!これをあてにして購入をしたわけじゃなかったから、お得感がすごかった!Windowsの内蔵音源がしょぼくて、設定も面倒臭そうだったので、大助かりです!TaxGuitar とか、録音したものをそのまま編集するソフトは結構触っていましたが、DTMソフト?は始めて。。その割にはすぐに使用方法も理解できました。
・コマンドボタンを押しながらのクリックは、小説を追加したり、音を足したりする作業になります
・コマンド+t で現在の再生位置部分で小説を分割。
・コマンド+j で選択した小説を結合
このくらい分かっていれば、ほぼなんでもできます。後はセンスです。(え。。)
余談ですが、GarbageBandで始めてTouch Barにお世話になりました!結論から言いますと便利です!ToneやDriveなどの楽器のつまみを表示してくれたのですが、これが直感的にできて非常に扱いやすい!touch Barはこういった作業には向いてますね!なのでもしかしたら、画像編集の方なども、使い方によっては便利機能へと変貌するかも!なにせ自分でカスタマイズできるので、ものすごいポテンシャルを持ち合わせてると感じます!
UnityでのBGMループ
ループが可能なように、曲の切れ目を無くしてエクスポートしたのですが、Unityでの再生時に途切れてしまいました。おそらくLoadするときに何か起きてたりするのかな?で、これですが、mp3音源を再生するとなるようです。oggやwavなら切れ目がなくなるらしいです!試しに、oggに変換してループをオン。。無事、切れ目なくループすることができました!
こちらのサイトで変換が容易にできます。
http://media.io/progress.jsp;jsessionid=BDBB8A69AE099A8D2B0CCDE9569A958E
こちらも余談ですが、GarbageBandで書き出した際、後ろに空白の時間が勝手に書き出されてしまいますので、他のソフトで編集して切り取りました。もし、GarbageBandの方で可能な設定等ありましたら、教えてもらえるとありがたいです。。