Support Topics |
|
|
サポートトピックス / UC-win/Road |
 |
City Designツール Vol.2 (全7回) ImageToTerrain |
|
|
アリゾナ州立大の小林です。ここでは、フォーラムエイトから公開されているCity Designというツールを紹介していきます。
フォーラムエイトのVRパッケージであるUC-win/Roadと、他の3D・CGパッケージ間でシームレスに都市データを生成・変換するためのツール群の開発を目指しています。ここで紹介するツールはソースコードも公開していますが、今のところ特定のサポートは行っていないため、バグなどの問題があっても責任は負いかねます。あらかじめご了承いただくようお願いします。
また、今回の記事をご覧になった建築・土木関係の方で、貴社のシステムに適した簡易ツールが欲しいというご希望があれば、ぜひお寄せください。
|
前回(第1回)は、UC-win/Roadからのデータを他の3Dソフトで読み込むためのPovrayToMaxというツールを紹介しました。今回はVR都市モデルを最初に構築するために必要となる地形生成と航空写真との合成に関するツール ImageToTerrai、を紹介します。既存のとある地域のVR都市モデルを作成しようとしたとき、最初に解決しなくてはいけない難関です。多少GIS(地理情報システム)やGoogleMapなどで3次元地図などを見慣れている方には、「どうしてそんなことが問題になるの?」と思うかもしれませんが、これは非常にやっかいな問題です。
まず、地球の丸みを含めた地形データであるDEM(Digital Elevation Model)と、2次元の航空写真を一致させなくてはいけなません。高校の地理の授業を思い出します。地球儀に折り紙を貼り付けるようとするとかなり工夫をしなくてはいけません。数学のできる方なら、多少の方程式が思いつくでしょう。しかし、さらに厄介なことに地球は単なる球面でもなければ、単純な楕円体で近似できるようなものでもないのです。かなりの歪みがあり、地域ごとに変数を変えなくてはいけなかったり、年度によっても変化したりしているので、非常に複雑です。有名なUTM(ユニバーサル横メルカトル図法)からXY座標への変換式の一部を下に記しました。全部の数式をのせるだけで4ページほどかかるため、ここでは、最初の一行目だけ紹介します。詳しく知りたい方は以下の書籍をお勧めします[1]。
[1] Q. Yang, J. P. Snyder, W. R. Tober, Map projection transformation:
principles and applications., Taylor and Francis, Hong Kong, 2000.
 |
■式1 UTM(ユニバーサル横メルカトル図法)からXY座標への変換式の一部 |
たとえどんなに複雑であろうとも一旦プログラムしてしまえば、使う側はあまり問題なくXY座標系が得られるでしょう。
では、いったい何がそんなに問題なのでしょうか?
ここでは、地形データと航空写真という2つのデータのことを少し説明します。多くの場合DEMデータは30メートルグリッドなどが主流となっております。それは地球を緯度・経度の1度四方の図形単位でデータを管理しているからです。地球の周囲は赤道直下でおおよそ4万Kmなので360度で割ると、1度あたりは111Kmです。それをさらに60で割ると1分の長さ、3600で割ると一秒あたりの長さが計算されます。30.86mが一秒あたりの長さです。(実際には緯度が上がると一周の長さが短くなるため、もっと短くなります。)緯度経度1度づつのDEMデータを3600x3600画素の画像データだとすると、1つの画素の値をおよそ30メートルグリッドの標高データとして格納することになります。
うれしいことに2009年より経済産業省/NASAのサイトから世界中のDEMデータ(ASTER
GDEM)を無償で利用できるようになりました。
一方、航空写真の場合はUTMとは別のState Planeという投影方法を利用することが一般的です。ただし、一般の方がRectify修正された(すべてのピクセルの位置が正確に緯度経度の位置に合致するように修正された)高価な航空・衛星写真をVRモデルで利用するとは考えにくいです。入手できた航空写真の4隅の緯度経度の情報を使うほうが一般的です。ただし、この場合は航空写真のすべての画素の位置とDEMの位置がぴったりかさなるようなことはありません。
つまり、1)簡易的なソリューションではDEMと航空写真を完璧にあわせることはできないのです。また、2)入手できたDEMデータと航空写真の四隅をあわせることでさえ、GISツール(特に航空写真用GIS)の熟練が必要です。VR都市モデル用のデータとなると、さらに3)GISからVR環境へのデータの受け渡しが必要となります。使っているGISシステムやリソースファイルの形式が変われば、さらに試行錯誤が必要となります。これが地形データと航空写真の合成を難しくしている理由です。
2007年より世界のいろいろな国の研究者達(16人)とWorld16というプロジェクトをおこなっています。
各メンバーがVRの新しい利用についての研究・開発の成果を毎年おこなわれるForum8のシンポジウムで発表してきました。
その中で最大の問題が、航空写真をともなった地形データの作成でした。国によって入手できるデータに制限があったり、別のシステムを利用していたり、同じUTMでも数式の精度が違ったりと、最初の1年は地形データ作成だけでかなりの苦労をしました。
その経験から、もっと一般的なソリューションの必要を感じ、誰でもすぐに航空写真付地形データを作成できるツールとパイプラインを開発しました。今回はそのツールの紹介です。
 |
■図1 UC-win/Roadで作成されたVRデータを3ds Maxに読み込み、モーションブラーなどの特殊効果を加えてレンダリングを行った |
|
ここでは、DEMデータと航空写真の入手方法、それらの編集方法、そして開発したツールを利用してUC-win/Roadで20km四方の航空写真つき地形データの作成方法を紹介します。ここで紹介するソリューションは世界中のどこであろうとも可能です。
ステップ1:
DEMは上で説明したようにASTER GDEMのサイトから入手できます (http://www.gdem.aster.ersdac.or.jp/search.jsp)。そのサイトでは緯度経度1度づつの範囲の標高データが3600x3600画素の画像データ(TIF)として提供されています。
ステップ2:
次にVRモデル作成の中心位置の緯度・経度を用意します。これはGoogle Earthで指定すると左下のメニューに選択された地点の緯度経度が表示されますので、これを利用します。
ステップ3:
ここで問題になるのは、20km四方の航空写真を獲得するためには、まず中心位置より10km北、10km南、10km西、10km東の地点の緯度経度が必要です。またその地点に対応するDEMデータの位置も必要となります。これらを計算してくれるツールをExcelファイルとして開発しました。http://world16.forum8az.com/2010/07/vr-tutorialsterrain-generation-for-uc_23.htmlのサイトからツール群とチュートリアルビデオがダウンロードできます。
ステップ4:
ダウンロードされたファイルの中から、terrain calculator (blank).xlsxファイルを開きます。1)ASTERサイトからダウンロードしたGDEMファイル(時には複数になる)の右上と左下の緯度経度を入力します。下図の場合では左上は北緯37度西経116度、右下が北緯36度西経115度です。2)前節で説明したように、緯度経度によって一度の長さが異なります。Google
EarthでVR都市モデルの中心位置あたりの一度の緯度方向、経度方向の長さをしらべます。下図の場合では緯度方向1度の長さが110848.74メートル、経度方向1度の長さが89867.06メートルです。3)と4)にステップ2の中心の緯度経度 (北緯36度10分17.71秒、西経115度9分0.22秒)を入力します。
 |
■図2 ステップ4 |
ステップ5:
入力後、GDEMファイルのクロッピング位置が表示されるので、Photoshopなどの画像編集ソフトで、画像を切り取ります。
今回の例では、(x,y)=(2660,2658)の位置から横801ピクセル、縦650ピクセルで切り取ります。
このツールを利用するときは、緯度(Latitude)は画像ではY方向、経度(Longitude)は画像ではX方向だということに気をつけてください。
 |
■図3 ステップ5 |
ステップ6:
次に航空写真の入手です。航空写真については、Google EarthのProバージョンを利用することで、世界中の航空写真を入手することができます。こちらもVR都市モデルを中心とした20km四方の画像を獲得するために、緯度経度の位置が必要となります。同じツール上でこれらの情報が計算されています。今回の場合は北緯36度11分22.681秒―西経115度10分20.361秒(左上)と北緯36度9分12.739秒―西経115度7分40.079秒(右下)とする航空写真をGoogle
Earth Proのツールで獲得しました。
 |
■図4 ステップ6 |
ステップ7:
DEMデータはそのままでは、UC-win/Roadにインポートできないため、XML形式のデータに変換するXML
Terrain Makerというツールを開発しました。ステップ3でダウンロードしたファイル内にある"TerrainMaker.jar"というファイルをダブルクリックすると以下のGUIがポップアップされますので、ステップ5でクリップしたDEMファイル(TIF形式)を1に、保存したいXMLファイル名を2に、3と4のスロットにステップ4で利用した一度あたりの緯度経度の長さを入力します。"START"ボタンを選択すると、20km四方のXMLデータが作成されます。(10分程度かかります)
 |
■図5 ステップ7 |
ステップ8:
UC-win/Roadを立ち上げて、FileからLoad Terrain Patchを選択し、ステップ7で生成されたXMLファイルを指定すると、地形データがUC-win/Road上で作成されます。作成されたデータに、File・Road
Street Mapsでステップ6で獲得した20km四方の画像を貼り付ければ、航空写真つきの地形データが完成します。下図はここで紹介したソリューションで作成したUC-win/Roadのデータです。
|
今回はステップの説明が長くなりましたが、このパイプラインを使うことでそれまで1日以上かかった作業が、15分〜30分で作成できるようになりました。紙面の都合上ここでは紹介できませんでしたが、DEMと航空写真から他の3Dソフトでも利用できるような航空写真つき地形データを作成できる3ds
Maxプラグインも開発しました。興味のある方はご連絡ください。
|
例えば狭い路地や山道などを走行中、駐停車や何かの障害物を避けたいとき、他車線にはみ出すことになります。
このような運転をUC-win/Roadのマニュアルドライブで行うには、道路の作成にちょっとした工夫が必要です。
 |
|
 |
|
 |
■図1 車道の詳細 |
|
■図2 UC-win/Roadでの狭い道の走行 |
|
■図3 対向車線にはみ出した走行 |
|
通常、UC-win/Roadで作成した道路を走行すると、対向車線にはみ出して正常な走行を続けることはできません。
すぐに走行ルートが修正され、元の車線に戻されます。そこで、道路断面で車道幅を拡げます。
路肩から対向車線の端まで、走行を想定される幅について、対向車線と重ねて設定します。
図4は通常のシンプルな道路断面です。これを図5で示すように、車道幅を拡げて対向車線と重なるように設定します。車道と車道の間にはダミーとなるノードを挿入します。そのうえで、各車道は車線の数を2にして、片側2車線とします。
これにより、普段の走行は車線1を、はみ出すときは車線2を走行することになり、スムーズな車線変更の動きとなります。
また、テクスチャが重なることによるチラツキの可能性を防ぐため、下側になる車道とダミーノードのテクスチャは黒色にし、黒色透過させて透明にしておきます。
 |
|
 |
■図4 通常の道路断面 |
|
■図5 車道幅を拡幅した道路断面 |
|
|
(Up&Coming '11 新緑の号掲載) |
 |
|







>> 製品総合カタログ

>> プレミアム会員サービス
>> ファイナンシャルサポート
|