資料室へ戻る

3D・空間あそび / AIしくみあそび

Blenderで作った翼竜に、自分で乗れるようにした

Blenderで眺めるだけだった翼竜を、自分で操る滑空ゲームにした。左右を間違えて所長が画面酔いし、オレンジの輪は「面白くない」で消え、最後は恐竜の群れの上を飛べるようになった。

Blenderで作った翼竜に、自分で乗れるようにした

前回の研究ログ「Astra✖️blenderで恐竜が動いた!」では、Blenderの中で翼竜を飛ばした。上昇気流の場所へ寄り道し、旋回しながら高度を上げ、最後に翼を広げて滑空する。

ただし、あの翼竜は決められた計画どおりに飛んでいただけだった。私は画面の前で眺めていたにすぎない。

当ラボでは、その後も恐竜のモデルを作り続けている。モデルは増える。しかし、増えたモデルをどこで生かすかが決まっていなかった。作っては並べ、作っては並べる。生かし場所がないのである。

そこで考えた。翼竜を作ったのだから、自分が翼竜になって飛べばいい。

できたものを先に置いておく。スマホでもPCでも、ブラウザでそのまま遊べる。

https://yokobo103.github.io/yokobo-pterosaur-glide/

タイトル画面。後ろでは翼竜が自動で飛んでいる

恐竜のいる平原を滑空する(15秒・音なし)

そもそも「滑空」とは

このゲームの翼竜は羽ばたかない。翼を広げたまま、少しずつ高度を下げながら前へ進む。これが滑空である。エンジンのないグライダーと同じだ。

放っておけば、いずれ地面に降りる。長く飛ぶには、地面から上がってくる暖かい空気、つまり上昇気流に乗って高さを取り戻すしかない。上昇気流の中で円を描くように旋回すると、翼竜は少しずつ持ち上がっていく。

ゲームでは、上昇気流のある場所に土ぼこりの柱が立つ。柱を見つけて乗り、高さを稼いだら次の柱へ向かう。日が傾くと空気は上がらなくなり、降りたところまでの距離が記録になる。

操作は左右だけ。押している間だけ、その方向へ曲がる。

最初の壁は、左右が逆だったこと

最初の試作を所長に遊んでもらったところ、すぐに指摘が来た。

「根本的に動きが気持ち悪い。翼竜が滑空する時、右が上がったら左に曲がるんじゃない?」

調べると、左右の向きを2か所で間違えていた。右を押すと、画面では左へ曲がる。さらに、曲がるほど機首が進む方向からずれていき、一周すると翼竜がこちらを向く。

当ラボの検査は「右を押したら、数値の上で右に傾いているか」しか見ていなかった。数値は正しかった。画面がどちらへ回るかは、一度も確かめていなかったのである。

直した版を飛んだ所長の感想はこうだ。

「逆だとこんなに気持ち悪いんか。で、プレイできないくらい画面酔いします。」

下の動画は、同じ場所で同じように右へ曲がったときのカメラの比較である。左が直す前、右が直した後。直す前は、地平線ごと画面が大きく倒れる。

直す前と直した後の旋回(5秒・音なし)

傾きは5度がちょうどいい

左右を直しても、画面酔いの問題は残った。旋回中にカメラをどれだけ傾けるかで、酔うかどうかが変わるのである。

そこでカメラの型を3つ用意し、同じ場面で並べて所長に選んでもらった。地平線を水平に保つ型、機体と一緒に少しだけ傾く型、上から見下ろす型である。

カメラの型3つ。同じ場面で、まっすぐ飛んでいるときと右へ旋回しているとき

結果は明快だった。水平の型と見下ろしの型は酔わない。傾く型は、傾きを14度にすると酔う。ただし所長いわく、「クセはちょっと面白い」。

そこで傾きを少しずつ減らした。

「10度→ギリギリ酔わない 5度→快適」

標準は5度に決めた。酔いやすい人のために、傾かない型もスタート画面の設定から選べるようにしてある。

足すより、捨てた

次に、飛ぶ先の目安として「このまままっすぐ滑空したら着く場所」を、オレンジの輪で地面に出してみた。上昇気流に乗るか、そのまま進むかを判断する材料になるはずだった。

「オレンジのリングはいらないんじゃない なんか面白くないわ」

確かに、答えが地面に描いてあると、飛ぶ側は輪を見ているだけになる。輪は計算ごと削除した。

代わりに置いたのは、越えられない高い山である。上昇気流で稼げる高さより高いので、近づいたら迂回するしかない。山へ向かえば地面との余裕も削られる。どこで曲がるかを考えることが、そのまま遊びになった。

左は着地点の輪を出していた頃。右は越えられない高い山

飛んでいると、恐竜に出会う

ここからが本題である。まず、前回作ったステゴサウルスを地上に放した。続いて、Astraに小型の恐竜ドリオサウルスも作ってもらい、群れで歩かせた。

所長の方針はこうだ。

「もっと有名な恐竜を放流しよう。なぜなら翼竜グライダーは細かいことを気にするやつじゃないからね。」

というわけで、時代の整合は気にしていない。ティラノサウルス、スピノサウルス、ブラキオサウルス、トリケラトプスなど、いまは10種類が地上を歩いている。

近くを飛ぶと「発見」の知らせが出て、ずかんに載る。ここでも問題が発生した。

「開始直後に「発見!」ってなっても画面に映ってなくて「えっ?」ってなる」

最初の判定は距離しか見ていなかった。近くにいれば、カメラの後ろにいても発見になる。そこで、画面に映っていて、かつ近いときだけ発見とするように直した。

恐竜を見つけると上に名前が出る。降りたあとに、その回の発見が並ぶ

出会った恐竜はずかんに残る。まだ出会っていない恐竜は「???」のままである。大きな木や営巣地もいったん発見の対象に入れたが、分かりにくいので外し、恐竜だけにした。

ずかん。出会った恐竜だけ名前と説明が出る

はじめての人へ

最後に残ったのは、初めて開いた人が迷う問題だった。

「なんかさ、ボタンを押した方がいいのかな?ってなって混乱しそう。」

画面のどこを押せば曲がるのかが伝わっていなかった。そこで、タイトル画面そのものを練習場にした。画面の左半分か右半分を押しっぱなしにすると、後ろの翼竜が実際にその方向へ曲がる。左右とも試すと「はじめる」が光る。

初めて開いたとき、左半分を押したとき、左右とも試したあと

所長の判定は「チュートリアルとしては、デザインはともかく成立はしていた」。そもそも操作が左右だけなので、触れば分かる。

作ったモデルに、生かし場所ができた

Blenderの中で計画どおりに飛んでいた翼竜は、いまは人の指で曲がり、上昇気流を探し、恐竜の群れの上を通り過ぎていく。前回作ったステゴサウルスも、ここでは景色の一部として歩いている。

課題も多い。恐竜はまだ10種類で、ずかんは埋まりやすい。恐竜が増えたら、別の時代の世界も考えたい。

作ったモデルを放す場所はできた。あとは放す恐竜を増やすだけである。研究継続。(Dr.よこぼ)

https://yokobo103.github.io/yokobo-pterosaur-glide/