Raspberlyのブログ

Raspberlyのブログ

Unityネタをメインとした技術系ブログです。にゃんこ大戦争や日常なども。そろそろブログタイトル決めたい

【勉強会レポ】: うらゆないと in ZIZAI

勉強会のレポート(メモ)です。
参加したのはこちら「うらゆないと in ZIZAI」
会場はZIZAIさんです。

connpass.com

ハッシュタグ : #うらゆないと

f:id:Raspberly:20200124232725j:plain

Unite Tokyo 2019の公募で落ちてしまった方が登壇するイベントとなっています。

 

 

 

 

会社紹介 ZIZAI

www.wantedly.com

いろんな事業をしています
・配信アプリIRIAM
VTuber事業
・スロパチステーション

その中で最も力を入れているのがIRIAM

最近はジザイトというカジュアル会社説明会をやっています

 

 

 

 

#1 Unity での開発基盤を大公開 〜ごっこランドをささえる技術 総集編〜 

www.slideshare.net

※詳しくはスライドをご覧ください

 

ざっくりプロジェクトの作り方をお話します。

app.kidsstar.co.jp

 

プロジェクト開発からリリースまで、基盤開発に関わる上で気にする点、
ビルドなどのハマリポイントなどについて。

これから話すことは正解ではなく一例です。

Unityの基盤開発まわりでアウトプットする人が増えてほしいという想いもあります。

ごっこランドのお話

ごっこランドとは

未就学児から小学校低学年までターゲットとした職業体験アプリ
実在企業がパビリオンとして出展しています

パビリオン

カジュアルゲームみたいな感じで、月に1,2本パビリオンをリリースしています。

常に新規タイトルがでているが、運用タイトルでもあり常にメンテナンスし続けている。
当然一番最初のコードから新しいコードまで含まれているアプリになります


各パビリオンごとにプロジェクトが独立していて
最終的にマージしていきます。

Unityのバージョンは常に最新に追従しています。
一気にバージョンアップするよりも、追いかけていた方がよい。

 

プロジェクトの初期設定

使っているソフトウェア

Riderはいいぞ。これがないと開発できない。後はフォトショとかイラレとか。
基本3Dはやっていません。アニメーションはUnity標準のものをつかっています。

ライブラリやアーキテクチャ

UniRx/UniTask/Zenject。UniFlowも使っています。
アーキテクチャはClean Architecture。

開発リポジトリ

GitHub上でテンプレートとなるプロジェクトを作っておきます。

解像度対応

モバイルでやっているので、実機の画面解像度をどうするかを決める。
これは最初にやっておかないとしんどくなる。
絶対に表示してほしい領域を決めるといい。 

ディレクトリ構成

アセットごとにフォルダ分けするといいでしょう。
AnimationsやImagesとか、Soundsなどでわけていきます。
Assembly Definitionは細かく分けすぎないようにしています。分けすぎるとしんどくなる。

これもリポジトリ作成時にやっておくといいでしょう

ポイント

とにかく、開発環境やスタイルを整えること
アセットstoreのアセットは使わない。メンテナンスコストがかかる。
作らなくていいものは作らない。

プロジェクト開発

ポイントとなるのは、仕様を決めたらほぼ変えないこと。
開発とこどもテストを高速でイテレーションし、こどもが理解してくれる形にする。

ポイント

できるかぎりはやく、高頻度にビルドを回せるようにする
すると認識のずれを解消できる

Player ビルド

重要なIL2CPPのお話
詳しいブログを書いています。

monry.hatenablog.com

IL2CPP

.NETのILをC++に変換してくれる
Dictonaryを使うとC++のファイルが肥大化する
外部からソースコードを突っ込むとリジェクトされるので注意

 

Asset Bundle

詳しくは去年のアドカレで

monry.hatenablog.com

各パビリオンごとにABでビルドしています。

Strip Engine Code

qiita.com

 

IOSはダウンロードサイズの表記をしなければならない。
今までは事前に計算していたが、今はAddressableがいい感じ。

リリース・申請

審査

AppStoreだけでなく今はgoogle playにもあります
AppStoreはreview guidlineがあるのでよく読みましょう

https://developer.apple.com/jp/app-store/review/guidelines/

子供向けはちょっと制約が厳しくなる

 

最近はstoreに反映されるまで時間がかかることがあるので注意

まとめ

基本はUnityと仲良くなりましょう
最新の公式ドキュメントを読みましょう
Unityだけにとどまらず、配信、サーバーインフラなどの知見をもっているとよい
そんな方を求めています・・・!

www.wantedly.com

 

 

 

おまけ ごっこランドを支える技術とか

monry.hatenablog.com

learning.unity3d.jp

monry.hatenablog.com

 

 

 UniFlowはRoppongi.unity #5のLT7で紹介されました。

raspberly.hateblo.jp

Clean Architectureについては.NET Conf Tokyo 2019の1つ目のセッションで紹介されました。

raspberly.hateblo.jp

 

 

 

 

 

 

 

 

 

#2 iPhoneひとつで「デジタルヒューマン」を実現する!「Emotional LipSync」のヒミツ

Wrap3の紹介がメインです

経緯

2013年

フォトグラメトリでスキャンをいろいろやっていました
Mixamoでボーンを入れて動かしていました

figmaは簡単だったが、フィギュアにボーンを入れるのは大変

2014年

人体スキャンができるようになった、実体キャプチャして躍らせていました

しかし顔が笑顔のまま、顔が変わらず怖い
口が開かないので喋らせることができない

2014 project airina

踊れるかわいい女の子の3Dモデルを作りたかった(UnityChanとかない時代)
TurboSquidでairinaという3Dモデルを購入しました

これも顔を変えられない、効率的に動かす手法もなかった
Blend Shapeもない

※Blend Shapeとは

ボーンによる変形ではなく、メッシュのパターンを作りブレンドすること
制約があり、同じメッシュ同じトポロジーである必要がある

トポロジーとは

メッシュの流れや構成
どこがどう区切られているかということ

2015~2017 暗黒自体

とくにやらなくなった
unity chanでいい気がしてきた

2018 IRIAM

IRIAMの開発に携わっていました

2Dでいいじゃん
3Dで多くのVライバーを出すには難しかった

 

 

たくさん挫折したが問題の原因は3つ

・メッシュを分離できない
・口の中をつくれない
・Blend Shapeを効率的に作れない

いろいろ探してWrap3というモデリングツールを見つけました

 

Wrap3の紹介

Wrap3とは

・メッシュ変形に特化したモデリングツール
・ラップで何かをつつむイメージ
・ノードベースで作れる
バッチ処理もできる

 

仮設 実写3Dモデルをリポトロジーできるか?

※リポトロジーとは

悪いトポロジーを変えること、きれいにすること

あっさりできました

 

ここでデモシーン

 

仮設 アニ文字を実写でできないか?

アニ文字には51種類のBlend Shapeは必要
40体分スキャンしました(左右反転合わせると51種類になる)
大変だが、がんばってやりました


しかし失敗、顔を動かすと破綻してしまう

 

原因は重複した変形してしまった
適当な変形ではだめだった

仮設 51 Sample FaceにベースメッシュをWrap

Apple 51 Sample Face

appleが用意してくれたサンプル


Warp3でベースメッシュ自体を51サンプルにしてしまおう

できました
ベースメッシュを変形させればよい

課題 口を開けると歯と舌がない

aticeノードで歯茎をまるごと配置できないか

Laticeノード

参考モデルの変更前 変更後があれば変形に応じて変形できる
ただし形状が近接しているのが条件

成功しました
51の歯茎パターンを自動生成できました
まつげや目玉にも応用可能

 

 

 

これで当初の問題を全て解決しました
・メッシュの分離
・Blend Shapeの自動化
・口の中の問題

 

 

課題 しわがほしい

・目をつぶった時、しわがあるのがおかしい
・口を膨らませた時ほうれい線があるのがおかしい

仮設 しわあり/しわなしでテクスチャブレンドすればいいのでは?

ShaderGraphを使用しました
BlendShapeの値に応じてテクスチャもブレンド


成功しました
よりリアルに表現できるようになりました

課題 トポロジーは変更したくない

3Dモデルを外注した場合、そのトポロジーを無視するには勇気がいる。
トポロジーモデラーが決め、BlendShapeは自動生成しよう。

仮設 Laticeノードでできるんじゃ

ベースメッシュをもとによせて変形させる

成功
どんなモデルもblend shapeが自動生成できるように

 

これでなにができるのか

Emotion Lipsync

3Dキャプチャと音声合成をとり入れました
通常のリップシンクと顔キャプチャでより自然な感じにできるようになりました

 


ここでデモシーン

 

今後の課題

・よりリアルにしたい

 ただIOSの限界がきている
・眼球
 ガラスっぽい特殊なシェーダーが必要
・口の中
 影の部分をもうちょっとなんとかした

・より安価に

まとめ

Blend Shapeはwrap3で自動化できました
しわ合成はShader Graphでやりました
IOSではURP

 

 

 

 

 

 

 

懇親会

f:id:Raspberly:20200124232815j:plain

f:id:Raspberly:20200124232936j:plain

 

 

 

 

告知タイム

第4回 VRM勉強会

vrm.connpass.com

まだ募集開始していませんが2月26日にやります。
場所はここZIZAIです。

 

Tokyo.blender #1

tokyo-blender.connpass.com

デザイナー向けのBlender勉強会を開催します。
実はLT参加者があまり集まっていません。
UnityでもUE4でもいいのでLTできる方はぜひ参加してみてください。

 

 

タイムライン

 

 

 

 

間違っている箇所、消してほしいツイートがありましたらコメントにお願いします。