JP_004_GrabCAD Print: 緻密で正確な地球のモデルを造形する方法

Rhino、GrabCAD Print、ストラタシスの3Dプリンタを使って、リアルな地球の3Dテクスチャモデルを作る方法をご紹介します。また、適切な部品の優先度を選択する方法と、最適な色を出すためのテスト造形の実施方法についても取り上げます。

  1. Step 1: テクスチャイメージを準備する

    こちらのGrabCAD communityからモデルをダウンロードしてすぐに造形できます。

    このあらかじめ作成済みのモデルを使用する場合は、ステップ3に進んでください。

    モデルの作成方法を知りたい、そしてご自身でも同様のモデルの設計方法を習得したいという方は、このまま読み進めてください。

    海底地形地形データは、NASA(アメリカ航空宇宙局)のBlue Marbleプロジェクトから取得したものです。

    地形データからは、海面を基準とした地上の山々の高さがわかります。陰影によって傾斜または標高の違いが示されます。この地形図の起伏の陰影は、ほとんどが宇宙設置型レーダーによって収集された標高データに基づいています。

    画像の最も明るい部分に着目すると、南アメリカ大陸の西岸を縦に走る白い線がアンデス山脈、明るい白の一帯がヒマラヤ高原です。また南極とグリーンランドは、その氷層により、オーストラリアなど他の大陸に比べて比較的標高が高いのがわかります。

    海底地形データからは、世界各地の海の深さがわかります。NASAによる説明を借りれば、海底地形は水中の地形にあたるものです。

    NASA提供の地図では、青~白の陰影によって-8,000mから0m(海面)までの傾斜または水深の違いを示しています。陸地は黒で表示されます。大西洋の中央を縦に走る明るい線が有名な大西洋中央海嶺で、日本沖の濃い青の一帯がマリアナ海溝です。

    この2つの地図を無料の画像編集ツールGIMPで組み合わせて、モデルの表面を定義する白黒のバンプマップを作成しました。

    まず、海底地形データの画像をグレースケールに変換して、青の階調を取り除きました。

    つぎに、陸地が黒でなく白で表示されるよう、海底地形データの色を反転させました。

    地形図については、山がその他の陸地と比べて顕著になりすぎないよう、コントラストを変更しました。

    そして、2つの画像それぞれを1つの層として、一方をもう一方に重ねました。GIMPの[Select By Color]を使うことで、下にある地形図画像が見えるように、海底地形図の陸地部分を透明にして消すことができました。

    最後にGIMPの[Alpha Separation]ツールを使って、海の層がグレースケールの階調の下半分(~50%)を、陸地の層が上半分(50%~)で表されるようにしました(海が外側に出っ張った形状でなく、必ずくぼんだ形状に対応するようにするためです)。

    地球のほとんどの場所では、これはそれほど重要ではありません。ただし、アメリカのフロリダやオランダなど、海面の高さにごく近い、または海抜ゼロにわずかに満たない陸地エリアが一部存在します。そのため、こうしたエリアがモデルで海に覆われないようにしたかったのです。

    仕上げに[Paintbrush]ツールを使って、手動で大陸の周りに残っている黒の線を取り除く編集を行いました。その結果、大陸棚の陰影がより滑らかになり、陸地が急に下がるのではなく、徐々に海の層の下に消えていく形になりました。

  2. Step 2: Rhinoを使ってテクスチャモデルを作成する

    Rhinoで球体を作成し、地球の2D画像を球体表面上のポイントに変換する、球体の[Closest point]テクスチャマッピングを追加しました。

    つぎに[Tools] --> [Apply Displacement]で、球体の表面にディスプレイスメントマップを追加しました。このディスプレイスメントマップは、先ほど定義したテクスチャマッピングに従って球体にマッピングされます。

    上で説明した海底地形図と地形図を併せて作ったバンプマップを使用しました。もちろんこのマップは、正確な縮尺で球体にマッピングされてはいません。もうしそうなら、表面があまりに滑らかになってしまい、かなり見づらくなってしまうからです。

    その代わり、海の深さと山の高さを実際より大きくし、触って面白いテクスチャで、見た目にも凹凸のある地球のモデルにしました。バンプマップで行った50%が陸地、50%が海のグレースケールマッピングに合わせて、くぼみと出っ張りを同等にする必要がありました。 

    海の深さと山の高さを比べると、実際には海の深さの方が少し大きくなっています。地球上で最も高い山であるエベレストの高さは8,848mであるのに対し、マリアナ海溝の一部の深さは10,994mにもなります。しかし、同等にしても見た目にはほぼ正しく見え、陸地エリアの外観も良くなります。

    続いて[Material by Object]で割り当てを行って、別の色のテクスチャを追加しました。そうすることで、モデルの外観がフルカラーとなり、大陸と海をリアルな色調と色合いで見せられます。

    この外観テクスチャマップについては、Blue Marbleの別の画像「Blue Marble Next Generation」を使用しました。雲のない地球のフルカラーマップです。バンプマップと同じマッピング手法を使って、このマップを地球のモデル上に広げました。

    モデルに海を追加するため、最初の球体と中心の位置が同じ球体をもう1つ作成しました。2つ目の球体の半径は、元の球体の半径と同じにしました。2つ目の球体はバンプマッピングを行っていないため、最初の球体の「陸地」の高さより下、「海」より上に配置されます。

    海にはテクスチャをマッピングしませんでしたが、Rhinoの「水」材料を使って、海面より下にある最初の球体の詳細が見える透明な外観にしました。

    最後に、3つ目の大きめの球体を作成しました。今回も中心の位置は同じで、完全に透明な材料を使用しました。大きめの球体で最初の2つの球体モデルを囲みます。

    NASAの「Blue Marble Clouds」という画像を使って、この球体に雲の画像テクスチャを適用しました。まずGIMPで画像を編集し、雲の合間から地球が見えるよう、黒のエリアを透明に変えました。

    球体の基材を透明度100%の材料にすることで、雲がかった大気が地球の表面に漂っているように見せる効果があります。この画像では雲が見えるように透明度を17%に下げましたが、VRMLでエクスポートすると、雲の球体オブジェクト上の透明度は100%となりました。

    雲の球体はオプションです。この球体がなくてもモデルはうまく造形できます。また、大陸のテクスチャを手で触れて感じられる方が好ましいと考える人も中にはいます。アンデス山脈を指でなぞると、うっとりした気分になります。しかし、太陽系全体のモデルを作成する皆さんにとっては、雲の球体を含めた方が参考として役立つと考えました。雲の球体を入れると、モデルが宇宙から見た地球を写した有名な画像「ブルーマーブル」に近い外観となるからです。

  3. Step 3: テスト造形

    ケンブリッジオフィスにはStratasys J750がなかったため、1回の造形で3色の材料とサポート材のみを扱うObjet 260でテスト造形を行う必要がありました。このため、透明な部分とフルカラーの部分を同時にテストすることができず、テスト造形の精度の判断がやや難しくなりました。

    さらに、黄色の材料を切らしてしまってフルカラー造形のテストが一切できず、最終的なモデルの外観のチェックは、GrabCAD Printのレンダリングに頼るしかありませんでした。このため、すべての形状を同時に造形することができず、本来必要となるはずのテスト造形の回数より多くのテストを行うことになりました。

    何度か造形テストを行う必要があったので、材料節約のため、地球のモデルは縮小サイズで造形しました。一般に新規のモデルを作成するにあたっては、縮小したサイズで造形するやり方が有効です。透明部分を含む3分の1サイズの初回の造形では、少々サンドペーパーで磨くことで海の外観が良くなりました。

    このとき、モデルをRhinoから2つの別個のSTLとしてエクスポートすることで(いずれにしてもフルカラー造形はできなかったため)、それぞれのSTLに異なる材料を割り当てやすくなりました。

    (地形に問題がないと確信が持てたのは、この回の造形でした)

    最終回の造形では、ボストンオフィスのJ750を使用し、造形した部品をこちらに送付してもらいました。ボストンオフィスの皆さん、ありがとうございます!

  4. Step 4: GrabCAD Printで部品の優先度を設定する

    GrabCAD Printには、今回のようにシェルが重なり合うモデルを造形する際に使用できる、[パーツの優先順位]という重要な設定があります。この設定を使用して、モデルを構成するそれぞれのブロックに対し、スライサーによる適切な優先度付けが行われるようにしました。

    このモデルの場合、相対優先度を変更する必要があります。PolyJetプリンタで造形する場合、重なり合う複数のシェルからなるブロックのデフォルトの優先度は、そのバウンディングボリュームに応じて決まります。つまり、内側のシェルほど優先度が高くなります。

    優先度は通常、精密な近似値に基づきますが、陸地の球体のバウンディングボックスは海の球体よりも大きくなっています(山があるため)。このため、優先度を変更しなければ、海の球体を基準に、スライサーによってモデルに透明なコアが割り当てられてしまいます。しかし、これは正しくありません。地球全体が水でできていて、水面にいくつかの陸地が浮かんでいるように見えるモデルになってしまうからです。


    [パーツの優先順位]を使用可能にするには、[アドバンススライサー]を有効にし、GrabCAD Printの[環境設定]メニューの[Show assembly structure for VRML and OBJ files]をオンにする必要があります。これらの詳細設定を行った後、アプリケーションの再起動が必要となる場合があります。

    ※バージョン1.47現在この設定は不要です。


    続いて、モデルをインポートすると、海、陸地、大気圏の3つのそれぞれ異なるブロックが集まってできたモデルであることがわかります。ブロックをそれぞれ個別にクリックして優先度を変更できます。