2017年4月30日

Grasshopper : Elk

Elkを試してみました。
ElkはGrasshopper用のアドインで、OpenStreetMapから書き出した地図ファイル(.osm)を読み込んでRhino上に地図モデルを作ることができます。
Rhino以外全部無料なのはよいのですが、最も重要な地図データがショボい。特に日本のデータは...。
オープンソースなので仕方ないですけどね。

個々の建物データにheight情報があれば高さのある3Dの建物モデルを作ることができます。
地図好きな方はご近所の情報を追加してください。
アカウントを作ってログインすると誰でも自由に地図を編集できます。


ElkはFood4Rhinoから。


2017年4月15日

無料で地形メッシュを取得!2

実は国土地理院のページで直接3Dデータのダウンロードができます。
地理院地図3D
恐らく元データは数値地図なのでしょうから、かなり高精度なのだろうと思います。


もともと触れる3D地図が作れる!(3Dプリンタで)とかいうコンセプトのものですが、簡単に地形メッシュを取得できるのでCG屋にとっても便利かもしれません。
ただし、アップにするとギザギザ...。触地図向けだからかな?それともデジタルすかし的な?

少し引くときれいなメッシュが取得できます。


2017年4月9日

国土地理院の基盤地図情報から地形メッシュを作る

地形メッシュを無料で作る!


[必要なもの]

  - 数値標高モデル
  - 基盤情報のダウンロードに必要な登録
  - 基盤情報ビューワー
  - 平面直角座標系
  - テキストエディタ
  - MeshLab
  - MeshMixer




[数値標高モデル]

  いわゆるDEMといわれるものを入手する必要があります。
  これは国土地理院のページからダウンロードできます。
  https://fgd.gsi.go.jp/download/menu.php

  数値標高モデルのボタンを選択すると、
  エリアを選択するための画面になります。
  ダウンロードしたいエリアを選択して、
  ほしい情報にチェックを入れてダウンロードします。
  今回は5mメッシュだけいいですね。
  ※ダウンロード時にログインとパスワード認証が必要です。

  ちなみに緯度・経度がわかっていると検索しやすいです。

  ビューワーのダウンロード

 [読み込み]
  ビューワーをインストール・起動したら、
  ダウンロードしたファイルをドラッグ&ドロップでデータを読み込めます。
  ※ZIPファイルを解凍する必要はありません。

 [書き出し]
   書き出したいエリアをズームして、ビューワーの画面いっぱいにしてエクスポートします。

  "エクスポートー標高メッシュをシェープファイルへ出力" を選びます。
  ブラウズボタンからテキスト形式.IDXYZ(*.xyz)を選んで保存します。


  この時大事なのが "直角座標系に変換して出力" をチェックすることです。
  書き出しエリアが何番系なのか調べて置きましょう。

  [地図データ]
    後で航空写真をテクスチャとして貼るなら、
    地図データも出してあげると位置合わせがしやすいと思います。
    .SFCで書き出せば、JWWなどでDXF変換できます。



  書き出されたデータの中身はこんなフォーマットになっています。


  IDとX、Y、Zの座標値の4つのコラムで構成されています。


[測量座標系の変換]

  基盤情報ビューワーから書き出された点群データは測量座標系になっているらしく、
  XとYが反転しています。
  そのまま変換してCGソフトに取り込むとひっくり返ったりしてややこしくなるので、
  CGソフトに持って行く前にテキストエディタで修正してしまうと楽です。

必要なのは以下の作業です。
  - IDの列を削除  ※座標系の変化とは関係ないですが1列目は不要なので削除!
  XとYを入れ替え
  Y-Upの座標系に変換  ※Maya等、Y-Up座標系のCGソフトに持っていく場合のみ
    
正規表現を使った置換をすることになりますが、点群データのサイズがデカすぎると
その辺のテキストエディタでは開くことさえ大変になるので、自分はEmEditorを使っています。

一列目削除
 
入れ替え

    Y-Upにするには測量系を直したあと、YとZを入れ替えます。
    この時、Yは符号を反転してからZと入れ替える必要があります。
    検索置換でやるなら、Y軸にマイナスを追加して、
    あとでマイナス二つになったところを削除します。



[点群をメッシュ化]

  MeshLabを使うと取得した点群ファイルをメッシュ化できます。
  MeshLabはOpen Sourceです。


[MeshLab]

   点群データの読み込み
   Import Mesh...


  [ズレている点群を削除]
    点群の端部がガクンと落ちていたりすることがあるので目視で確認して、おかしければ
    点を選択して削除します。
    点選択ツールで選んでからDelete。
    そのまま保存すると元の.xyzファイルが更新されます。
   

  [Compute normals for point sets]
    メッシュを張るまえに法線を計算します。

    地形の場合、たいていは上から見てNormalを計算するのがよいと思います。
    ※数字キーでビューを変えることができます。
 
    Show NormalをOnにするとNormal(法線)を表示できます。
    


  [Surface Reconstruction : Ball Pivoting]
    メッシュを生成します。
    パラメータの設定がなかなか難しいので何回かトライ&エラーが必要です。
  今回は5mメッシュを取得したので6くらいから始めてみます。
    
    Pivoting Ball radiusをあまり大きくすると不正なフェースがたくさんできるので、
    小さめがベターだと思います。
    ただし、あとで穴がたくさん出来るので、修正が大変になります。
    不正なフェースなど細かいことを気にしないような状況なら
    少し大きめにしてもいいと思います。

  [Cleaning and Repairing]
    どうしても一発で完璧なメッシュが出来ることはないので、
    いろいろな手法で修正が必要です。

  Select Self Intersected Faces


  Delete Selected Faces
    大変落ちやすいので保存しながら慎重に!
    こまめにexport as meshしてOBJなどに保存しながら作業します。

  Close Holes
    塞ぎたい穴の周囲の面を選択して実行するのがベターです。
  

  周囲のフェースを選択すると重なっている面がわかるので、
  その周囲まるごと削除してからClose holesをやり直すといいです。

  Close Holesした後に真っ黒になったら、それは単に裏返っただけです。

 

  [ダウンサンプリング]
    データが重すぎて扱えないほどになってしまうようなら、
    点群を読み込んだ後にClustered Vertex Subsamplingして点群の数を減らします。






[Meshmixer]


 MeshLabsで修正しきれなかった穴をどうしても修正したいなら、Meshmixerが便利です。
http://www.meshmixer.com/

  [Inspector]
    インスペクターを使うと問題点を洗い出してくれます。
    穴を塞ぐには、青いボールをクリックしてつぶしていきます。

  [Fill Hole]
    手動で穴を塞ぎたいなら、穴の周囲の面を選択してFキー。
    Wキーを押すとワイヤーフレームを表示します。

 
  この他にも便利な機能がたくさんあるのでいろいろいじってみると面白いですよ。







2017年4月2日

Grasshopper

アプリって、使わないと忘れてしまう...。

ほとんど放置だったGrasshopperもすっかり忘れてしまいました。
やっぱり自由自在に使えたら楽しいだろうなぁって思って、またゼロからやってみることにします。
Rhinoceros + Grasshopper