第9章 がんばってみようかなぁ


ようやく開いた突破口に喜びを覚えたのもつかの間、同時に襲われたモチベーションの低下により、頓挫しかけたこのプロジェクトも、「ここまでやったのだからもう少し頑張ってみよう」「誰からも評価されなくたっていいじゃないか」「できるところまでやってみようよ」という気持ちが、少し出てきたので調査を再開することにした。

もしカメラワークが自由自在にできるようになったらば、各シナリオでのプレイのインパクトがかなり大きいはずである。
この可能性が理解できない人や想像できない人や無関心な人達に対して、それをアピールしたり意見を求めたところで、得るものなどない事が嫌になる程理解できたし、彼らが無関心であることも仕方がないことだともわかる。

調査を続行しよう。そう決めた。

今までの調査で理解できたものは「X1,H1,Y1」である。そして理解できていない「不明」のデータがなんであるかを調べていかないといけないわけです。

少しでも進捗があれば、下がりきったモチベーションも少しは上昇していくだろうと思うようになりました。
まずは現状整理です。

現段階では、「X1,H1,Y1」の値とその場所が特定できている状態です。


そして「X1」の「1」という数字がある以上「2」があるのではないかと予測できます。

そして、それは、まだあやふやですが、「カメラの初期位置」と「カメラの移動範囲」を示している値であることが漠然とわかっています。

つまり、X1,H1,Y1の値があるので、その対となるX2,H2,Y2のデータがあるはずである。
そして、それはどこなのかを調べ、その特性を理解することから始める。

1.
H2の特定とH1とH2の関係を調べる

まずは理解しやすそうな「H1」の情報を元に「H2」特定することにした。
下記は、初心のINDEX0のエリアです。

すでにH1の「222」の値を「10」に変更したら右記のようにカメラがクレーンダウンすることがわかっている。
変更前のINDEX0
変更後のINDEX0
H1=222
H1=10
ケビンが奥に移動したり手前に移動しても
カメラの高さに変化を感じない。
ケビンが奥に移動するとカメラがクレーンアップする。
ケビンが手前に移動すると
カメラがクレーンダウンする。

つまり、変更前は、クレーンダウンしなかったものが変更後は、クレーンダウンするようになったわけである。
従って「画面の手前」の高さがH1であり、「画面の奧」の高さがH2であると推測できる。

そして、変更前は、カメラの高さは変わらないように見える。
つまり、変更前は「H1とH2」の値が同一である可能性が高い。
だから、ケビンが奥に移動しても手前にしてもカメラの高さは変化がしない。

H1の222の数値は10進数である。これを16進数にして4バイトで表すと「000000DE」である。
データの格納形式は、「DE 00 00 00」と上位バイトと下位バイトが逆になる。
つまり、この値と同じものが対で格納されている可能性があり、それを見つければよい。
そして、それはすぐに見つかった。



そこで確認を取るため、今度は次の実験をした。
左は、H1の値を下げ、H2は222のままとする。
右は、H2の値を下げ、H1は222のままとする。
H1=10 / H2=222
H1=222 / H2=10
ケビンが奥に移動するとカメラがクレーンアップする。
ケビンが手前に移動すると
カメラがクレーンダウンする。
ケビンが奥に移動するとカメラがクレーンダウンする。
ケビンが手前に移動すると
カメラがクレーンアップする。

上記の実験により、H2の特定と、H1とH2の関係が理解できた。

ポイント
H1やH2の値を大きくすると、カメラが上にあがるが、上げすぎると天井を突き破ってしまう。
また下げすぎると、今度は床を突き破ってしまう。
天井があるところでは上げすぎないように注意が必要


2. Y2の特定とY1とY2の関係を調べる

今度はY2である。Yとは、XとYの判断は難しいが、Y1は、カメラ焦点からの直線距離と考えると理解しやすいようだ。
下記は、変更前のINDEX0のケビンの動きとカメラの動きである。
変更前のINDEX0
Y1=12682
ケビンが奥に移動したり手前に移動すると
カメラも一緒に前後に移動する。

ケビンが画面奥に進むと、それにあわせてカメラも画面奥に移動し、ケビンが画面手前に進むと、それにあわせてカメラも画面手前に移動していることがわかる。

ケビンの動きとそれを追従するカメラの移動を見比べと、ケビンよりもカメラの前後の動きがやや遅いことがわかる。

つまり、ケビンが奥に進むと、カメラも奥に進むが、ケビンとの距離が離れ、ケビンが小さくなっていく。
逆にケビンが手前に来ると、カメラも手前に進むが、ケビンとの距離が近づき、ケビンが大きく見えるようになっている。
つまり、ケビン移動距離よりもカメラの移動距離が短いといえる。
もし、ケビンの移動距離よりもカメラの移動距離を長くした場合、ケビンが画面奥に進んだ場合に、ケビンを追い越すか、またはケビンが大きくなるといえる。

Y2の場所の特定は、Y方向に対してカメラ移動がされないインデックスで、Y1の値と同じ値が設定されている場所がどこかを調べれば良いことがわかり、すぐにY2の場所を特定できた。



今度はY1とY2の値の具体的な関係を調べる必要があるが、今一つY1の機能が理解しにくかった。
そこでY1の値を変化をさせることによって何が起きるのか理解することが重要のようだと考えた。

下記は、Y1の値を変化させた時の結果である。
変更前
実験1
Y1=12682
Y2=13067
Y1=12682→12582
Y2=13067
Y1を-100してみるどうなるか?
結果、ケビンが手前に移動した時にカメラが変更前より
後ろに引いて、ケビンとの距離が広がった。
つまりケビンが小さくなった。
なお、Y1をもっと小さくすると手前の壁を突き抜けてしまう。

今度は、Y1を少し大きくするとどうなるのかを確認する
変更前
実験2
Y1=12682
Y2=13067
Y1=12682→12882
Y2=13067
Y1を+200してみるどうなるか?
結果、ケビンが手前に移動した時にカメラが変更前より
ケビンにちかづいていて、ケビンとの距離が縮まった。
つまりケビンが大きく見えるようになった。
なお、Y1をもっと大きくするとケビンを通りこしてしまい、
ケビンが画面内に収まらなくなる。
また奥の壁を突き抜けてしまう。

うむ。Y1については理解できたような気がするが、どうしても腑に落ちない。
Y1という値は、何を基準とした値なのだろうかが判らなくなったのである。
はじめは、カメラ焦点を基準にしたそこからのY方向の距離(奥行き)。つまり相対的な距離だと解釈していたのだが、どうも違うようだ。

距離ではなく座標なのかもれしない

そう考えるとしっくりしそうである。
つまり、X,Y,Hは、座標であり、0,0,0の場所からの距離といえる。
Hは、地面(つまり0)を基準にした値であると考えられる。

つまり、このMAPのどこかが、X=0,Y=0の場所と考えられる。
初心のバー見取り図

そして、カメラの焦点もX,H,Yの形式の座標としてデータがあると考えるとしっくりする。
とりあえずは、それを先に調べるほうがこれから先の調査のためになりそうである。


3. X2の特定をする


X,Y,Hは、距離ではなく座標と考えると、しっくりする。
とりあえずは、座標0,0,0を知りたいところだが、X2の場所も特定しておく必要がある。
これは、横方向には変化しないカメラアングルのINDEX0で、X1の値と同じ値が、設定されている場所特定すれば、良いと考えられる。
その結果、X2の場所は特定できた。



なるほど、こんな感じでX1,H1,Y1,X2,H2,Y2がそれぞれ格納されていることが理解できた。



やっと2歩目が進めた。


しかし、まだ課題がある。
X,Y,Hを座標として考えた場合、「0,0,0」はどこか?である。
そして「カメラの焦点」はどこか?つまりカメラは「なにを撮影しているのか?」を知る必要がある。
それは座標なのか?それとも相対的な距離であるのか?
次はその調査が必要であると考えた。



次章に続く