
Three.jsを用いて3Dシーンをアニメーション化
今回はThree.jsを用いた3Dアニメーションです。
Three.jsはWebGLをより簡単に扱えるようにしてくれるJavaScriptライブラリだそうです。なんのことだかわかりませんよね。ややこしいのは嫌で、JavaScriptでさえ使わず、もっぱらCSSで済ませれるものばかり追求してきた私が、Webブラウザ上で、影まで落とす3D表現が簡単に実現できるの知って驚いたのは、"The Aviator"に出会ったのがきっかけです。
偶然見つけた絵本テイストの飛行機の立体アニメーションは、FlightGearのリアルフライトシミュレーションとはまた違い、そのかわいらしさにすっかり惹かれてしまいました。飛行機つながりでぜひ紹介しようと思ったら、使うのは自由だが、何やらそのままでは公開は認められず、自分で手を加えたものでなければならないようなことが書かれています。
仕方がないので、このThree.jsを使った飛行機の3Dアニメーションの加工にとりくむことにしました。

サンプルでは、青い円筒を海に見立て背景の雲とともに回転させ、その一部を画面に表示することで、弧を描く水平線の上を横スクロールのシューティングゲームよろしく飛行機が飛んで行くように見せているものです。そこで試みたのは、飛行機本体を作り変えることと、雲と海しかない背景にヤシの生えた小島やヨットなどを賑やかしに配置すること。
まだまだ知らないことだらけですが、改造は意外と簡単で、もっぱら苦労したのは3Dモデルのメッシュの頂点のナンバーリングがよくわからず、加工に試行錯誤したことでしょうか。例により何もわからぬままの闇雲流のプログラミングなので、理解の前進の跡がくっきりと残ったプログラムになっています。
より悩ましかったのは造形のセンスの問題の方だったでしょう。絵本のようにデフォルメすることは手抜きではないですから、他人が見てわかる程度のそれらしさがないと困るわけです。ヨットの帆を薄くしたりすれば、飛行機の翼がただの板ではバランスがとれなくなります。翼のふくらみを強調するなどやりすぎれば、絵本らしいテイストがそこなわれてしまいます。
画像のように、航空機は水上機と双発機、飛行船を作ってみましたが、イメージ通りにはいかないものです。あげくの果て冒頭のスクリーンショットのようなパクリまで。ホテルはまあまあのできになりましたが、さすがに重くなりすぎました。



FlightGearとは関係のない3Dアニメーションですが、Galleryのトップに置いちゃいました。このブログではできることがあまりにも限られていて、悲しいかなThree.jsは扱えませんからね。暇がありましたらGalleryを見てやってください。本家の方の"The Aviator"では、パイロットの髪がなびいたり、ゲームもありますから、ダウンロードして楽しんでみてはいかがでしょう。
無知な者が勝手なことを言いますが、Webブラウザ上の3D表現でもこれ程きれいな影ができるのですから、FlightGearでももう少しましな影ができるようにならないものでしょうか。





