見出し画像

ひまわりの画像から3D台風を作成する


はじめに

 今回は、気象衛星ひまわりの赤外画像に写る雲を立体化することで3Dの台風を作成する話です。
 下の画像は、令和六年台風七号を3Dにしたものです。

関東は大騒ぎした台風7号

以下に、3D台風の作成方法を説明します。

赤外画像と雲の高さ

 気象衛星の赤外画像とは、衛星から観測した赤外線の強度を記録したものです。赤外画像では、温度が低いほど白く表示されます。
 一方、気温は、高度が高いほど低くなります。
 つまり、画像が白い ⇔ 温度が低い ⇔ 高度が高いという関係が成り立っています。
 この関係から、赤外画像に写る雲(白い部分)の高さを推定できます。
 なお、衛星から観測しているので、ここでいう雲の高さは、雲頂高度です。

赤外画像の入手

 赤外画像は、気象庁のWebサイトから入手できます。
 画像は、タイル形式で提供されています。タイル座標系は、地理院タイルと同じものです。
 画像のURLのおけるB13(バンド13)が赤外画像を表します。また、URLの時刻は、日本標準時ではなく、協定世界時です。

三次元化

 Displacement mappingにより雲を三次元化します(Displacement mappingは、所与の位置情報によりオブジェクトの頂点位置を実際に変更する手法です)。
 まず、赤外画像からテクスチャを作成します。
 次に、テクスチャを平板状のオブジェクトに貼付けます。
 最後に、平板状のオブジェクトを凹凸状に変形させます。具体的には、赤外画像を高さマップとしてDisplacement mappingを行い、オブジェクトに高さを設定します。
 これにより、赤外画像の平面的な雲に高さが与えられ、雲が三次元化(立体化)されます。

盛り上がる台風7号

陰影付け

 雲の立体感を強調するために、拡散反射による陰影付けを行います。
 本記事の実装では、反射模型としてPhong模型を用いました。Phong模型における法線は、高さマップ(赤外画像)から求めています。

影を落とす台風7号

 なお、動画にする場合は、チラつきを抑えるために、太陽(光源)の位置を固定したほうがよいでしょう。

完成

 以上により3D台風の完成です。

ポリゴン台風7号

応用

色付け

 雲の高低差を強調するために、高さに応じた色付けを行うことが考えられます。
 冒頭の画像は、この色付けを行ったものです。さらに、冒頭の画像では、以下の処理を加えています。
 ・雲の明度を上げるために、環境光を追加
 ・台風を選択的に表示するために、所定高さ以下の雲を省略

台風 'Matlab Jet' 7号

点群

 テクスチャをオブジェクトに貼付ける方法の場合、雲が面として表示されるので、雲らしく見えません。
 そこで、面(ポリゴン)の代わりに点(ポイント)を使用することが考えられます。

ピクセル台風7号

 点で表示することでより雲らしい見た目になります。
 一方で、点表示には以下の短所があります。
 ・透視投影を行っていると手前側がスカスカになる
 ・面に比べると奥行きを把握し難く立体感に乏しい印象を受ける

とびだす台風

 ここからは、立体視が可能な動画の一覧です(奥行きを強調する設定にしているので、あまりとびだしません)。
 立体視の方式は、アナグリフ、VRゴーグル向け、3DS向けの三つです。それぞれの細かい説明や注意点は過去の記事を参照してください。

アナグリフ

 赤青メガネ向けの動画です。暗記マーカ用の赤・緑シートでも代用できるはずです(左目が赤)。

VRゴーグル向け

 左右の目ごとに画面がある表示機器向けの動画です。3Dテレビのように一画面しかない表示機器では上手く立体視できません。

3DS

 3DSの内蔵ソフトウェア「ニンテンドー3DSカメラ」向けの動画です。
 ※ファイル名や保存場所などに制約があるので注意してください(過去記事参照

以上

地理院タイルを加工して作成

古往今来得ざれば即ち書き得れば即ち飽くは筆の常也。と云うわけで御座います、この浅ましき乞食めに何卒皆々様のご慈悲をお願い致します。