OpenStreetMapとBlenderで「似非○○景観図」を作成する
対応バージョン
実行形式
Note
2.70
OSM Add-on + Pythonインタラクティブコンソール
似非景観図。オブジェクトデータへのアクセスと、モディファイアの適用について。Blenderの基本的な操作とPythonスクリプトについての初歩的な知識が必要です。
現在のAdd-onバージョンでは、インポート時に簡易な建物が出てくるようになりました。
OpenStreetMap?
"OpenStreetMap(OSM)は、道路地図などの地理情報データを誰でも利用できるよう、フリーの地理情報データを作成することを目的としたプロジェクトです。誰でも自由に参加して、誰でも自由に編集でき、誰でも自由に利用する事が出来ます。本サイトは、日本語での情報提供や相互互助の支援を行っています。 編集は、本家サイトOSM.orgで行うことができます。"と OpenstreetMap japanのページに書いてあります。
自由な地図を自由な3DCGソフトウェアで、というのが今回のウリ?
OpenStreetMapから地図データのエクスポート
ブラウザでOpenStreetMapにアクセスして、好みの地点の地図データをエクスポートします。
好みの地点までスクロール
画面上部の「エクスポート」ボタンを押します。
OpenStreetMap のデータは Open Data Commons Open Database License (ODbL) の下にライセンスされています。のリンクからライセンスについて読みます。
その下「のエクスポート」ボタンを押します。少しするとファイルをダウンロードします。失敗した場合は少し時間を置いて行うか、他の地図データをお試しください。
Add-onによるファイルのインポート
Import OpenStreetMap Add-on を使ってインポートします。この辺の操作の詳細は省きます。
まず、Open Street Map Add-on を入手します。
Blenderを開き、Add-onを使用可能に設定します。
User Preferenceの Add-onタブからスクリプトのインストール、有効化。
File > Import > OpenStreetMap (.osm) でエクスポート済みOSMデータをインポート。
とりあえずはデフォルトで。
インポートしたら適当に視点を移動させて好みのアングルを探します。
遠景が切れてたら3Dビュー、プロパティパネルのカメラの設定 Clip の End を10000くらいにするなどしましょう。
ちなみに1BU=1mの模様。
登録時の建物の名前が日本語で表示されることもあるみたいなので、BlenderのUser Preference からInternational Fontsを有効にしておきましょう。
建物っぽく見えるようにしてみよう
OpenStreet Mapでインポートされたデータは平面なので、厚みを付けていきます。
今回は「それっぽく見える」感じまでに限定して、Solidfyモディファイアを適用して建物の高さを表現することに。
import bpy
import random
for x in bpy.data.objects:
if x.type == "MESH":
x.modifiers.new(x.name,'SOLIDIFY')
x.modifiers[0].thickness = random.random()*200
上の6行をインタラクティブコンソールに貼りつけるか、テキストエディタから[Alt]+[P]で1回のみ実行。すると下の図のようになります。
実用性としてはともかく思ったよりも簡単な操作でそれっぽく出来る点でいいですね。しかも実際の地図データなので色々楽しめそうですし。
他の選択肢
実在のものでなくてもいいなら、Scene City(旧Suicidator City Generator) もありますね。 > http://cgchan.com/scenecity/
また、自力で作る、という場合にはこちらが参考になりそうです。
http://www.creativeshrimp.com/how-to-create-a-city-covered-with-fog.html