IVRC

実装について – IVRC Memo

プレゼン審査にパスすると,実際に作品を作らなければなりません.
実装面でのハウツーをここにメモ書きしておきます.

作品の要素分解

まずは,その作品に必要な要素を洗い出しましょう.
これは,体験者にどういう体験を与えればいいのかということを考えることです.
バーチャルロープスライダーの場合

  • 「体がふられる感覚」
  • 「風の感覚」
  • 「進んでいる視覚情報の変化」

でした.
そして,そのためにはどういう物品が必要でどういう実装が必要かを
チーム内でミーティングを行い,ある程度でいいので詰めていきましょう.
作ってから気づくこともあるので,最低でもどういうものが必要かというのを決めておくとよいです.
そして必ずチーム内で情報をシェアしてください.
 

タスク分解

必要な物品,実装が決まったらある程度きまったら,
それを実現するためにさらにタスクを細かい単位に分解していきましょう.
 
作品の「仕様書」を書いてあげると,やらなければいけないことがわかりやすくなるのでチームが動きやすくなります.
この場合気を付けなければならないことは,
「だれが」「どの」タスクを「いつまでに」やらなければいけないのかを明確化しておくことです.
これをしないと責任があいまいになり,またチームがだらだらしてしまう原因となってしまいます.
 
タスク分解することによって,各パーツを並行して実装でき,かつ単体テストも容易になります.
人を割り振って並行して開発できるところはできるだけ並行して開発しましょう.
 

優先度づけ

予選大会までは2か月と長いようで短い期間しかありません.
クオリティは差し置いて,最低でも動いているものをつくりましょう.
そのために必要なものを優先度づけしていき,しっかりと基礎を固めましょう.
基礎的な部分がしっかり動けば,予選大会を突破する確率が格段に上がります.
 
バーチャルロープスライダーの場合,
まず
「筐体構造を考える」
ところから始めました.
とりあえず,体験者に綱に乗ってもらうところができていないとまずいので
上に綱をつるす頑丈な構造を設計,作成するところから始めました.
 
そして,その次に

  • 「圧力センサによって座っていることを検知しスタート」
  • 「CGとウィンチの動きと扇風機が連動する」

ということが絶対的に必要であったため,

  1. 「圧力センサ情報をUnity上で取得する」
  2. 「扇風機をマイコンで制御する」
  3. 「ウィンチをマイコンで制御する」
  4. 「CG空間をUnity上で作成する」
  5. 「Oculus RiftをUnity上で動かす」
  6. 「ロープスライダーの物理シュミレーションを作る」
  7. 「実写空間をUnity上で作成する」
  8. 「CGのクオリティを上げる」

といった順に各パーツを作っていき,
9.「それぞれを統合」
し,そして,
10.「ステージ選択画面を作成する」
というやりかたをしました.
このように優先度をしっかりと決めてやることによって,必要十分な実装ができ,
細かなところにこだわりすぎて時間を無駄にすごすことを回避することができます.
 

軽いタスク・重いタスク

タスクには簡単にできるタスクと難しいタスクがあります.
なるべく簡単なタスクから片づけていきましょう.
タスクの量が多いと,それだけでパニくってしまいますが,
一つづつ簡単なタスクから片づけていくことによってタスクの量が減り,頭がすっきりします.
その状態で重いタスクに臨めば,かなりの確率でそれを完遂することができます.
 

Rapid Prototyping!!!!

中の人はみんなに「とりあえずクオリティは差し置いて動くものを作ってくれ」と念を押していました.
実装する前に
「どうやって実装すればいいのか」,
「どうやってクオリティの高いモノを作り上げることができるのか」,
「統合しやすい実装にするためにはどうすればいいのかなどの後のこと」
を考え込んでしまい,
まったく手が動かない人がいたからです.
 
そういう場合,とりあえずそれっぽいものを作り出していき,だんだんとクオリティを上げるといった手法をとると,
とてもうまくいく場合が多いです.
頭で考えるより,手を動かしましょう.
 
ロープスライダーの物理シュミレーションを作成してくれという依頼をだしたとき,
いろいろな意見をチームメンバーが出してきましたが,
結局だれも何も作っていないという状態だったので,
「とりあえずカメラが前に行って,終点に来たら後ろに下がるプロトタイプを作ってくれ」
と言いました.
こうすることで,「そのプロトタイプのどういうところがロープスライダーっぽくないか」
を動いているものを見て具体的にみんなで共有できます.
そのことによって,Jointを使った実装や,空気抵抗を考慮した実装などが生まれました.
 
最初から完璧なものではなく,とりあえず動くものを作る.
そして徐々にクオリティを上げるという手法は限られた時間のなかで開発するにはかなり有効です.
 

メンバーの特性を考える.

メンバーにはいろいろな人がいて,それぞれ得意なことや不得意なことがあります.
なるべく得意なことが活かせるようなタスクを与えてあげましょう.
ハードがわかる人にはハードのタスク,音に興味のある人には音に関するタスクなどです.
 
また,これは自論ですが,人間の特性として大きく6つのタイプがあると思います.

  1. マネージャータイプ
  2. デザイナータイプ
  3. クリエイタータイプ
  4. 営業・接客タイプ
  5. プロデューサータイプ
  6. 事務作業タイプ

それぞれのタイプにあわせた適切なタスクを与えることで,
全体のクオリティを引き上げることができます.
今回のチームはいろんな人がいて,その特性がかなりばらついており,
それぞれに合うタスクを与えてやることで結果的に総合優勝を勝ち取れたのだと思います.


 
1.まずはこれを読め
2.企画立案について
3.企画について注意すべき点
4.プレゼン審査について
5.書類・Web入力・メール報告について
> 6.実装について
7.展示について
IVRC Memo (Index) へ戻る