Onoty3D

Unityに関するメモとか

SDユニティちゃんでファイティングユニティちゃん

先日開催されたGGJ(Gloval Game Jam)に向けて、ユニティちゃんの公式でSDユニティの新作「SDこはくちゃんズ」が公開されました。
unity-chan.com
さっそくクアッドアローさんのファイティングユニティちゃんのモーションを適用させたりして、遊ばせて頂きました。




ちなみにユニティおじさんは、元の体のサイズをパーツ単位で調整して無理やりSD化しましたw

ところでSDユニティちゃんにファイティングユニティちゃんのモーションを適用させると、目がグルグル回っちゃうようになります(結構怖い)。
f:id:onoty3d:20160201150604p:plain:w364
はみ出ることも。

幾つか解決法があるので紹介します。

解決法1
参考:
SDユニティちゃんでキック技モーション|ゆにてぃメイト
SDユニティちゃんとファイティングUnityちゃん - ぬる湯の端書
上記ブログで言及されているように、モーションに対してHead部分だけマスクをかける方法です。
ブログ内にも言及がありますが、Head全体がマスクされてしまうので、Headの角度がおかしくなるモーションもあります。

解決法2
HumanoidのConfigureで目のボーンを未指定にすることで、目をモーションの対象外に出来ます。
f:id:onoty3d:20160201150624p:plain
f:id:onoty3d:20160201150632p:plain
この場合、頭はちゃんと動きます。
ただし、Mecanimの機能を使った視線操作等は出来なくなります。
自分がtwitterに投稿したGIFアニメは、この方法を使っています。

解決法3
蛇モーションで遊んでいた時、ガニ股になってしまったSDユニティちゃんの足をスクリプトで回転させて内股にする、という方法を学びました。


SetBoneLocalRotationというメソッドを利用することで、任意のボーンの回転を制御することが出来ます。
この方法で、足と同様に目のボーンの回転をスクリプトで制御できます。
事前にAnimatorのlayerの設定でIKPassにチェックを入れておいてください。
f:id:onoty3d:20160201162058p:plain
ソースはこんな感じ。特にパラメータをいじらなければ、両目の回転が角度(0,0,0)で固定され、グルグルしなくなります。

この方法だと、目の回転を固定したい時だけスクリプトを適用すればいいので、スクリプトさえ用意してしまえば一番お手軽かもしれません。

ユニティちゃんライセンス

この作品はユニティちゃんライセンス条項の元に提供されています

Unityで手書き文字認識

 

 

メモに留めますが、何かの役に立てば。

・字を書く
→LineRendererを利用。
 Unity - マニュアル: ラインレンダラー


・解析する
Microsoft.Ink.dllを利用。(System.Windows.Ink.dllとIACore/IALoader/IAWinFX.dllとかでもOK)
解析法は「C# 手書き」とかで色々出てくる。
 Windowsフォームのインク機能① | WDN Engineers' Blog
 手書き認識

 

ASP.NET Web APIで頂点の集まりを受け取るAPIを作って、受け取ったら解析して結果を返すようにしました。
なんでわざわざAPIにしたかというと、dllを直接Unityのプロジェクトで使おうとしたら、上手くdll内のクラスのメソッドが呼べなかったから。
Mono絡み or .NETのバージョン絡み?上手くやる方法もあるのかもしれない。
でも多分Web APIにしたほうがOS依存も無くなり、スマホアプリから呼んだりも出来るはず!

ちょっと嵌りそうなところは、UnityのY座標とMicrosoft.Ink.dllとかのY座標の正の向きが逆なこと。前者は上方向が正、後者は下方向が正。
そこだけ上手く変換してください。


ちなみにdocomoのサービスの手書き文字認識APIというのも試してみたのですが、一文字ずつしか認識できないので、ちょっと面倒くさかった。

FaceRigでプロ生ちゃんになろう

2016/01/13 
アイコンや名前、説明を設定するための説明が書かれたドキュメントへのリンクと注意点を追記しました。

流行ってますね、FaceRig。
GOROManさんがFaceRigを使ったゲーム実況をしてから、いろんな方がFaceRigを楽しんでおられるようです。
これこそバーチャル!FaceRigとボイスチェンジャーで美少女キャラによるゲーム実況が実現 | MoguraVR

実況のやり方も公開されていますね。
中の人(二次元)になる方法【FaceRig × Live2D × Unity × OBS × AVVoiceChanger × 気合】 - Qiita

 自分も先日ちょっと遊んでみました。
・FaceRig + LeapMotion

 ・顔テクスチャを変えてみるとか

 

他に遊び方はないかな、と考えていたところ、MaruchuさんがFaceRig Live2D Moduleを利用した自作アバターを作る方法を動画でアップしてくださっていました。

うむ。これは、やるっきゃないぜよ。
ターゲットは例に漏れずプロ生ちゃんで…。
先のアドベントカレンダーでは、プロ生ちゃんになった方が二名ほどおられましたが、これで自分もプロ生ちゃんになれる!!!


FaceRig Live2D Module用のデータを作るには、顔パーツを分解したPSDデータを作る必要があります。
プロ生ちゃんの場合は3Dモデルがあるので、適当にパーツ単位でマテリアルを非表示しながらキャプチャを撮っていけば、比較的簡単にデータが作れます。

あとはMaruchuさんの動画にしたがってデータを作っていけば、うまくいきます。
※ちなみにPSDファイルはPhotoShopでなくても作成できるフリーソフトがありますので、PSDだからといって諦めてはダメです!自分はずっとPixiaを愛用しています…。


少し動画に補足をするなら、Live2D Cubism ModelerにPSDファイルを取り込むとFaceRig用のテクスチャが作成されるのですが、テクスチャサイズは大きめに指定したほうが綺麗なアバターが作成できます。
f:id:onoty3d:20160112203824p:plain

ただしFREE版では2048サイズの1枚より大きなものは作成できないようです(保存しようとしたら怒られる)。
またテクスチャは自動で作成されますが、PSDファイルの各レイヤの透明部分を自動でトリミングしたりはしてくれないので、各レイヤはフルサイズでなく画像サイズに合わせて作成していたほうが無駄が少なくなり、より多くのパーツ分けが可能となります。

・全レイヤフルサイズにしちゃったやつ
f:id:onoty3d:20160112203858p:plain

・画像サイズに合わせてレイヤサイズを調整したやつ
f:id:onoty3d:20160112203914p:plain

もう一つ、テンプレートを適用させる部分ですが、動画内でも言及されている通り、基本的にテンプレを重ねるだけでは上手く行きません。
ただ各パーツにカーソルを合わせると、それが現時点でどのパーツと紐付いているかが表示されるため、テンプレ・自作アバター共に紐付けたいパーツを選んでから「選択要素を対応付け」すれば、上手く行きます。

こんな感じで表示される。
f:id:onoty3d:20160112204209p:plain

パーツを選んで「選択要素を対応付け」

f:id:onoty3d:20160112204237p:plain
それでもその後のパラメータ調整はほぼ必須ですが…。

ともあれここを乗り越えれば、自作アバターを楽しむことができます!!
みんなもやろう!

 

f:id:onoty3d:20160112204348g:plain

f:id:onoty3d:20160112204424g:plain

 

2016/01/13 追記

 Maruchuさんが紹介しておられましたが、以下にLive2D FaceRig Avatars ドキュメントの日本語訳があります。

Live2D FaceRig Avatars ドキュメント

ちなみに原文はFaceRig Live2D Moduleインストール時に下記フォルダに作成されていると思います。Steam\steamapps\common\FaceRig\Bin\Tools\Docs\Live2D_Facerig_Avatars_Documentation.pdf

これに書かれている内容に従えば、?表示だったアイコンや名前、説明などを設定することが出来るようになります。

注意点として、*.cfgファイルはUTF8N(BOM無UTF8)で保存したほうがいいようです。
そこでハマって1時間飛んでいったので…。

 上手く行けば、アイコンや名前、説明が表示されるようになります。

f:id:onoty3d:20160113134440p:plain

 

白枠シェーダ適用版プロ生ちゃん

プロ生ちゃんでいろいろとネタをやっているのにマスコットアプリ文化祭に参加しないのはもったいない。
というわけでアプリではないですが、文化祭用に以前作成した白枠シェーダ

をプロ生ちゃんに適用させたUnityPackageを公開したいと思います。

DownLoad

UnityPackageに含まれるのは白枠シェーダとアニメ風に修正したプロ生ちゃんモデルのテクスチャ、それらを適用させたプロ生ちゃんモデルのプレハブです。
プレハブしか含めていないので、利用の際は公式で公開されているプロ生ちゃんモデル:Unity5(ver2_model)も同一プロジェクトにインポートしてください。

 

また、Assets>PronamaChan>ScenesにSampleOuterFrameというサンプルシーンを同梱しています。

ただプロ生ちゃんが立っているだけのシーンですが見た目の確認にどうぞ。

f:id:onoty3d:20151222201515p:plain

注意点としてColor SpaceをLinerにしないと綺麗に見えません。
エディタメニューのEdit>ProjectSettings>PlayerのOther SettingsにあるColor SpaceでLinearを選んでください。

f:id:onoty3d:20151222201542j:plain

またImageEffect等を加えると、より良い見た目になるかと思います。

プロ生ちゃんの目をハートやしいたけにする

日付は過ぎていますが、プロ生ちゃん Advent Calendar 2015 16日目がブランクだったので穴埋めします。

qiita.com

プロ生ちゃんモデルの眼は、瞳のSubMeshの上にさらにハイライト用のSubMeshが載っています。
ハイライト用のテクスチャを診てもらうとわかりますが、テクスチャの一部分しか実際には利用していません。

f:id:onoty3d:20151218185227p:plain
※分かりやすいように背景を黒にしましたが、実際は透過です。

なので、余白の部分の利用して瞳にハートを重ねたり、星を重ねたり(いわゆるしいたけ目)出来るようにしてみます。

やりかたは簡単で、単純にテクスチャにハートや星を書き込むだけです。

f:id:onoty3d:20151218185755p:plain

プロ生ちゃんモデルのTex_eyeLightマテリアルのテクスチャを作成したものに変更し、マテリアルのインスペクタからテクスチャのOffset値のY値を0.3とか0.5とかに変更する(※)と、ハート目やしいたけ目にすることが出来るようになります。
※作成したテクスチャに合わせて微調整してください

f:id:onoty3d:20151218190141j:plain

f:id:onoty3d:20151218190148j:plain

プログラムで動的にオフセットを変更したい場合は、マテリアルに対してSetTextureOffsetメソッドを呼んで設定してください。

SetTextureOffset

 

iTweenなんかでTweenアニメーションさせて切り替えると面白いかも。

f:id:onoty3d:20151218190700g:plain

 

Kuler Islandsでテクスチャ編集用マスクを作る

プロ生ちゃんAdvent Calender 2015 13日目の記事です。

qiita.com

先日、Kuler Islandsというソフトウェアの紹介記事を目にしました。

Kuler Islands - OBJファイルからUVアイランド毎に塗り分けたUVマップを生成出来るツールがGithubにて公開!

3dnchu.com

記事にある通り、「OBJファイルから、UVアイランドで塗り分けたテクスチャ画像を生成する事が出来」るソフトウェアです。

これを見た時「テクスチャ編集時のマスクとして使うのに便利だな」と思いました。
アニメ風テクスチャを作る際など、モデルに同梱されている元のテクスチャに手を加えることが多々あるのですが、テクスチャだけ見るとどこからどこまでがどの部分なのかはっきりとはわかりません。
3Dモデリングツールとか使えば分かるのかもしれませんが、使い慣れていないので…。

というわけでプロ生ちゃんで試してみました。
なおプロ生ちゃんのモデルデータはFBX形式なので、OBJ形式に事前に変換しておく必要があります。
(Kuler IslandsはGitHubで公開されているので、頑張ってFBX形式にも対応させる、という手もある)

FBX→OBJ変換は
Autodesk FBX Converterや、Unity上でやるならObjExporterなどが使えるとおもいます(自分は後者のソースを多少いじって利用)。

ObjExporter - Unify Community Wiki

結果がコレ。

f:id:onoty3d:20151213135455p:plain…。

なるほど。とりあえずFBXをそのままOBJに変換したのですが、SubMeshが複数のテクスチャを参照している場合でも、Kuler Islandsが出力するファイルはひとつになってしまうようです
ならば同一テクスチャを参照しているSubMesh単位でOBJファイルを出力させればうまくいくだろうと思い、ObjExporterのソースを多少いじってやり直し。

結果。うまくいきました。

f:id:onoty3d:20151213131239p:plain

(ちなみにpaddingを1にしています。)

幾つかサンプル。

f:id:onoty3d:20151213135559p:plain

f:id:onoty3d:20151213135624p:plain

全部は以下よりダウンロードできます。
プロ生ちゃんテクスチャ用マスク

ちなみにプロ生ちゃんのSubMeshは22個ありますが、同一テクスチャを参照しているグループでまとめると以下の様な感じになります。
0:skin
1-5,15:dress
6:eyes
7:eyelight
8-11,13,14,18:face
12:eyewhite
16,17,19,20:hair
21:tokei

作成したマスクをプロ生ちゃんのテクスチャとして適用させてみるとこんな感じになりました。

f:id:onoty3d:20151213135735p:plain

胸の話

プロ生ちゃん Advent Calendar 2015 (何でもありの方)  12日目の記事です。

www.adventar.org

 

モデルのボーン名、腕や足なんかはどのモデルもArmやLeg等表現が統一されているのですが、胸は意外とマチマチです。
自分がよく使うモデルたちが、面白いくらいにバラバラだったので、まとめてみました。

社畜ちゃんf:id:onoty3d:20151210195224p:plain

bust

バスト。胸の英語表現としては一番一般的な気がしますね。大人の胸って感じです。

 

ユニティちゃんf:id:onoty3d:20151210195513p:plain

Mune
胸。日本語か!世界に羽ばたくユニティちゃんですが、意外と日本語名が含まれています。

 

クエリちゃんf:id:onoty3d:20151210195540p:plain

Pai
ぱい。ぱい、て。お馬鹿な感じがしていいと思います。

 

中野シスターズf:id:onoty3d:20151210195616p:plain

Chest/Breast
チェストとブレスト。ふたりともChest配下にBreastが設定されてます。
これもまぁ耳にする英単語ですね。
「ちょっと難しい単語使っちゃうぜ、どやぁ」っていう若々しさを感じます。

 

ニコニ立体ちゃんf:id:onoty3d:20151210195735p:plain

tit
チット。こんな単語知りませんでした。お勉強になります。
ひかえめな語感がニコニ立体ちゃんにあってます。

プロ生ちゃんf:id:onoty3d:20151210195819p:plain

(ボーン)がありませんでした。