疑体験技術の解剖

そうちのカラクリ

目の前の大画面に広がる大空の3DCG。ハンドルとペダルを操作して、3次元空間を自由に飛び回り、バルーンを割っていく。今までになかった全く新しいタイプの体感ゲームであり、当社の複合的な先進技術が創り上げた本格的VRマシンである。

30年前から、電気と機械を知り尽くしている。

このゲームのカラクリを紹介する前に、当社が持っている技術的背景をぜひ知っておいてほしいと思う。
一九五五年、横浜・松屋の屋上。ここに設置された2台の『木馬』が当社の第一号商品であった。クランク機構を利用して、モーターの回転運動で胴体を揺り動かす仕掛けで、実はこうした電気的にマシンを動かす『エレメカ製品』が当社の技術の原点となっている。
厳密には、第一号の木馬は自社開発ではなかったのだが、創業から一〇年後の一九六五年には社内に開発部を開設。その年、いきなり、潜水艦のエレメカ製品を大ヒットさせ、以後も立て続けに独特のエレメカ製品を世の中に送り出した。さらにエレクトロニクス技術の進化を受けて、テレビゲーム全盛時代を築く。そして、現在の最先端技術を駆使した体感マシンまで。人々を楽しませるという共通のテーマのもと、電気仕掛けの木馬に始まった当社のエレメカ技術は、形を変えて進化をしながら現在へと受け継がれているのである。

3DCGを滑らかに描画する。

 三次元の人力飛行シミュレーション。その基本となる3DCGの滑らかな描画は最新ポリゴン基板によって処理されている。ポリゴン基板の威力と、それを開発したデジタル回路技術、そしてハンドルやペダルの操作をポリゴン基板に伝える電気制御技術について紹介しよう。

デジタルのカラクリ
最新ポリゴン基板の威力。

 このゲームに出てくる主人公やバルーンなどのオブジェクトは、予め特定の方向・大きさのポリゴンモデルの座標数値がROMに蓄えられている。制御用のCPUからの表示命令を受けて、これを任意に回転し、仮想空間上に配置。視点の位置を決めて回転演算を施し、座標数値に置き換えて、そのデータを描画回路へと渡す。描画回路に転送されたデータは、無駄な情報を排除しながら実際の画面データに変換され、同時に複雑な絵柄を張り付けるテクスチャーマッピング処理などが行われ、質感豊かな三次元映像をつくり出していく。
 と、手順はそういう具合になるのだが、問題になるのが処理速度である。そもそも一画面は六〇分の一秒(走査線の表示時間)で表示され、この短い間に前述のすべての処理を終える仕様になっている。すると、かなり高速なCPUを活用しているのではないかと思われるのだが、意外なことに最新ポリゴン基板のCPUは一般のPCレベル。当然、このCPUだけでは滑らかな描画はできず、カスタムICを用いた並列処理というカラクリがそこに仕掛けられている。
 VRゲームのように特定の処理を大量に行う場合は、専用カスタムICを使って並列処理することで、きわめて高速な演算ができるようになる。当社は業界で初めてカスタムICを採り入れた会社であり、そのノウハウは豊富。デジタル回路の設計技術が、この威力の根元なのである。

電気制御のカラクリ
人の足を見張るセンサー技術。

 順番は逆になるが、今度は、プレイヤーのハンドルやペダルの操作を電気的な信号に変換して、ポリゴン基板に渡すまでの部分を解説しよう。このゲームの一つの特徴は、ハンドルを上下左右に動かす、ペダルをこぐというアナログ的な入力から仮想空間をつくり出す点にある。そのためには、まずプレイヤーの自由な動きそのものを読み取らなければならない。最も中心的な部分として、ペダルの回転数の読み取りがあげられる。
 ただ単に、回転数を読み取るだけなら、自転車の速度計のようにギヤの動きを機械的に読み取ればいい。が、ゲーム機の場合は、不特定多数のプレイヤーが断続的に利用するため、通常の工業製品以上の耐久性が要求されている。トラブルを極力回避するためにも、非接触式で読み取らなければならない。
 そこで、光学式マウスと同じような原理で、回転数を読み取り、速度データを得る方式を採用している。ペダル部分のプーリーにスリット状のミラーシールを張り、ここに赤外線を当てる。そして反射してくる光を小型センサが認識するという方法だ。
 また、速度データからつくり出されるのは、音と映像だけではない。このゲームでは、風というメディアも重要な役割を持っている。既存の工業用ファンを改造した送風ユニットを制御し、ゆっくりした微風から、急下降するときの突風まで、仮想空間での展開に応じたリアルな風を送り出している。

飛行体感度一〇〇%の新メカ理論。

人力飛行機という架空の乗り物であるだけに、このゲームには新たに開発されたメカニズムが随所に駆使されている。たとえば、ハンドルを前後左右に動かすとふわふわと揺れ動く独特の浮遊感。ここには本来、振動を防止するための防振ゴムが揺動を起こす素材として使われている。

浮遊のカラクリ
防振ゴムを組み込んだ大胆発想。

 方向を変えるときには、身体を思いきり倒す。加速するときには、ペダルを勢いよくこぐ。身体を使った操作がこのゲームの特徴だ。サイクル本体も電気的な制御によって動くのではなく、プレイヤー自身の操作や体重でごく自然な動きを導き出す。プレイ中のふわふわとした浮遊感の裏には、今回新たに開発されたメカニズムが光っている。
 通常、何かを揺動させるには、スプリングやバネといった部品が使われる。しかし、これらの金属部品では、ふわふわとした緩やかな動きはなかなか得られない。このゲームの緩やかな揺れの秘密は、防振ゴムを使っている点にある。防振ゴムはその名の通り、工作機械などの振動を吸収するために使われる素材である。
 この防振ゴムを、本体の下、四カ所に設置。台座との接触面は球状になっていて、あえて不安定な形を採用することで、自然な浮遊感を生み出している。また、これとは別の箇所にストッパーが四カ所、傾いた本体を止める目的で設置されている。こちらも防振ゴムである。
 四カ所という設置個数とその設置箇所、表面形状、さらに大きさや揺動の支点位置まで、すべて当社が試行錯誤の中で独自に導き出したものである。特異な使い方をするため、もちろん耐久試験や強度試験は入念に行っている。体重一〇〇㎏のプレイヤーが激しく操作しても、まったく支障がないほどの安全性・耐久性が確保されている。

ペダルのカラクリ
人間工学的NEWペダル機構。

 このゲームのペダル機構に、一つだけ不思議な謎がある。何人かで交代しながらプレイするとわかるのだが、サドルの高さをいちいち調節しなくても、誰の足にもペダルの位置がフィットするのである。
 本来なら、プレイ前にサドルを調節しないと、プレイヤーの足の長さに合った高さにならないはず。ただ、サドルに調節機能を付けてしまうと、機構が複雑になり、どうしても壊れやすくなる。長身の人がプレイした直後、小学生が調整を忘れてまたがってしまっても危険である。そうした理由で、このゲームのサドルは固定式になっている。
 サドルを低い位置に固定し、誰もが余裕を持って本体をまたげるようにする。そのかわりに、ペダルの位置を前方にずらし、サドルからペダルまでの距離をかせいでいるのだ。こうすることで、プレイヤーの膝の角度でうまくペダルがフィットする。それでも合わない場合でも、座る位置を前後にずらすだけで、ペダルまでの距離が調節できる、というわけである。一つ付け加えておくと、プレイが終了してステップに足をつく際、ペダルが邪魔にならないから、ケガをすることもない。
 これはもともと理論があったわけではない。開発中にメカエンジニアたちが試行錯誤を繰り返した結果、見出したことである。誰もが何気なくプレイしていて気づかないが、そんな細かい点にも当社流の人間工学が隠されているのである。

超々オブジェクト指向の世界。

 バルーンにヒットしたら破裂して破片が飛び散る、崖に当たったら跳ね返る、失速して落ちる。三次元空間で起きる複雑な動きを実現するソフトウエア。プログラム自体は通常のC言語で書かれ、複雑なオブジェクト指向による処理、高速に動作を行うプログラミングにそのノウハウが光っている。

ソフトのカラクリ
三次元のヒットチェック機能。

 プレイヤーの人力飛行機は、ハンドルやペダルの操作を取り込みながら、自らの動きを制御するプログラムによって画面の中の三次元空間を進んでいく。この際の三次元の位置データから、バルーンなどを制御する関数が呼び出され、視点からの適切な角度や視界に映る範囲を計算し、画面に表示していく。
 バルーンを例に説明すると、一つ一つが違ったプログラムを持ち、異なった揺れ方をしている。それぞれが、中心点からの三次元的な距離をもとに、人力飛行機がヒットしたかどうかを判定するヒットチェック機能を持っている。ヒットと判定されれば、得点表示、プレイ時間の延長、破裂パターン、といった別のプログラムが呼び出されるわけである。
 また、バルーンの破裂シーンは、破片が三次元空間を飛び散っていく様子を物理計算で正確に表現している。ただし、猛スピードで当たった際は、画面の中の破片は実際よりもゆっくりと飛んでいく。正確な計算通りでは逆に、破片が瞬間的に画面から消え、プレイヤーがヒットしたことを認識できなくなってしまうからだ。
 こうしたきめの細かい動きが、バルーンをはじめ、崖や水面、家、人物など、あらゆる物体に持たされている。複雑なオブジェクト指向プログラミングの技術が、自由なストーリーを可能にしているのである。

コンパイルのカラクリ
高速実行プログラミングのワザ。

 ハードのページで『一画面/六〇分の一秒』という時間について触れたが、ソフトの処理もまた同じ。これをクリアしていないとせっかくのポリゴン基板の性能が無意味になってしまう。このゲームでは、プレイヤーの入力から、飛行、地面などの表示、バルーンの破裂、あるいは音を出す、といった一連の処理を行う。returnして、違う入力条件で同じ処理を行う、というループ的な処理が特徴になっている。そうして人力飛行機が1画面分だけ飛び、周りの景色も動き、ゲームが展開していく。一コマを表示している間に次に何を出すかというオーダーをCPUに入れていくのだが、これら一つ一つのループをすべて六〇分の一秒で終えなければならない。
 そのため、コンパイルした後に、プログラムがどれだけの速さで実行されるかがカギになってくる。このゲームのプログラムは、ほぼ通常のC言語で書かれている。最終的にROM化されて、ハードウエアに乗るが、言語やコンパイラには特別な仕掛けはなく、むしろプログラムの書き方に工夫がある。もともとVRゲームでは、扱うデータも大きく、処理も複雑で、プログラム容量は大きくなりがちだ。この課題をクリアするために、データを圧縮しておく技術や、大きなデータは実際の値ではなく差分だけを入力するノウハウが駆使されている。また開発段階では、実際の実行速度を把握するツールを使い、処理の重い部分を修正し、細かくチューンアップしていく。こうした地道な努力によって、リアルタイムの動きが可能になっていくのである。

アミューズメントからエンターティンメントへ

このゲームを例に、当社のハイテクノロジーを紹介してきた。しかし、当社の企業テーマは、単に技術やゲームを提供するだけでは完結しない。世界中の人々に『遊び心』や『夢』を届け、常に人々の心に対して働きかけることを追求してきた。そして今、ハイテクノロジーにハイタッチな感性をプラスした『ハイパーエンターティンメント構想』を掲げ、アミューズメントを越えた新しい文化の創造をめざしていく。