ノンゲーム開発のいろは with unity
TRANSCRIPT
ノンゲーム開発のいろは#TechBuzz 第36回Unity勉強会
自己紹介
あーさん@疾風の雑魚 (@a3geek)
teamLab Inc. Interactive Team / Interactive Artist
Unity3.xの時代からUnity触ってる
仕事で ノンゲーム開発
してる
Interactive / Installation Art
観客が参加することで完成する芸術作品。 特に、コンピューターを用いた作品で、観客の動作に センサーが反応したり、タッチパネルなどの入力に よって何らかの変化が起きたりするものをいう。
from: https://kotobank.jp/word/インタラクティブアート
インタラクティブアート?
http://www.team-lab.net/all/products/kobitotable.html http://www.team-lab.net/all/other/diversity.html http://www.team-lab.net/all/products/stgse.html
ある特定の室内や屋外などに オブジェや装置を置いて、作家の意向に沿って 空間を構成し変化・異化させ、場所や空間全体を
作品として体験させる芸術。
from: http://www.weblio.jp/content/インスタレーションアート
インスタレーションアート?
http://www.team-lab.net/all/art/flowerandpeople-tokyo.html http://www.team-lab.net/all/other/harmony.html http://www.team-lab.net/all/art/crows_dark.html
メディアアート
『展示をする作品』
どうやってUnityで作るか?
お絵かき水族館を例に説明
http://www.team-lab.net/all/products/aquarium.html
https://www.youtube.com/watch?v=AnAqB7LZUb8
センサーによってタッチ出来る スキャナーでスキャンする
複数のプロジェクターで投影 魚の最大数とか設定出来る
#1 センサーとUnity
#2 スキャナーとUnity
#3 プロジェクターの投影
#4 設定画面
センサーとは OSC
で通信してる
OSC とは?
Open Sound Control (OSC) は、 コンピュータ、シンセサイザー、その他のマルチメディアデバイス
同士でコミュニケーションするための 通信プロトコルです。
現代のネットワーク技術の成果を電子楽器の世界に適用することで、 OSCは相互運用性、正確さ、柔軟さ、また、拡張性に優れた
性能を持ちます。
http://yoppa.org/ma2_10/2279.html
MIDIの代替
OSC プロトコル
/touch/pos 0.0 0.1Message Arguments
UDPで送信
x座標 y座標データのキー
“Simple” is “best”!
#1 センサーとUnity
Unity内にUDPServerが建っている
PC同士をLANケーブルで繋げてある
センサー側がクライアント
ローカルネットワーク通信
センサーから0.0~1.0で値が送られるViewportPointToRayとPhysics.Raycastを使えば Unity側でのタッチ判定が出来る
#1 センサーとUnity
#2 スキャナーとUnity
#3 プロジェクターの投影
#4 設定画面
スキャナーとは WebSocket で通信してる
WebSocket とは?
WebSocketとは、WebサーバとWebブラウザの間で ソケット通信を行なうための技術仕様。
Webページ上のスクリプトからソケット通信を利用するための インターフェース仕様を定めたもので、接続中はサーバ側から 任意のタイミングで通信を開始することができるようになる。
http://e-words.jp/w/WebSocket.html
XMLHttpRequestの凄い版
#2 スキャナーとUnity
Unity内にHTTPServerが建っている
PC同士をLANケーブルで繋げてある
一昔前はTCP通信だった(今でも一部作品はそのまま)
センサーとの接続もあるのでハブは必須
スキャナーから必要なデータが送られるスキャンしたテクスチャのバイナリ、魚の種類、 左右どちらでスキャンされたのか等
#1 センサーとUnity
#2 スキャナーとUnity
#3 プロジェクターの投影
#4 設定画面
複数のプロジェクターを 横に並べて投影
一つ問題が発生する
プロジェクターの映像が 重なってしまう
どういうこと?
プロジェクター3台投影の理想
理想通りに投影出来る訳もなく…
実際にはプロジェクターの光が重なる
映像の重なりが出来てしまう
どうすれば良いか?
映像の中に黒い線を入れる
プロジェクターは 黒い光は投影出来ない
重なる領域と黒い領域を合わせれば 綺麗に投影する事が出来る!
ブレンディングを行えば綺麗に投影出来る
#3 プロジェクターの投影
Unity内に映像ブレンディング機能を作る
プロジェクターで出来る事はそちらで
ポストエフェクトで簡単に実装出来る
台形補正で補える部分も存在する
プロジェクターは絶対に固定する動いたらブレンディングをやり直しになる
#1 センサーとUnity
#2 スキャナーとUnity
#3 プロジェクターの投影
#4 設定画面
アプリの実行中に パラメータを変更できる
なぜ必要?
作品を作る 基本的な流れとして
オフィスで”それっぽい見た目”に制作
実際の現場で調整
リリース!
現場での調整が必須色味、サイズ、出現数、etc...
実行しながら調整が出来る! とても大事
#4 設定画面
各パラメータの値はXMLに保存する
デバッグ画面に近い
起動時に設定を読み込み反映する
ただし設定機能を消した版でリリースする事は無い
リリース後に設定を変更する事もあるお客さんの要望によって最大数やタイムライン等を 変える事は少なく無い
## まとめ
コンテンツを作る という部分については
ゲーム開発とそんなに変わらない
見た目のクオリティ の方が重要で難しく
個人のセンスと裁量に左右される
展示をする作品 を作る上では如何に施工を楽にするかを考え 開発者が現場に居なくても設置出来るように
しないといけない
機材の選定 も大事になってくる
初めの頃は幾つかの種類を購入して試行を繰り返す
個人的にはゲームもノンゲームも大して変わらない
結局は『技術とアイデア』
まだ時間残ってますか?
業務連絡
#0 おまけ
PlayerPrefsに裏切られた話
昔の公式ドキュメントには
『Windowsでは.plistにデータを保存する。 異なるアプリ間で同じKeyを使っても大丈夫!』
って書いてあった
だけど実際は.plistではなく レジストリに保存されるようになっていた
しかも異なるアプリ間で同じKeyを使うと コンフリクトする
そんな事に気付く事もなく 設定データをPlayerPrefsに保存する様に
当初は実装してしまっていた
おかげで違うアプリを起動するたびに 設定が上書きされてしまう
不便極まりない機能が出来てしまった事がある
施工時に起きやすい問題 ランキング
独断と偏見によって選定
第3位 機材壊れたほぼ必ず予備機を用意しているのでそれで対応 最悪の場合は電気屋さんへGo!
第2位 ネットワーク問題ポートが空いてない、速度が遅すぎる等 会場のネットワークが問題抱えていると厄介
第1位 想定以上に微妙実際に投影してみると想定以上に微妙な事がある 現場やホテルでプログラムを直すことも良くある
全然使わないUnityの機能 ランキング
独断と偏見によって選定
第3位 uGUI綺麗な設定画面を作る時にたまに使う程度 全く使わない訳ではないが、使う事は少ない
第2位 Scene基本的にワンシーンアプリなので使う事は無い 施工先毎にSceneを分けて、ビルドする事はある
第1位 スマホ向け機能iPhone / Androidアプリの開発を全然しない どんな機能があるのかも少ししか知らない
他に聞きたい事がありましたら 気軽に話しかけてください!
Thank you!