Unite2018に行ってきた!

行った講演のまとめとか

Negipoyoc

Uniteに行ったおかげでユニティを完全に理解することが出来ました(東京都 26歳 男性)

(嘘です)

はじめに

Unite2018に行ってきました。

些細な問題 is 会場動線。

Unite2018に行ってきた

DAY2,DAY3ともに面白い!!って思う講演が多かったです。DAY3の最初はマジでどれに行こうか迷った。動画公開されたらそれ見て勉強しようと思います。

ちなみに初日の基調講演では、Unity2018情報を全く追えていないのが浮き彫りになり、最近の不勉強を恥じて急いで帰って勉強しました。

そして、その間に謎飲み会(VR界隈の識者がなんか集まる会)があったらしく、普通に機会を損失しました。最近の勉強不足が原因なので今後はしっかり学んでいって、不意の飲み会に備えてゆきます。 こういう場では交流も大事だからな…。


それはそれとして、今回はかわいい女の子を動かす技術とVRの本屋の次の実装を考慮してそういった講演ばかり聞いてきました。

なのでどんな話だったかを軽くまとめていきますのでよろしくおねがいします。間違っていたらTwitterのリプなどでご連絡ください。ちなみに理解できていない講演はふんわり書くことになるので察してください。

『崩壊3rd』開発者が語るアニメ風レンダリングの極意

高品質のアニメ調レンダリングを様々なプラットフォームで実現していくことについての講演。

自分にとっては高度な講演で、あまり理解が追いつかないままメモをとるだけの人間になってました。基礎知識がないとダメな講演だった気がする。(BEGINNERじゃなかったのでそれはそうだ。)

例えば雲を作るという部分で、マルチレイヤーのシェーディングを行っている話だったけど、雲の部分ごとにレイヤー分けして合成することがなぜ軽量化につながるのかわからなかったですね…。

とはいえ全部がわからんというわけでもなく、影の解像度を意図的に落として処理を軽減等チラホラ理解できる部分もありました。

全体的に「複数のレイヤーやチャンネルを使って表現のクオリティを担保しながら軽量化する」という事例が多かったですね。それが何故軽量化につながるのかよくわかってないので本講演の具体例を元に勉強しようと思います。

Oculusで作るスタンドアローン・モバイルVRコンテンツ

要はOculus Goでものづくりしよう+αって講演です。

Oculus Go開発は基本的にGearVRと一緒なのかなと思ってましたが、機種判別が必要な場面がある(例えばGoでしか使えないAPIがあるなど)とのことなので、Goを使ってコンテンツを作る開発者は一度見たほうが良いですね。

他に知っておくと良いと思うTipsがあったのでまとめておくと

  • OVRPlugin.productName == “Oculus Go” で機種判別
  • アイバッファ解像度の向上をScriptから行える。XR.XRSettings.eyeTextureResolutionScale = 1.25f;みたいな感じ(2017.2以降)
  • フレームレートの向上をScriptから行える。OVRManager.display.displayFrequency = 72.0f;みたいな感じ(Go専用)

2,3番目についてはパフォーマンスが関わってくるので、パフォーマンスに余裕があればやりましょうね。という方針を井口さんが話してました。

あとOculus Storeの仕組みが面白くて、リリースする/しない以外にもレビューや即売会向けを目的として限定公開できるってのは良いですねって思いました。


ついでに、Goで開発する時は多分これが使えると思います。Touch持ってる人はやってみると良いかも。

VR空間構築ソリューション『NEUTRANS』開発の裏側

タイトルの通りの講演です。どう方針から実装していったのかという講演

NEUTRANSは展示もあったので行ってきました。

前回NEUTRANS体験した時は2017年3月のSVVRの時でしたが、その時からUIや動作がすげー進化してました。(UIのアイコンクリックは人差し指でクリックさせる方式のほうが個人的にはわかりやすかったかも…) 個人的には、操作感に上品さを感じました。体験の完成度は非常に高いように思えました。

講演で、思わずなるほど~って思ったのはUIを見やすくするのに高速道路や空港の看板を参考にするってやつですね。そういう発想もあるんだ!って非常に参考になりました。

エディター拡張マニアクス2018

VR本屋ではアセットバンドルのビルドにエディター拡張をふんだんに使ったんですが、めちゃくちゃ古い時代のEditor拡張知識しかなかったので聴きに来ました。

まさにここ3年間のEditor拡張新機能を振り返ろうとのことだったので、想定される聴講者層に合致していたのもあり非常にためになる話がありました。


特にUIElementsが楽しそうな機能だなと。エディタ拡張では基本的にIMGUIで管理されてますがコードがとても冗長になる上に一度作ってしまうと拡張がとてもしにくい。処理も追いづらいしね。

それをふまえて、UIElementsでは以下の要素から同等の機能を作成して行けます。
VisualTree
 →XMLやHTMLに似てる
UXML
 →XMLやHTMLに似てる
USS
 →CSSに似てる
UQuery
 →document.querySelector やJQueryに似てる。
 →配下のボタンを全て取得するとかコードが書ける。
Visual Container
 →containerをGetRootVisualContainerで取得して、そこにAddしていくことえEditor拡張していく。上記4つで構築したものを流し込むウィンドウ的な?
 →このContainerを取得して、Treeを流し込む。そのあとUSSを適用できる。

こんな感じでWebライクな構築ができるので個人的には非常に朗報です。機能的にもこれだけ揃っていたらIMGUIからおさらばするには十分でしょう。

とはいえ、まともにユーザが使えるようになるのは2019.x後半とのこと(37ページ)なのでゆっくり待ちましょう。全く使えないわけではなくEditorWindowのみは現状サポートするようです。

バーチャルYouTuber電脳少女シロがご紹介する注目Asset100連発

気になったアセットとかいくつか紹介します。この講演に限らずかわいいキャラクターが登壇するセッションどんどん増えてほしいと思う。

(シロちゃん好きだし楽しく聞けたのだけど、一部聞き取りづらいところがあったので個人的にはもうちょっと説明口調でやってほしかったかなと思いました。)

36.AssetHunter

27ドルのUnityプロジェクト内の未使用アセットを探して削除することができるアセット。

開発中に作ったゴミとかリソースをいちいち片付けてると開発に集中できないのでこういうアセットがあるのは嬉しいですね。リアルおうちも最高に汚くなったらまとめて掃除したい派です。

(2014年リリースらしいけど、今まで知りませんでした…。)


80.6000+ Flat Buttons Icons Pack

5ドルのUGUIてんこ盛りアセット。

6000+と言っているが、実際は1万くらいあるらしい。UGUIボタンリソースはよくライセンスフリーなものを探してくるけど、案外見つからない上にサイトによってテイストが違うから結局Photoshopなどで自作することが多いんですよね。 こんだけまとまっていればまずそういった問題ないのでは~と思います。


94.Poly ToolKit

無料のGoogle Polyから3dモデルをダウンロード出来るアセット。

もちろんアプリ実行時でも、モデルを検索して動的にロードしてくれる機能を持ってます。(使うにはGCP上でAPIキーを有効化する必要があります。)

ユニティちゃんトゥーンシェーダー2.0使いこなしスペシャル

UTSにはお世話になっているので話を聞きに来ました。お世話になっていると言っても正しく学んだことがなかったので、正しい知識を持っておこうと思って来たやつです。

まぁやっぱり崩壊3rd講演の時同様、基礎知識が必要なやつだったのでこのブログを書いたらまた学び直します…。(RimLight良さそう!くらいのふんわり理解しかない。)

使いこなすためには!

  • 元のモデルとなる絵を見てモデルを作るが、愛を察することが大事
  • UTSのパラメータは画材のようなもの、絵をよく見て、Shaderでどう表現しようかなというのをUTSで。
  • とりあえず触ってみる。効果が出やすいので触ってみると勘所がつかめる。(←わかる。とりあえず触らないと何も始まらねぇ…)
  • 画像を付けて#unitychanでツイートする。質問して悪いことはない。
  • 皆さんの好きなキャラクターを3D表現したい気持ちを楽しみながら昇華していってほしい。

という皆さんの解答を心に刻んで、とりあえずミクさんやユニティちゃんを題材にいろいろ触ってみる感じにしようかなと。

ゲームの中の質感

トゥーンシェーダートークセッションが立ち見も入れない状況になったので急遽来たやつです。

結果的に1日目で1番面白かった講演でした。(「ジブリの映像を入れたから一応スライド非公開にした」という面白ポイントもあったけど、Interestingな面白いを指しています。)

群れやBOIDや思想の話から始まって、(ここUniteだよな…?)と思ったのもつかの間、そういった思想をベースに作ったHUMANITYというゲームの話しになり、v0.1~v0.4になるにつれ、群れをゲームへ昇華していく道のりを講演の限られた時間で鮮やかに描いていて見事でした。

特にv0.3で「これってデザイナーが面白い物作れたからゲームにしようってやっただけでしょ?」ってレビューをされてバレたかwってなってからの、v0.4の映像が始まり一気に「ゲームだ!!」ってなる展開があり、内容はもちろん講演のやり方もかっこよすぎて思わず唸ってしまいました。

質の見極め、現象をデザイン、ゲームとして組み立てる、世界観やストーリーを連想 を繰り返していくとのこと。

残念ポイントをあげると、技術的なところは一部だけであとは時間が押しており10枚ほどスライドを飛ばして終わってしまったのが残念!非公開だから二度と見れないスライドだし、是非ノウハウを聴きたかったところでした。

Anicast!東雲めぐちゃんの魔法ができるまで

Anicastは東雲めぐちゃんの生放送で使われるツール。 何をしたらキャラクターが生き生きとするのか。 単なるFinal IKではキャラクターに「魂」は入らないということで、表情や動き音の観点からそれらを要素に分解して解説した講演でした。


魂を込める話

目の表情
→目だけが動くことはない。というのは、向く方向によって瞼が動くという話。
リップシンク
→OVRLipSyncを使ったけど、そのままでは滑らかすぎてアニメ調のキャラクターに対しては不自然
→なのであえて口の開きを3コマにすることでアニメ的な表現を追求した
感情の流れ
→一つの喜びの中に複数の表情があることを意識するということ。「感情の輪」でググると講演で使われた図が出て来る。


プレゼンスの話

一番感心したのは、Vtuberにありがちな腕や胸が体にめり込んでしまうことへの対処。
例として肘の位置を制御するわけだが、例えば肘が体にめり込もうとした時減速させながら段階を踏んで止めるということ。
人間の動きからすると、ぴたっと静止するとおかしいのでという理由だったけど、すごく納得してしまった。魂は細部に宿るを改めて痛感しますね。


音の話

OVRLipSyncの改造の話は前から興味があって、吉高さんのQiitaを追っていました。

また、彼がちょくちょくツイートしていたのも見ていて、AudioClipからのデータを使う話も事前に知っていました(Bruceが来日した時にFTHで話を聞かせてもらった)。OBSで映像を遅延させる話も。
ただ、250msまで軽減してOBSで映像を遅延させて映像の違和感はなくした!となってもなおBGMに合わせて歌えないという問題があるのはこの講演を聞いてなるほどなーって思ったところでした。

よし俺も見習って実装しよう!というところにまさかのAniLipSyncの公開…神か?
これから触ってみようかなと思いました。

マジで!?Unityだったの!?次世代エンターテイメントの裏側

※スライド/動画非公開、かつ、内容をSNSやブログに公開するのも禁止な講演だったので内容は書きません。

超歌舞伎を含めたいくつかの手がけたライブを例にあげて

  • 現場特有のエラーを解決する話
  • 特殊な条件のもとこんな演出をしたけど裏方ではどうやって実装したの?

等のノウハウの講演でした。とても興味深く聞いてました。この講演は非公開なのも相まってUniteでの最大の”お土産”かもしれない。

イベントの現場対応というお仕事も何度かこなしてきたけど、本当にこの規模になると緻密な計画が必要になるし、それでもまだ予期せぬことが起きるんだなと、改めて身の引き締まる思いがしました。

(それと、問題解決のためにゴリゴリのエンジニアリングが発揮されてたのがまた良かった。)

そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説

この講演ではいくつかの新機能のキーワードとともに新しいワークフローについて解説されました。VR本屋の辛いワークフローが改善されるかも?と割と熱を持って聴いてました。

複数の新機能をまとめた概念が「Addressable」であり、新しいワークフローということでいいのかな?新機能が山程あったけど、1つ1つ解説があったおかげでそこまで迷わず

時間がない人は40ページに全てまとまっています。

新機能:AssetReference(9~16ページ,29~32ページ)

今までは文字列でアセットを指定して、ロードする方式だったが、それをPrefabで指定できるようにInspector上で指定できる。
 →つまりアセットの場所を変えても大丈夫!名前を軽い気持ちで変更できるようになった。
 →適当な文字列をラベルとしてつけられることによってラベルで限定して指定したり、そうでなくても型で指定できたりする。(29~32ページ)

新機能:参照カウント(17ページ~21ページ)

Addressblesには参照カウントという機能がある。この機能を使うことでリソースのインスタンスのロードや破棄が可能
 →この機能を用いてインスタンス化した場合は、必ずAddressablesのReleaseメソッドを使うこと

新機能:グループ(22ページ~27ページ)

Addressable Toolによって、アセットの配置場所やパッキング方法、ロード方法などをグループ毎に設定できる
 →グループを変えてもコードは一切変更しなくて良い。
 →パッキング方法
  :アセットのまとめ方(単一/個別)やビルド時に配置する場所、ロード時に使うパスなどを設定可能
 →ロード方法
  :ローカル(StreamingAssets)/リモート(任意のサーバからUnityWebReqで)/アドバンスド(任意の場所から任意のロード方法で)

新機能:コンテンツカタログ(28ページ~21ページ)

上で設定したアドレス、ラベル、グループの情報を記録するデータ。依存関係も記載されている。
 →ビルド時などに自動生成されるメタファイル。
 →リモートのグループ利用時にはリモートにも配置可能。
 →リモートのカタログはHashデータによる更新検知を行って更新があれば自動で取得してくるという挙動

新機能:プロファイル(33ページ~35ページ)

データのロード場所やビルド場所を用途に合わせて設定できる。(超便利だ…) またこのプロファイルを保存しておき、テスト時にはこのプロファイル…リリース時には…といった運用が可能。こういう仕組みを自分で作らなくて良いのはありがたい。

新機能:プレイモード(36ページ~37ページ)

エディター実行時にデータをどのようにロードするかを変更できる
 →FastMode:AssetDatabaseからロードする/パッキングする。早いがProfilerで得られる情報が少ない
 →Virtual Mode:Fastモードと似ているが、Virtual AssetBundleを使って挙動をシミュレートする。速度制限もできて、AB利用時の動作に近い環境で開発できる。
 →Packed Mode:パッキングを行い、ABからデータをロードする。実機での動作と同じ

新機能:RMProfiler(38ページ~39ページ)

アセットバンドルやアドレス月アセットのロード/アンロード、参照カウント数を可視化。


これらの内部の動作は40ページ~にまとまっていますね。すげー面白かったです。

絶対うまく使いこなしたいと思う。

終わりに

Unite 2019までの目標が既に定まっているので頑張っていきたい。