例のプールでオフ会をしてきたので知見を公開します

No.136 Hanazono Room – ピースタジオ CM・ドラマ・映画・グラビア・ロケの撮影スタジオ

こちらの貸しスタジオです。
たまたま機会があり、3時間コースでプールを借りることが出来ました。
得られた知見を公開します。

f:id:izm_11:20180429175543j:plain

予約

電話問い合わせを行います。プールの3時間貸し切りが約5万円でした。(最短利用が3時間からです)
後述しますがプールのみ利用する場合とプールのある階を貸し切る場合で料金が2-3万円変わります。
目安としては4-5人まではプールのみで大丈夫ですが、大人数になるとプールが手狭なこともあり、階ごと貸し切る方が良いかと思います。今回は3人で借りたのでプールのみのレンタルです。

移動

最寄り駅は新宿御苑で徒歩5分程度です。新宿から歩く場合は10-15分程度掛かります。移動中に飲み物を買っておくと良いです。

現地に到着した後は駐車場側から入り、電話で問い合わせると中には入れます。スタッフさんが迎えてくれ、施設の使い方の説明もしてくれます。

現地での注意点

まず、日中の室温がめちゃくちゃ暑いです。4月末でしたが室温が33度を超えています。プール用のクーラーが無い+天井がガラス張りで日光を思い切り浴びるので、めちゃくちゃ暑いです。
タオルの用意と飲み物の用意を忘れるとつらい目に遭います。遭いました。

また、プール内での飲食物の持ち込みは禁止なので、写真撮影を行う際は小物のフェイク飲み物とかを持ってくるなどの配慮か、係の人に事前相談を行う必要があります(プール以外の小部屋や共有スペースは飲み物大丈夫っぽいです)

f:id:izm_11:20180429172324j:plain

現地の環境

プール手前の3m*3m程度の小部屋にコンセントが2口あります。

f:id:izm_11:20180429181925j:plain

しかしプール内にはコンセントがありません。プール内で電子機器を使う予定がある場合は10mの延長コードを持参しましょう。

wifiはフリーwifiがあります。LINEの友達追加でスタジオのQRコードを読み込むと、idとパスワードが書かれたLINEメッセージが届きます。

また、ルータの設定が変な時は係の人を呼ぶと対応してくれます。 参考までにUnityのダウンロード、githubへのpush,pullが通りフィルタリングは掛かっていませんでした。回線速度は休日昼間に50Mbps以上安定して出ていました。 これはプログラミングを行う上で大変便利です。

VTuber流行ってるので指トラッキング手袋を作ってみた

概要

VTuber流行ってますよね。最近の一押しはアズリムさんです!元気で全力なアズリムさんをみんな見て!!!

www.youtube.com

ええと、話を戻すとHTC Viveを使った全身トラッキングをするとき、演者さんの指の開閉をセンシングするには Valve Knucklesやnoitom Hi5などの未発売(*1)なデバイスが欲しくなってしまいます。発売するの待つより自分で作れないかなあって思って作ってみました。

  • ESP8266+モバイルバッテリーで無線運用
  • 曲げセンサで指の開閉を取得してUnityにデータを送る
  • Unity側でキャリブレーションを実装

あたりを行っています。

作った物

現在こんな感じです!

www.youtube.com

試作基板と手袋で動作確認が終わったところです。

作っている様子

3/8くらいに作ってみようと思ってメモを書き散らして f:id:izm_11:20180325195257p:plain

3/11 にブレッドボード上で動作を確認して基板をガッと設計してFusionPCBに発注(結構送料高いお急ぎプランにしたけど10日くらい掛かりますね…)

  • 3/22 にFusionPCBから基板が届く
    f:id:izm_11:20180322235217j:plain
  • 3/23 にはんだ付けして動作確認
    f:id:izm_11:20180324143516j:plain
  • 3/24 くらいに必死で手袋に針と糸をチクチクして実装します。
  • 3/25 に冒頭動画公開

という感じでサクっとやっています。指の開閉はグーで一回、パーで一回抵抗値を覚えておいて間を補完する感じです。

最近はソフトウェアばかり書いていたので、たまにハードウェア絡むと納期があったり、針と糸にCtrl+Zが無いことに苦しんだりして楽しいです♪

最後に

これ完成したら使ってみたいなーって言う方いらっしゃいましたらTwitterのDMでお気軽に相談ください~

(*1) noitom Hi5が基板発注中に発売しちゃいました…もしかしてこのプロジェクト、ポシャるかも…orz

現実と戦うUNET入門

概要

諸事情でUnityのUNETを使わざるを得なくなった人に対するラーニングパスの提案です。

最初に

それUNETじゃないとダメですか?Photonありますよ?Monobitありますよ?また、リアルタイム性が不要だったらNiftyクラウドあります。 あとソシャゲ的な作りの場合はUNETあんまり使わないですよ。LANじゃないインターネット経由のマッチメイキングはUNETも有料ですよ?

UNETのリリース時に謳われたアップデートが遅々として進まないのは、もしかしたらUNETはUnity的に見捨てられてて、ある日突然deprecatedになるかもしれませんよ。

https://forum.unity.com/threads/unity-hello-is-there-anybody-out-there-p.445978/

また、十分な開発期間が取れるならLLAPIやUDPを元にHLAPI相当を自作するとかも検討に入るかもしれませんよ。

…はい、やりましょう。これも人生です。

UNETがあんまり好きじゃない理由

  • ドキュメントの未整備
  • 様々なバグがドキュメントに記載ないまま 「仕様です」のまま放置されている 例: https://forum.unity.com/threads/onstartclient-called-before-scene-is-fully-loaded.427952/
  • ホストマイグレーション未対応
  • 実践的なサンプルの少なさ
  • 出来る人の多くがPhotonに移行してしまうので、初心者向け資料ばかりある(この記事も初心者向けです。なぜなら僕が初心者なので)
  • 標準のNetworkTransformと標準のNetworkAnimatorすら使い物にならないので自作することになる。
  • SyncListを多用するとランダムにパケットロスする

この辺の話を聞いても、まだやりますか… 一応こういうまとめも訳しています。

UNET Unofficial Documentation (Errors, Workarounds, Best Practices)
https://qiita.com/neon-izm/items/8b98d8fbf590b31c72ef

具体的なラーニングパス

最初に 凹みさんの詳説を全部読む。

tips.hecomi.com

1. ひよこのたまごさんのUNET解説記事を全部読んで順番に試す。 http://hiyotama.hatenablog.com/entry/2015/07/06/153000
ステップバイステップの記事として一番情報量が多い日本語記事です。

2. Tank! Networking Demo.を穴が空くほど突つく。 Tank! Networking Demoは、2018年現在において、 まともな 資料があるUNETを使ったネットワークゲームっぽい作りの無料サンプルとしてほぼ唯一です。絶対におすすめです。 アセットストア https://assetstore.unity.com/packages/essentials/tutorial-projects/tanks-networking-demo-46213

解説動画 https://unity3d.com/jp/learn/tutorials/s/tanks-tutorial

Unityフォーラムスレッド https://forum.unity.com/threads/multiplayer-networked-tanks-demo-q-a.356443/ あと、このサンプルはPhoton版もあるので逃げたくなった時の移植も参考に出来ます(ボソッ)

それ以降
もっと凝った物ということで Tank! Reference Project  も2.と同じような感じですがキャラクター選択などの現実的な追加実装が入っています。また戦車かよ!という気もしなくもないですが…

https://assetstore.unity.com/packages/essentials/tutorial-projects/tanks-reference-project-80165

その他メモ(数か月前の自分に向けたメッセージ)

使う技術の取捨選択はこんな感じ f:id:izm_11:20180305154916p:plain

  • NetworkManager,NetworkdDiscoveryはまともにゲーム作るなら99%の確率で継承した自前版を作ることになる。
  • NetworkManagerを使った純粋なサーバークライアントモデルの資料は少ないのでホストクライアントモデルで作った方がマシ
  • Rpcで呼ばないと各端末のオブジェクトが同期しない。(逆に言うと、同期しなくても良い物はRpcを避けた方がネットワークに優しい)
  • 極論すればNetworkTransformやNetworkAnimatorもRpcの糖衣でしかない
  • 随時ジョイン可能なゲームにすると考えることが一気に増えるのでロビー→締め切り→ゲーム開始 型にした方が良い
  • そもそもネットワークゲームを初めて作る時にUNETを選ぶのは悪手。自分のネットワークの理解が足りないのか、自分のUNETの理解が足りないのか、UNET固有のバグかを絞り込めなくて死ぬ。MonobitかPhotonで始めましょう。
  • UNETのAndroidとUnityエディタの通信は、ウィンドウズのファイアウォール切って試すと通信成功したので、横着するならこれで良い気はしました。

以下随時思いついたら追記

https://forum.unity.com/threads/my-compiled-list-of-unet-bugs-issues.403578/

www.raywenderlich.com

UNET使ったカードゲームサンプル assetstore.unity.com

第1回 VTuberハッカソン(バーチャルYouTuberハッカソン)参加してきたwrite up

概要

2018/2/24-25 で開催された VTuberハッカソンで当日結成した「肉1.5倍」という6人チームに参加してきました。得られた知見とか考えていたこととかを書きます。

peatix.com

作った動画はこちら

www.youtube.com

(で、出来れば暇を見つけてもう少しアップデートしたい!) → 一週間後の03/03でアップデートしました。

チームメンバーにも恵まれ、充実した二日間の開発を経て動画を出して、 アユート賞とCGCG賞と玉置P賞を頂くことが出来ました。嬉しいです!

チームビルディング+企画

結構事前にチームを作ったり一人でやると覚悟を決めていたりした人が多い感じでした。 僕は何も考えてなかったので当日結成のチームです。

企画案は 暁ゆ~き さん 暁ゆ~き@C94 3日目 西ね04b (@AkatsukiWorks) | Twitter が考えたパルクール系YouTuberです。
この企画は以下の3点で技術的にチャレンジングでしたが、まあ暁ゆ~きさん(スゴウデ)とナカジさん(スゴウデ)が同じチームだったし、ナントカなるやろ…って感じでいきました。

チャレンジングな点は

  • 当日ゼロベースのキャラモデリング
  • 広いエリアを使った動画(つまりモーキャプ流し込みでは無理)
  • 360動画出力

です。ハッカソンの勢いじゃなければマジで工数を頂きたい…w

企画のコンセプトアートを暁ゆ~きさんが書いて、 f:id:izm_11:20180225235025p:plain それに併せてYouTube出力時のサムネイメージをナカジさんが作って f:id:izm_11:20180225235150p:plain

全体の方向を決めます。 (このタイミングでslackチームを作って、githubリポジトリを立ててます)
現代世界を舞台にするか荒廃したポストアポカリプスで行くか悩みましたが、ポストアポカリプス良いよね、良い。という気持ちで後者になりました。
企画台本をgoogle documentにワイワイとみんなで書いていきます。

余談ですがこの時に40インチモニタを会場であるアカツキ社さんが貸してくれたおかげでスムーズな台本作業が出来ました。ハッカソン会場に大きいモニタは便利ですね。持って行くのはつらいですが…

特に今回は依頼した声の方が日曜日に対応が出来ないので、土曜日中に台本fixをしなきゃいけない。という点で、割と普通の動画製作案件みたいな進め方になります。(台本→コンテ→モーション→モーションに合わせてシーン調整)

こんな感じの台本というかコンテというか仕様書が1日目の夕方に出来上がってます。 f:id:izm_11:20180226001236p:plain

モデリング+実装

モデリングは ガチンコの方が2名いたので分担して2キャラ(ライムさんとお供ロボットのデコポンさん)を作ってもらってます。この辺りは僕詳しくないので、また適宜追記します。 デコポンさん(このお供ロボット)はCADが得意なスゴウデメンバーがラフスケッチを描いてものすごい速度でモデリングしてくれました。すごい… f:id:izm_11:20180226002023p:plain

普通は2日間のハッカソンでゼロからキャラモデリングしない方が良い、とのことです。

実装です。

1日目の内に要素技術をガシガシ検証していきます。

  • PerceptionNeuron環境セットアップ(会場は結構ノイズ厳しかったですが、別室の会議室はノイズが少なかった!ありがたい)
  • 広いエリアを作って決まったルートを歩かせる(スプラインエディタとfollow splineのコンポーネント+mecanimセットアップ芸)
  • 360度動画出力 (Unity2017.3で、AVProのムービー出力のアセットを使いました。パノラマ出力とPostProcessing Stack v1との相性を危惧していましたが、まあ、ギリギリ使える印象です。ブルームが誤爆したりはしなかったです。つなぎ目は目立ちます)

後はモデルが来ることを信じてユニティちゃんで仮のシーンセットアップを作っておいて、各カット毎のシーンを作ってあまりプレハブ使わない運用でいきます(短時間での共同作業を可能にするための措置で、ハッカソンでなければお勧めしません)

最低限の歩き回り+障害物乗り越えジャンプのmecanimステートを作って、上半身をアバターマスク切っておきます。今回は歩く下半身はmecaimのモーションブレンドセットアップで、上半身はセリフに当てた決め打ちのモーキャプ流し込みを使う事にしました。また、後々使いそうなFinalIKの各種セットアップ+パラメータ調整をユニティちゃんを使って、ここでやっておきます。

こうしておくことでモーキャプデータが綺麗に取れなくても、マスクブレンドを使って(例えば無難そうな胴体周りの微動だけモーキャプを当てるとか)逃げられるようにしつつ、最低限のアニメーションを担保できます。

1日目の深夜に台本音声ファイル+何かあった時に備えて汎用っぽい台詞集を受領。これで決め打ちモーキャプを2日目朝に取れます。 ここまでが一日目っていうか二日目の早朝です。

f:id:izm_11:20180226003713p:plain

気合いで完成まで

2日目 モデルが2日目の昼くらいに1stで上がってきました!素敵!かわいい! というわけでモデル差し替えをしてガーッと実装していきます。

1st:ウェイト適当+仮マテリアル
2nd:ウェイト塗り+仮マテリアル
3rd:ユニティちゃんシェーダーセットアップ
4th:口パクモーフ追加

と、計4回のモデル更新がありましたが、うまいこと差し替えます、1stを出来るだけ早く貰うことで、足幅の矛盾やアニメーションの変なところが無いかを確認出来ます。(実際この1stモデル差し替えタイミングで、シーンの建物配置の調整が入っています) 分かる人向けのハマりポイントとして、ブレンドシェイプ(口パクとか)を追加したタイミングでmeta無しfbxのみ書き換えでの差し替えが破綻するので注意です。

そこから先は根性で出来るだけ頑張るという世界なので、Unity上で手をいっぱい動かすだけです。

うう、記憶が無い…

動画をカット単位で出来たシーンから出力する前に、台本ベースで字幕を用意しておいてもらって、Premiereで連結+出力+Youtubeにアップロード。 をしたところで17:00で開発終了です。

担当範囲と感想

こんな感じで手を早く動かしてUnityでガーっとやってました。実装の見切りとかもやってます。

相当に時間ギリギリまでUnityを触ってて(たぶん参加チームのうち、動画出力が一番最後だったはず)割とヘロヘロになりましたが、審査員の方から感想や賞も頂けて、とても楽しかったです。

特にサマーレッスンの玉置Pさんから褒めて頂けたのは、とてもうれしいです!

企画の時点でビビっと来る素敵な案で、初期にコンセプトアートや雰囲気をチーム内で共有できたことで、残り時間を見ながらの取捨選択もスムーズに行えて、結果的に限られたリソースで良い物が作れたのではないか、と思います。

第二回があるかはわかりませんが、工数は修羅場でも、和気あいあいとした雰囲気のチームでとても楽しかったです。

以下、ハッカソン中のチーム名言(?)集

https://speakerdeck.com/izm/shui-wu-yue-raimufalseri-ke-woshao-jie-simasutuspeakerdeck.com

Unity2017 Game Optimization 2017 Second edition読んだ& 最初の100ページくらいの粗訳

概要

Unity 2017 Game OptimizationというUnityの最適化にフォーカスした本が出ています。ちょうど年末年始休みだったこともあり、ざっと読んでいました。 結構読み応えのある本で、知らなかったことも多くて役に立ちました。

https://www.amazon.co.jp/exec/obidos/ASIN/B076T4TW9G/

  • 1章: プロファイル計測
  • 2章: MonoBehaviourの最適化
  • 3章: Bathingの最適化
  • 4章: Artの最適化
  • 5章: 物理演算の最適化
  • 6章: 動的なグラフィックス最適化
  • 7章: XR向け最適化
  • 8章: C# メモリマネジメント
  • 9章: 他のtips集

という量で350ページです。日本語版無いの?と聞かれることもあったので冒頭2章までくらいの粗訳を書いてみました。読んで面白そうだと思ったら是非皆様の本棚にも加えてみてはどうでしょうか。個人的なおすすめは7章のXR向けパフォーマンスチューニングと8章のメモリ最適化です。

続きを読む