VR、ゲーム制作、プログラミング。Unity とか Oculus Rift とか。

2014年2月22日土曜日

[Unity]MMD4MFaceBlink - MMD4Mecanimでまばたき

(2017/7/22 追記) 上位互換の BlendShapeBlink - ブレンドシェイプでまばたき があります。

こちらは MMD4Mecanim モデルでなくても使用可で、MMD の場合でもフェイシャル付きモーションと併用できるなどのメリットがあります。



MMD モデルを Unity で利用できる、Stereoarts さんの MMD4Mecanim で簡単にまばたきをさせるスクリプトです。

配布はこちらの MMD4MFace とまとめて行っています。(どちらかだけでも動きます)

使い方は、以下の画像のように、


モデルかモデルの親に MMD4MFaceBlink をアタッチして、まばたきの表情モーフ名(複数可)を入力するだけです。時間に関するパラメーターは適宜調整してください。

preferredMorphs にモーフ名を入力すると、そのモーフの値が 0 でない間はまばたきしません。笑って目を閉じたり、目が点になっているときにまばたきをしないようにできます。

(Blink Name は空でもよいです。最新版では削除しました。(2015/2/27))


2015/2/27 変更 : blinkName パラメータを削除(使っていませんでした)
2017/7/22 追記 :

[Unity]MMD4MFace - MMD4Mecanimの表情制御

MMD モデルを Unity で利用できる、Stereoarts さんの MMD4Mecanim での表情制御をすこし便利にするスクリプトです。

GitHub : udasan/unity-mmd4mface (GitHub なにそれという方は右下の Download ZIP をどうぞ)

表情モーフを複数まとめたものを一つの表情として管理、制御できます。

使い方は、だいたい以下の画像で伝わるかと思いますが、


モデルかモデルの親に MMD4MFaceController と MMD4MFace (1 つにつき表情 1 つ分) をアタッチして、表情の名前 (faceName) とモーフの情報を入力するだけです。

あとは SetFace(faceName) で表情を変更できます。

また、各 MMD4MFace を無効にするとその表情を無効にできます。

その他、MMD4MFaceController には状態取得系のプロパティ / メソッドがいくつかあります。(詳しくはソース)


利点

  • 複数の表情モーフをまとめられる
  • 表情変更するときに、前の表情モーフのリセットを考えなくてよい
  • モデルごとの表情モーフ名の違いを吸収できる
  • スクリプトに日本語を書かなくて済む

注意点

  • timescale の影響を受ける


もちろん非公式です。(MMD4Mecanim_Alpha_20140216 でいちおうの動作を確認)

Unity 4.3.3f1 現在、インスペクタでの日本語入力がおかしいようですが、以下の記事が参考になると思います。

Unity4.3のインスペクターで日本語入力する方法 | ケットシーウェア


更新があればこの記事に追記していく予定です。


2014/2/20 追記 : 注意点を追記
2014/2/20 更新 : まばたき用スクリプトを追加しました。MMD4MFaceBlink

2014年2月19日水曜日

[Unity]MMD4Mecanimの表情制御 とりあえず版

最新はこちら : [Unity]MMD4MFace - MMD4Mecanimの表情制御

MMD4Mecanim で表情モーフのセットをひとつの表情として管理、制御するスクリプトです。

MMD4MFaceController ダウンロードは上記最新ページから行ってください

画像のようにモデルに MMD4MFaceController.cs と複数の MMD4MFace.cs をつけて、あとはスクリプトで Controller の SetFace("angry") などとしてください。


制御対象のモーフを認識して、明示指定のないモーフは自動で 0 にします。

もちろんMMD4Mecanim非公式です。

開発途上で後方互換性は非保証ですので、それでも良い場合かサンプルとしての利用でお願いします。

(外出中のため粗い文章で失礼しました。)

2014/2/20 追記 : MMD4MFaceController を更新(親オブジェクトにアタッチしてもいいように、他。詳細は Readme)、説明を追加
2014/2/22 追記 : 最新はこちら : [Unity]MMD4MFace - MMD4Mecanimの表情制御

2014年2月16日日曜日

[Unity]Tda式アペミクさんを使う際の設定

MMD モデルを Unity で扱える FBX に変換してくれる MMD4Mecanim などの登場により、Unity & Oculus 界隈で MMD モデルの利用が進んでいるようです。

中でも特によく使われているモデルの一つに Tda 式初音ミク・アペンド さんがありますが、使う際は AL 未使用モーフを 1 にしましょう。


…readme に書いてある内容ですが、MMD4Mecanim があまりにも簡単に使えることも相まって、読んでない人もいるかなーということで。

詳しくはもう Tda 式アペミクさんの readme (よんでね.txt) を見ていただければいいのですが、いちおう簡単に説明すると、上の図の左のほうは発光パーツの色がくすんでいたり、目のハイライトが水色になってたりします。

Tda 式アペミクさんは AutoLuminous というエフェクトを MME で適用させることを想定して作られていますが、エフェクトをかけない場合用の色変えも AL 未使用モーフとして用意されています。

MMD4Mecanim を使っているなら、この設定は MorphHelper を使うのが簡単です。


あと、LightOff モーフも 1 にしてと書いてあるので、合わせてこれもやった方がよいでしょう。ただ、こちらは画面上で違いを見つけられませんでした。

以下は、MMD 上での AutoLuminous と AL 未使用モーフの比較です。


Unity 上でも本気を出してもらうには、特定パーツを発光させるシェーダーを書いたり?したほうがよいのかもしれませんが、できるかどうか含めて詳しくないのでわかりません…。

ほかの推奨エフェクトである Diffusion と SSAO 相当のエフェクトをかけるためにも、やっぱりシェーダーとかアンビエントオクルージョンの勉強もしないとなあ。

2014年2月11日火曜日

[Unity]アップ時に可愛く撮る(カメラの視野角)

写真か 3D について少しでも知識のある人には常識だと思うので、何をいまさらという話になるかと思いますが、自分はこれを今日知って衝撃を受けました。

まずは以下を。


左右ともに、モデルは全く同じで Tda 式初音ミク・アペンド さんです。

違いはカメラだけで、左が視野角 60 度(広角) で被写体に近付いて撮ったもの、右が視野角 10 度(望遠) でやや遠くから撮ったものです。(画面は MMD でキャプチャしたものですが、Unity でも同様です)

顔の大きさがだいたい同じになるようにしましたが、左はかなり歪んでいるのがわかりますね。左しか知らないうちは、これでも可愛いと思っていたのですが…右と比べると差は歴然。

そして、Unity のカメラはデフォルトで視野角 (Field of view) が 60 なのです。


Unity スクリプトリファレンス - Camera.fieldOfView (4.3.3f1 現在)

カメラにあまり造詣がないので、広角かつアップの使い道も実はあるのかもしれませんが、Unity でもアップの画を撮るとき通常は画角(視野角)を狭めて撮るのがよさそうです。

Oculus Rift? あれ用のカメラは現実の視野角に合わせて自動で 90 度超に調整されるから…

参考



2014/2/11 追記 : 参考サイトを追記。