T字路


お笑い芸人、ダウンタウンの松本人志さんが昔ラジオでこんな事を言っていました。

「時々、T字路を左に曲がると右の道はもう存在していないんじゃないかと思う事がある」

他にも松本さんは私の考え方に近い話をされる事がありましたが、この彼の考え方は極めて量子力学的です。
少なくとも唯物論的な考え方からは、この言葉は出てこないことでしょう。

“自分が見ていないものは存在していないんじゃないか”という発想は、量子力学における“観測されていない物の状態は決まっていない”ととても似ていますね。
恐らく彼は量子力学に詳しくはないと思うのですが……。直感なんでしょうかねえ?

私は昔、プレイステーション2が出たときにあるレースゲームにハマっていました。
そのゲームは美しいCGによって街中を走る車と景色が描かれるのですが、ふとある時に私は遠くのビルの窓が描かれていない事に気づきました。そして車がビルに近づいて行くにつれて徐々に窓が詳細に描かれていくのです。

私は「なるほど」と思いました。当時高スペックを誇ったプレステ2であっても、遠くも含めた全ての景色を描くには計算量が多過ぎるのだと。
よってビルが近づくまでは手抜きの雑な絵を描いてごまかしているんだろうと考察しました。どうせプレイヤーはレースに夢中でそんなところは誰も見ていないだろうし(笑)。

詳しくない方のために、CGについて少しだけ説明しておきましょう。これはとても大事な事なので。

昨今のコンピューターゲームでは、3DCGを使ったアニメーションを使うのが普通ですね。
FPSしかり、レースゲームやRPGしかり。
ではこれらの画面に描かれる景色はどうやって描かれているのでしょうか??

昔(私の記憶では初代Quakeが出るまで)は見た目だけを3Dっぽくみせる擬似3Dのゲームが多かったですが、現在のゲームはGPUと呼ばれる専用のプロセッサ(グラボに搭載されています)を使ってガチで三次元の座標変換をはじめとした物理的な計算をしています。だからCGがあれほどリアルに見えるのですよ。

そもそも画面に描かれる景色というのは”マップ”と呼ばれる情報で、パソコンならばハードディスクやSSD等のストレージに保存されています。
マップというのは仮想の3D空間の全ての情報が入っているデータです。
例えばゲームの中である街を歩いてT字路を曲がるとしたなら、そこに描かれる予定の全ての建物や街路樹、道路、標識などのデータが三次元情報として入っているわけです。

具体的に言うとコンピューターは、仮想空間上に3Dの空間をまず作ります。そしてその空間の中の任意の場所をX軸、Y軸、Z軸の3つの座標で表せるようにします。この空間を何分割するかはコンピューターの性能によって決めていきます。細かく分ければ分けるほどモザイク状にならないのでリアルになりますが、計算量が増えていきます。
そして作られた仮想空間上で、全てのオブジェクトのX軸、Y軸、Z軸のそれぞれの座標を決めるのです。(例えば立方体ならば8つの点の座標が必要ですね)

全てのオブジェクトについてこれらの情報が入っているので、マップファイルはとても大きなサイズとなります。

コンピューターやゲームによって少し変わる部分もありますが、ゲームのプログラムはこのマップデータをビデオメモリー(VRAM)に読み込みます。
次にプログラムは現在プレイヤーが見ている景色の方向を判別し、ビデオメモリーにコピーされたマップファイルの該当部分の情報を取り出し、三次元データを二次元のモニターに立体的に映すためにはどのようにプロットすれば良いかをGPUが計算します。これは座標変換ってやつですね。
こうしてプレイヤーは三次元の景色を見る事が出来るのです。ただし、今のやり方だけだとモノクロでフレーム(線)だけの絵になりますね。因みに私も学生時代に作った事がありますが、昔のリアルタイムの3Dゲームはそんなんでした。

今のゲームはオブジェクト(物体)の座標データだけでなく、色はもちろん、材質や表面の模様などのテクスチャーと呼ばれるものも含まれています。
更にオブジェクトの光沢による反射率などのとても複雑な情報も含まれており、それらに光が当たった時にどのように反射して人の目に入るのかまでを計算しているのですよ。
特に今流行りの”リアルタイムレイトレーシング”は、その光の計算を最も精密に行う手法です。
だから計算量が多くてフレームレートがなかなか上がらないわけです。

コンピューター内のデータから、これら実際にモニターに描画する絵を物理的な計算によって作る作業を“レンダリング”と呼びます。

一枚の景色を描くにあたり、これらの全ての計算を1/60秒で行う事が出来れば、フレームレートが60fps(1秒間に60枚の画面を描く)出る事になりますね。因みに1秒間に60回の画面描画は平均的なパソコン用モニターのリフレッシュレートです。
昨今ではゲーム用としてリフレッシュレートが120Hzや144Hz以上のモニターも出ていますね。


さて、話を戻しましょう
私がプレステ2で見た現象は、このレンダリング計算を減らすための工夫だったのです。
遠くのビルの窓をいくら詳細に書いたところで、プレイヤーには殆ど見分けはつきません。
それにあまりに遠くのビルの窓などの細かい部分を描いても、その大きさがモニターのドット程度になってしまえば潰れて見えないでしょう。
なので仮に全ての景色を詳細に描くだけの計算能力があったとしても、その能力をそんな事に使うのは無意味で非効率的なのです。

さて、それを踏まえた上で松本人志さんの話を思い出してみましょう。
遠くの景気でさえ計算量を節約するために一部が省略されて描画されているのに、

果たしてプレイヤーが見ていない方向の絵は描かれているのでしょうか?

プレイヤーが見ていない方向の絵とは、つまりモニターに描かれない場所の絵の事ですね。
例えば上記のT字路の例ならば、左に曲がったのに右の道もレンダリング計算がされているのでしょうか?
画面に映らない、プレイヤーが見ている方向の後ろ側もレンダリング計算がされているのでしょうか?

当然ながら計算されません。画面に映らない絵をレンダリング計算するなんて無駄で全く意味がないからです。もしも計算パワーが余っているのなら、モニターに表示される景色をもっと精密に描く方向に使うべきでしょう。

よく誤解している人が居るのですが、量子力学は観測していない物は“存在しない”だとか、“無い”とは言っていません。
アインシュタインと月の話でも、観測するまでは月は“無い”のではなく、“そこには無い”が正しい表現です。
何度も言いますが量子力学が言っているのは、あらゆる物は観測されるまでは “状態が決まっていない”です。そして状態とは、位置と速度だと言いましたね。

よって松本人志さんの話を物理的に正確に言うならば、

T字路を左に曲がると観測されていない右の道は“状態が決まっていない”

ことになります。
だってもし右の道が完全に“無い”のならば、振り返っても存在していない気がしませんか?
ですが観測していない右の道は、確かに我々の日常的な感覚で言う意味での“存在”はしていません。以前にも言いましたが、低い確率ながら観測されるまでは右の道にある物体は100光年先に有る可能性だってあるのですからね。


さて、ではここでこのT字路の話をVR解釈で考えてみましょう。
VR解釈というのは、この世界は基本的に我々の知るコンピューターによって作られているVRと同じ仕組みだとする仮説でした。
だとすれば観測者がT字路を左に曲がると、プログラムによってVRAMの中にある左の道のマップデータが読まれて、左の道の景色がレンダリング計算されて描かれることになります。
右の道はVRAMの中にデータとしては入っていますが、レンダリング計算はされません。

そうです、右の道はレンダリングされていないだけでVRAMの中にマップデータは入っているのですよ。
つまり右の道は存在しているとも言えるし、していないとも言えますね。
これを正確に言うなら右の道は

“未計算”

です。 左折した人が振り返って右の道を見れば、いつでもレンダリング計算されて現れるのですから。

つまり量子力学の言う観測前の状態というのは、VR解釈では“未計算”を表わしているのです。観測前のものはVRAM内のデータのみが存在しており、いつでも現れるポテンシャルを持っている状態です。

さて、勘のいい人は気づいたかもしれませんが、この状態は仏教で言うところの“空”です。

有るとも言えず、無いとも言えず、“有”になるためのポテンシャルは持っている状態。
つまり”空”とは、VRAMの中に存在しているデータのことです。
これはレンダリング(観測)されれば目に見えますが、当然ながら同時にVRAMの中のデータとしても存在していますね。

もしかしたらここで「空とは超弦理論の超弦のことではなかったのか?」と思った鋭い方も居ますかね?
その通りです。超弦とはVRAMのデータのフォーマットの様なものであり、それを物理の言葉で言ったものに過ぎません。
つまり”空”と同じものです。

もしVR解釈が正しければ、仏教の言うとおり“全ては空である”となるでしょう。

この話は仏教の教えと絡めてもう少し続けましょう。


戻る   トップページ