リアルな惑星


Terragenは、主に風景を作成するために使用される特殊な3Dアプリケーションです。 その多くのメリットに、リアルなサーフェス(地形や水面、大気と雲)を表現する能力があります。ほとんどの作品は、カメラ視点を地上に配置するものばかりですが、宇宙空間にも配置する事も可能です。 Terragenは惑星を構築するためのキラーアプリです。

サーフェス・マテリアル

まずは必要なマテリアルを集めるためにNASAを頼る事にしましょう。

NASAの Blue Marble Web ページには、 Visible Earth カタログの一環として、地球表面の多くの高解像度画像が含まれています。大半は、その年の各月を表す表面画像の合成です。季節の変化を明確に見る事が出来ます。北極の氷冠が進退し、植生は緑色から茶色に変わり、再び繰り返します。同じスケールと解像度で利用可能な他の画像は、地形(高度)、水深測量(海深)、都市の灯、覆われた雲です。
上記サイトからダウンロードした地球表面画像

地球サーフェス画像と標高画像の2つをダウンロードします。

上記サイトからダウンロードした標高画像

標高画像において、ピクセルの明るさは高度を表します。ピクセルが明るいほどその場所の標高は高くなります。

水面マスク(見え方によっては大陸マスク)が必要です。サーフェス画像の海洋部分をPhotoshopなどのレタッチソフトウェアで白く塗り潰します。大陸は黒で塗り潰し、モノクロ画像を作成します。
水面マスクをPhotoshopで作成しました。

シーンの設定

シーンには『Planet』オブジェクトだけが必要です。カメラは、惑星全体を捉えるのに十分な1億6千万マイル向こうに設置します。焦点距離は、惑星表面の縮図を見せるために200mmに設定します。

キャラクターモデリングアプリケーションと違い、Terragenはオブジェクト間の親子関係を作成する能力を欠くので、作動する惑星系を構築する事は難しいでしょう。今回のシーンは天動説に基づきます。Terragenのビルトインの光源(『Sunlight』)の太陽は『Planet』の周りを周回します。

惑星の表面をクリアな眺めにするため、大気を無効にします。
デフォルトの『Planet』、カメラの焦点距離("Focus distance")は200mm。

サーフェスの構築

Terragenのノード編集で3つの『Image Map shader』を作成します。
  1. 地形のサーフェス画像を惑星のサーフェスにマッピングします。
  2. 標高画像は、サーフェス・ディスプレースメントを作成します。
  3. 水面マスク用。
最初の『Image Map shader』は、ディスプレースメントを処理します。標高画像を選択し、投影方法に"Spherical"を選択して球状に表面に投影します。この設定時、シェーダの位置を『Planet』の"Center"と同じ数値に設定します。デフォルトは(0, -6.378e+006, 0)。そして、『Image Map shader』を『Default_shader』にノード名を変更します。
ディスプレースメント用『Image Map shader』の設定画面

作成したディスプレースメント用シェーダは、標高(Displacement)と光度(Luminosity)の効果が得られる『Default shader』と関連付けます。そして、『Default_shader』を『Earth Surface』にノード名を変更します。
『Earth Surface』を使って、ディスプレースメントを設定。

『Default shader』に作成した『Displacement_Shader』を関連付け、"Displacement Multiplier"を10000(m)に設定します。地球上最高度のエベレスト山の8,848メートルより少し高くします。
『Default shader』を『Planet』に接続します。
標高画像を設定した時点のレンダリング・ビュー

サーフェス画像は標高画像と同じ要領で設定します。そして、『Image Map shader』を『Earth Diffuse』にノード名を変更します。

『Earth Surface』に作成した『Earth Diffuse』を関連付けます。

地球サーフェス画像と標高画像を適用したレンダリング・ビュー

同じ要領で水面マスクの設定を行います。この水面マスクは『Earth Surface』の"Reflectivity Function"に関連付けます。そして、『Image Map shader』を『Sea Mask』にノード名を変更します。
[Specular]タブの"Refraction(屈折率)"と"Roughness(粗度)"は、大きくて柔らかい鏡面ハイライトを生成屈折率と粗度の設定は、大きくて柔らかい鏡面ハイライトを発生させるように調整されています。この水面マスクは地形に適用されないようにします。

[Specular]タブの設定を適用したレンダリング・ビュー

大気を追加

デフォルトの大気の設定は、大気を水平に見た風景を対象としています。惑星作成においては、大気を垂直に、もっと広域で覗いています。 靄と色の設定は以下のように調整します:
『Planet atmosphere』ノードの[Main]タブを設定

大気が追加設定されたレンダリング・ビュー

大気の追加により、Terragenの大気がどれほどリアルな光学に基づいて作動しているかが示されました。これまで非常に暗かった海は、この時から大気の青空に反映します。海の色を調整するには、『Diffuse Shader』の反射率設定や、『Earth Atmosphere』の"BlueSky Density"の数値を調整します。

最後に雲層の追加を行います。
『Cloud layer v2 01』に関連付けられた『Density fractal 01』シェーダ設定は、惑星のブローバルナスケールと調和するために増大させる必要があります。また別の方法として、[Add Cloud Layer]で"Global Dense"を選択して追加した『Global cloud layer』の場合、デフォルトで惑星用に調整された設定で使用する事が出来ます:

雲層が追加設定されたレンダリング・ビュー。左が参照サイトに基づいた雲層、右が『Global cloud layer』を使用

公式サイトのTopic: The Blue Marble TGD の場合、上記 Blue Marble Web ページの"Blue Marble: Clouds(雲画像)"を使い、よりリアルな地球を作成する事も出来ます。

位置調整と回転

地球は軸上で傾いています。誰もがこの傾きによって季節を作り出しているかを知っています。リアルな照明とアニメーションのために調整が必要です。しかし、Terragenが備える機能の回転命令は傾き、勾配、向き(Z、X、Y)の構造が複雑です。どれか一方を変更すると、残り2つの値にも影響します。X,またはZ軸上に惑星を傾け、Y軸(地球の任意の場所を見えるようにするため)を回転させる場合、傾けた軸と共に回転します。アニメーション時、地球の頂点がぐらつく状態を引き起こします。

これを処理するために、2つの別々のノードで惑星の傾き(X)と回転(Y)を一旦崩し、Yを最初に設定してXに影響を与えないようにします。雲層も同じようにします。

最初に既存のシェーダ(基本の惑星のサーフェス、標高、反射率)を組み立てるために、大きな容器として『Transform Input shader』を作成・接続し、それを使って見出しを設定します。

これを、『Planet』ノードに接続します。『Planet』ノードは、24.437度のX回転設定で軸傾きを処理します。

プログラムの内部の回転命令はZXYですが、"Rotate"のパラメータはX、Y、Zの順で表示されている事に注意して下さい。

"Translate Textures with Planet"と"Rotate Textures with Plane"の両方にチェックを入れます。回転、移動に合わせてテクスチャが適切に位置あわせを行います。

2つの『Transform Input shader』を使用し、雲層を傾けて回転させます。実際には、『Cloud Layer』の『Density fractal』シェーダを傾けて回転させ、雲形を操作するフラクタルパターンを作成します。

前述で作成した『Cloud Density』ノードを、最初に作った『Transform Input shader』に接続します。これは向きのY軸を処理します。

続いて同じように、次は勾配のX軸を処理します。

これら『Transform Input shader』ノードの両方が、『Planet』オブジェクトと同じ"Center"位置に変換されてる事に注意して下さい。これらの変換設定が一致しないと、『Density』シェーダと『Planet Atmosphere』ノードが相殺され、回転値をアニメーション化する時に予測出来ない結果につながります。数値を間違えないように、コピー/ペーストを使用して下さい。

2番目の『Transform Input shader』は『Earth Clouds』の"Density shader"に接続します。

全てを設定しました!
地球を回転させるためには、Y軸の値だけを適切な『Transform Input shader』に設定してください。太陽を配置する時は、その向きのYの値を変更して下さい。

完成したノードネットワーク

完成データファイル
完成データにはサーフェス画像や、標高画像、水面マスクのファイルは付属していません。