Astra✖️blenderで恐竜が動いた!
9月10日から12日にかけて、Astraとの会話を使いながら、Blenderで恐竜を動かす実験を行った。
最初にいたのは、静止したステゴサウルスである。形はある。背中には背板もある。しかし、立っているだけでは恐竜が生きている感じまでは出ない。(これだけでも信じられないぐらいの進歩なんだが、悲しいことに慣れてしまっている自分がいる)

そこで、歩かせることにした。

ところが今回の実験は、歩行アニメーションを1本作って終わりにはならなかった。歩ける個体を湿地へ置き、環境によって進む場所を変え、さらに翼竜を飛ばし、風によって飛行経路まで変えるところへ進んでいった。
先に、今回の最初の成果を置いておく。
最初は、ステゴサウルスを歩かせる
最初の対象はステゴサウルスだった。全長約7mの静止モデルへ骨格を追加し、脚の動きを組んだ。
ここで問題が発生した。
足が地面から浮く。足先の向きが不自然になる。少し前へ進ませるだけでも、脚の曲がる方向が安定しない。

そこで、脚の先を固定する仕組みを入れ、足裏が地面に残るよう調整した。歩幅は小さく、速度も遅い。派手な走りではないが、まずは「足を置きながら前へ進む」ことを優先した。
この時点で、ステゴサウルスは初めて歩いた。
恐竜が歩く舞台を、毎回つくる
歩けるようになると、灰色の確認画面だけでは足りなくなった。恐竜が歩く場所を用意せねばならない。
そこで、川、浅い水辺、起伏、シダ、トクサ、針葉樹、岩、倒木が入ったジュラ紀の氾濫原を、自動でつくる仕組みを構築した。川幅や水位、地形の粗さ、植物の密度を指定すると、その条件に合わせて別の氾濫原が生成される。
さらに「乱数」という配置用の抽選番号を変えると、同じ川幅でも植物や岩の位置が変わる。恐竜を同じ場所から出発させても、歩く舞台の条件が変わるわけである。

次に、その舞台の中をどう歩くかを組み込んだ。ステゴサウルスには、水辺や急な斜面を避け、岩や倒木を回り込み、生成された植生の中から行き先のシダを選ぶルールを与えた。シダに到着すると、頭を下げて採食する。ここは偶然ではなく、最初から狙って実装した部分である。
面白かったのは、その狙った行動が、生成する舞台の違いときちんとつながったことだ。出発地点と行動ルールをそろえたまま、川幅や配置用の抽選番号だけを変えると、経路だけでなく、選ばれるシダと停止位置まで変わった。

下の比較は、出発地点と行動ルールをそろえて、川幅や配置だけを変えたものだ。あらかじめ決めた線を再生しているのではなく、その条件に合わせて経路と行き先を計算し直している。
もちろん、これは生態系全体のシミュレーションではない。植物を食べる物理も、体全体の衝突判定も入っていない。それでも、環境を変えると行動の結果が変わる。この接続は、静止画と歩行アニメーションの間にあった大きな段差を埋めた。
次に、翼竜を飛ばす
地上を歩く恐竜が動いたので、今度は空を使う恐竜を投入した。
翼竜には、飛行、滑空、着地、地上待機の動きを用意した。翼を広げたときと畳んだときのシルエット、翼の膜が後ろ脚へつながる形、四足で地面を支える姿を先に確認してから、細部を増やした。

翼竜を氾濫原へ入れると、今度は木や岩が問題になった。胴体だけなら通れる隙間でも、翼を広げると枝葉にぶつかる。
そこで、体の中心ではなく、翼の幅を含めた外形で飛行経路を調べた。水面は低いコストで通れる空間、着地点は乾いた緩やかな地面として扱った。
葉の中心だけを障害物として扱っていた初期版では、翼が葉の先端に隠れる事象が発生した。葉の先端まで含めるように判定を広げ、着地直前は羽ばたきから滑空へ切り替えた。
飛ぶ動きにも、地面を歩かせたときと同じ問題があった。見た目だけなら動かせる。しかし、環境とつないだ瞬間に、動きの嘘が見えてくる。
風を入れたら、飛行経路が変わった
ここまで来ると、風を入れたくなる。
弱い風では、翼竜はほぼ一直線に進んだ。横風と上昇気流を入れると、翼竜は上昇気流の場所へ寄り道し、旋回しながら高度を上げた。
このとき、同じ翼竜、同じ出発地点、同じ目的地でも、風の条件だけで経路が変わった。比較映像に焼き込まれた表示では、Aの高度が7.0m、Bが8.0m。Bでは上昇気流の表示が1.60m/s、滑空率が67%まで上がっている。
ただし、これは本物の空気力学ではない。一定の風向きと人工的な上昇気流を使った、計画飛行の実験である。風を受けて翼が本当に揚力を生むところまでは、まだ到達していない。
風を見えるようにする
風は画面に数字で表示するだけでは分かりにくい。
そこで、実際の環境からシダの葉片を拾い、空気の流れに合わせて飛ばした。胞子のような粒子も加え、水面とシダを少しだけ揺らした。
初回は粒子が多すぎて、金色の雪が降っているようになった。風の存在は伝わるが、翼竜が見えない。密度と明るさを下げ、背景の動きを抑えた。
これで、風向きの数値を読まなくても、空気が流れていることが見えるようになった。翼竜が上昇気流へ寄り、旋回し、最後に翼を広げて滑空する流れも確認できる。
「恐竜が動いた」の中身
今回、BlenderとAstraで作ったのは、恐竜の動画を数本だけではない。
静止モデルへ骨格を入れ、歩行と飛行を作り、地形と植生を生成し、環境を避ける経路を計算し、風によって飛び方を変え、最後に風そのものを画面へ見せた。
最初のステゴサウルスは、足を地面へ置くだけで苦戦した。それが最後には、川幅の違いで進む場所を変え、翼竜は木を避け、風の中で寄り道をするところまで来た。
一方で、未解決の問題も多い。歩行の筋肉変形は簡略化され、翼は硬く、飛行はベイクした計画である。植物を食べる動作も、体全体の衝突も、まだ本物ではない。
そして、見た目を直したステゴサウルスが、必ずしも恐竜らしく見えるとは限らないことも判明した。
形を作る。動かす。環境へ置く。違和感を見つけて直す。直した結果をもう一度見る。
この往復がある限り、恐竜はまだ動き続けるらしい。次は、歩行をもう少し生き物らしくし、翼の膜と風の関係を詰めねばならない。研究継続。(Dr.よこぼ)

