SD版ユニティちゃんでユニティちゃんのモーションを使う

 2015-01-01

あけましておめでとうございます。 
さて、新年一発目の記事は
SDユニティちゃんで本家ユニティちゃんのモーションを使う方法を試してみました。


sss0_3.jpg
まず、何もせずにユニティちゃんのモーションを設定すると
こんな風に髪が変になってしまいます。このままではとても使えませんので…


sss0_5_201501012204455b2.jpg
使いたいアニメーションのプレハブを選んで、インスペクタの上のほうにある「Animations」を選んでから、
下のほうにある「Mask」のメニューを開き、「Definition」→「Create From This Model」を選んでApplyを押して更新します。
(Maskを開いたときにCreate~がすでに選択されていても、とにかくもう一度選んでApplyを押します)
※右下のアニメーションのテスト欄にSDユニティちゃんのモデルをドラッグ&ドロップして、
表示させておいたほうが良いかも?
Applyを押して、テスト欄のモデルが正常に表示されるようになったら成功です。

sss0_7_2.jpg
AR用ポーズの場合でも同じようにPOSEを選択して、Mask→Create From This ModelでApply。


sss0_2.jpg
あとはMecanimなどでアニメーションを設定して、モデルに追加するだけです。


【おまけ】
sss10.jpg

ポーズをつけながら表情(モーフ)を変える方法の一つ。
Mecanimにレイヤーを追加して、SDユニティちゃんの表情用Maskを設定してWeightを1に。
あとは変えたい表情をインスペクタで設定したら完了です。
 
 
タグ :

こっち向いて機能の実装

 2014-11-02


今回はUnityでカメラの方向に向いてもらう方法をまとめました。
体全体ではなくて、キャラの顔だけこっちに向いてもらう方法です。

3Dゲームとかで、プレイヤーが近づくとNPCキャラがこっちを向く…というのを
よく見かけますが、それをUnityで出来るようにしたかったのです。

頭を回転させるわけですから、最初RotationとかQuaternionとかで回転させたのですが、
これだと頭があさっての方向に向いてしまうことに…
なかなかうまくいかなかったんですが、こちらのサイトの記事で解決策が見えました!


Unityでキャラクターに見つめてもらう - 銀の弾丸、はじめました


キャラを向かせるための専用アセットがあったんですね。
ってことでさっそく『HeadLookController』をインポート
MK00.jpg

シーンを開くと胴長短足のおっさんが出てきまして、
ボールを動かすと、その方向に視線を向けます。
このスクリプトをいじっていきます。
MK01.jpg

UnityChanモデルにHead Look Controllerスクリプトをつけました。
Element0 の First Transform、Last Transformにはモデルの胴体のボーン
Element1 の First Transform、Last Transformには首と頭のボーン
あと、Non Affected Jointsには、左手、右手のボーンを割り当てるっぽい?
MK08.jpg

どの部分がどういう名前か、とかはモデルをMecanimで開けばわかるっぽい
MK03.jpg

カメラにCursor Hitスクリプトをつけて Head Lookの部分にターゲットになるモデルを設定
MK09.jpg


出来た! …はずなんですが、キャラの視線が微妙にカメラからずれてます。
なので、カメラの子オブジェクトでCubeなどを作り、位置調整してそちらにCursor Hitスクリプトを置きます。
MK06.jpg

カメラではなく、(見えない)Cubeのほうに向くようになりました。
MK07.jpg


とりあえずこれで実装は完了しました。
いやー ここまで来るのに時間がかかったこと…
こんなアセットがあるって知ってたら、もっと早く出来たんですが…



【追記】
さらにわかりやすく解説されている動画を見つけました。
モデルに近づくと視線を向けるやり方などがこれで実装できました。
(ニコニコ動画)


複数キャラで視線を向ける方法にも対応していました。
これは便利ですね
これで複数のキャラがこっちを向いてくれるようになりました。
MK10.jpg
タグ :

BlenderでUnityちゃんのモーションを作るテスト

 2014-10-20
Blender2.72からFBXのボーンを取り込めるようになりました。
これでUnityのアニメーションを作るのが楽になったらしいので、試してみました。
まずはBlender公式サイトから最新版のBlenderをダウンロード。
起動してUIの表示を日本語化しておきます。


次に、こちらの記事を参考にUnityちゃんモデルをBlenderに取り込みます。
blender2.72でUnityちゃんをインポート|とあるプログラマーのブログ

無事、Blenderにユニティちゃんを取り込むことができました。
ボーンも一緒にインポートされているようです。
ここまで出来たらまず保存をしておきます。
保存が終わったら、ここからアニメーションを作っていきます。


ボーンを表示させるとモデルに隠れてしまっているので、
まずはボーンを手前に表示させます。
BLe2.jpg

表示のレントゲンのチェックをONにします
BLe3.jpg

ボーンが手前に表示されるようになりました
BLe4.jpg

アニメーションを作る準備をします
BLe16.jpg

準備ができたらポーズモードにして、ポーズを作っていきます。
今回は簡単にできる『バンザイ』するモーションを作っていきます。

まずはオートIKをONにしておきます。
BLe5.jpg


肩のボーンの○を選択し回転させて腕を上に上げます。
BLe6.jpg

もう片方の肩も回転させてバンザイさせます
BLe7.jpg

できたポーズをキーフレームに登録します。
キーフレーム:挿入をクリック
BLe9.jpg

キャラクター全体をクリック
BLe10.jpg

キーフレームに登録されました。
念のため、再生してみてちゃんと動くかチェックするのをおすすめします
BLe8.jpg

できたモーションをFBXファイルで保存します。
エクスポート→Autodesk.FBX(.fbx)
BLe11.jpg

保存画面で左メニューの
アーマチュアとメッシュにチェックを入れてから、名前をつけてFBXを保存
BLe12.jpg


これでFBXがとりあえずできました!


次はこのFBXをUnityにドラッグ&ドロップしてインポートします。
その後、RigからAnimation TypeをhumanoidにしてApply。
(※こうしないとモデルが正常にアニメーションしてくれない)
BLe14.jpg

アニメーションをループ(繰り返し再生)させたいので、
Rigの隣のAnimationsを選んで、Loop Timeにチェック
ループするとモデルが浮遊するのをふせぐため、Bake Info Poseにもチェック
BLe15.jpg

あとは、モデルにアニメーションを設定します。
AnimatorでMecanimを使ってモーションを設定しました。
BLe17.jpg
BLe18.jpg


これで準備は完了です!
テストプレイしてみると、ちゃんとモーションがUnityで再生されました!
GFBLe1.gif


Blenderの操作はまだ慣れてないので、
間違ってるところや、もっと簡単にできる方法があるかもしれませんが…
とりあえず、今回はこんな方法で出来たということで終わりにします。
カテゴリ :Unity用メモ トラックバック(-) コメント(0)
タグ :

ビルド時の悲劇

 2014-09-20
今回はちょいネタ記事です。

以前のことですが、
Unityで作ったゲームを完成させて、ビルドして配布するぞーって時に事は起こりました。
あれ? なんかグラフィックがおかしい…
よく見てみると…






ユニティちゃんのお顔が悲惨なことに…!!


おかしい、いつもならきちんとキレイに表示されるのに…なぜ!?
ビルド時の設定がおかしかったのか。 光源の設定がまずかったのか。
いろいろいじってみても結果は変わらず…

ふとコンソールを見てみると、シェーダがどうとか英語で書かれてるのを発見。
そこで、モデルのシェーダをMonodevelopで見てみると原因がわかりました。

今回、ユニティちゃんのpackageをインポートした時にフォルダの名前を変えてたんですが、
それが原因で、パスが取得できずシェーダが反映されなくなってたみたいです。
フォルダの名前を『UnityChan』に戻して、再ビルドすると…




正常に表示されるようになりました!

…まぁ、それだけのハナシなんですが

今回の教訓は、インポートしたファイルのファイル名は、むやみに変えないほうがいいってことですネ。
どうしてもフォルダ名を自分でつけたい場合は、
空のフォルダに名前をつけ、そこにインポートしたファイルをぶちこむって方法がよさそうです。
カテゴリ :Unity用メモ トラックバック(-) コメント(0)
タグ :

Unity ちょっとしたメモ

 2014-09-07
Unityをやっていて詰まったトコロとかの解決策をメモっときます




SS3_7.jpg
・ユニティちゃんに武器(アイテム)を持たせたい!
持たせたい体の部分に対応したボーンの場所にオブジェを配置します。
右手に武器を持たせたいなら、Character_RightHand(手首)にドラッグ&ドロップ
こうすると、腕が動いたら武器も一緒に動いてくれます。




SS3_4.jpg
・Animatiorでモーションを変化させると地面に埋まってしまうことがある
設定したモーションが人型と合ってない場合、こうなるっぽい?
たとえば、動物用などのモーションを人間にあてるとおかしな動作になっちゃうという感じ。
なので、モーション元のモデルの設定を変更します。
SS3_2_20140906233544df4.jpg
モーション元のプレハブを開いて、Rig→Humanoid で人間用のボーンを入れてApplyを押します。
(※画像ではunitychanになってますが、実際にはモーションと連動してるモデルで行ってください)
とりあえず、これで地面に埋まることはなくなりました。



・指定した秒数だけ間を作りたい(C# スクリプト)
SS3_3.gif
ツクールでいうところのウェイトです。
一定時間、何もしない状態とか、何秒後かで動作するイベントとかを作るときに。
Invokeと書いて、(飛ぶメソッド, 何秒後に飛ぶか)を指定します。
上だと2秒後にvoid Fire() というメソッドに飛びます。
yoildとかコルーチンとかいうのでも出来るらしいけど、難しくてよくわからないのでした…



・効果音を鳴らしたい
GameObject→Create Emptyで空のオブジェクトを作成して、
Audio Sourceのインスペクターを追加します。
SS3_5.gif
Audio clipに鳴らしたい音楽ファイルをドラッグ&ドロップ
Play On Awakeにチェックを入れると、オブジェが表示された時点で音がなります。
途中から音を鳴らしたい場合はチェックを外して、スクリプトで操作します。

SS3_6.gif
上のようなスクリプト(C#)を書いて、オブジェクトのインスペクターに追加すると、
SS3_7.gif

こんな感じになるので、Audio Clipに鳴らしたい音を登録すると、
audioSource.Play(); の箇所に来ると音が再生されます。
audioSource.Stop(); で音が止まります。
ループ再生させたい場合はAudio SourceのLoopのチェックをつけます。


とまぁ、どれもこれも基礎的な内容ですが、
自分と同じようなUnity初心者の助けになるかもしれないので書いておきます。
もしどこか間違ってる箇所があったら、コメントとかで教えてもらえると嬉しいです。
カテゴリ :Unity用メモ トラックバック(-) コメント(0)
タグ :
≪ 前ページへ ≪ トップページへこのページの先頭へ  ≫ 次ページへ ≫