配置ツール VioRama
序文
みなさまご機嫌麗しゅう。
車軸制作所と申します。株式会社HIKKYでチーフエンジニアをしております。主にUnityとかC#を扱う役目です。
今回は「バーチャル空間上でのイベントにおけるブースの配置」について筆を執りました。
具体的な実装方法やサンプルコードなどは出てきません。全体の構造というかイメージというか、そういった感じのものの紹介となります。
バーチャル空間上のイベントにおけるブース配置
弊社の「バーチャルマーケット」等のイベントをご存じであれば、バーチャル空間上のイベントについては説明不要かと思います。
ここでの「バーチャル空間上のイベントにおけるブースの配置」とは、
多くの出展者さまから出展物(デジタルデータ)を入稿いただく
入稿されたデータをバーチャル空間へ配置・設営する
完成したバーチャル空間をサーバへアップロードして公開する
これらステップを経て完了されるものとお考え下さい。
デジタルデータを会場へ配置する
「バーチャルマーケット」では、出展者さまがたに専用の入稿ツールを配布し、ツールを使用して出展物の入稿をしていただいています。入稿された出展物のデータは、入稿データベースへ記録されます。
弊社では現在基本的にUnityを使用してバーチャル空間の構築をおこなっています。
会場となるバーチャル空間に出展物を配置することは、つまり会場Unityシーンへオブジェクト(3Dモデル・画像・音声等)を配置することです。入稿物は「ブース」と呼称して会場シーンへ配置していきます。
ジオラマの街を創るように、土台となる地形に家や施設を置いていくわけです。
配置ツール
「バーチャルマーケット」黎明期には、この配置作業を手作業でおこなっていました。しかし回を重ねるにつれ規模が大きくなり、出展ブース数も増えていき、すべてを手作業でおこなうには現実的でない数になっていきました。
配置の作業内容は、
入稿物を読み込んで
会場シーンに配置する
基本的にこの繰り返しです。
せっかくコンピュータが目の前にあるのに、脳と手しか使わないのはもったいないです。また、人間は必ずミスをするもので、操作を間違えて数時間の作業を虚空に葬ってしまうこともあります。そこで、もっと効率的に配置ができるように、配置用のツールを作ることにしました。
VioRama誕生
HIKKYで開発・運用している配置ツールは「VioRama」と呼ばれています。わたしが命名しました。
初めは配置作業を効率的にする「支援ツール」として誕生しました。専用のウィンドウ内で、会場のどの区画にどの出展物を置くか、ドロップダウンで選択するような、GUIのツールでした。これにより作業時間自体を大きく削減し、また直接オブジェクトを操作していた箇所の操作ミスは発生しなくなりました。
ツールは必要に応じて改修がおこなわれます。イベントが大規模化するにしたがい、ツールも進化します。
現在VioRamaは「半自動配置システム」と呼んでよいものになりました。あらかじめ設定ファイルやバッチファイルへ、おこなう作業や条件について記述しておけば、VioRamaを起動するだけで配置に必要な処理を自動的におこなってくれます。
VioRamaの機能
VioRama自体のもつ機能は以下のようになっています。
入稿データベースからの情報読み込み・配置状況の書き込み
入稿データを対応する各会場へ振り分け
各会場Unityシーン上へ入稿されたブースを配置
ライトベイク・オクルージョンベイク・シーンビルド等
これらの処理を連続しておこなってくれます。
あらかじめ設定さえしておけば、人間は起動ボタンを押して、VioRamaを発火するだけです。
自動処理・定時処理
起動ボタンを押せば連続で処理をしてくれるVioRamaですが、会場制作や入稿が随時おこなわれているあいだ、毎度毎度「起動ボタンを押す」のも大変な作業です。起動ボタンを押す作業も繰り返しなので、ツールに任せます。
現在VioRamaでは、CIツールを使用して、会場の随時更新を自動化しています。
会場シーンになにか変更があったとき
入稿期間中の随時更新のため、数時間ごとに
自動的にCIツールからVioRamaが起動され、処理の結果は社内チャットツールへお知らせしてくれます。
もちろん手動で発火することも可能ですが、CIツールの設定により頻繁に会場の配置更新がかかるため、「起動ボタンを押す」ことも基本的に不要です。
まとめ
人間の手に余る作業はツールに任せることで、作業時間と作業ミスを同時に削減できます。
回を追うごとに規模を増すイベントの配置作業を、わたしはツールの開発と運用で対応してきましたが、まだまだ足りない部分があると感じています。もっと自動化できる部分があるし、冗長な処理もたくさん残っています。
これからもVioRamaは進化していきます。