現在開発中の LRTsim では、函館の街並みを再現しています。街並みを再現するうえで欠かせないのが「建物」の 3D モデルです。
建物の 3D モデルは、すべて Blender というモデリングツールと、GIMP という画像編集ツールによって作成されています。
今回は、これらのツールでどのように建物を作っているか紹介します。
また、作成時のポイントは下記の 4 つです。これを念頭に置きながら作っていきます。
- 作った建物はシミュレータ内ではすぐに過ぎ去ってしまうのでこだわりすぎない。
- 位置・高さ・奥行について、アバウトな相対関係があっていればよい。
- 多少の凹凸をつくり、立体感を出す。
- 事前に撮影したテクスチャを貼ることでリアリティを加える。
街並みを作る大まかな流れ
- 作成対象区画を Google Map, Google Earth を使い、全体像を把握する。
- Blender で区画のラフモデリングをする。
- GIMP で区画のテクスチャを作成する。(※事前に撮影しておいた写真を使用する)
- 2 で作成したラフモデルに 3. で作成したテクスチャをマッピングする。
- ラフモデルに凹凸をつける。
- モデルを fbx でエクスポートし、Unity にインポートする。
- Unity で位置を調整して出来上がり。
今回は、下図の区間を作成対象としラフモデルの手順を紹介します。
Google Map で作成する区画の全体像を知る
さいきんは便利になったもので、Google Map (Earth) を使うと、街並みを 3D で俯瞰できるんですよね。
この Google Map の機能をつかって、まずは区画の全体像を把握しつつ、各建物の大きさを計測します。
つぎに Google Map 上で右クリックするとメニューが表示されるので、この中から「距離を測定」を選択します。次に、測定したい長さの、始点と終点をクリックで選択すると、画面に距離が表示されます。
この方法で、この区間にある建物の幅をそれぞれ測ります。
ただし、10 cm オーダーのアバウトなもので良いです。
というのも、シミュレータの運転中は、作った建物に注目されることは無く、ほとんどが一瞬で通り過ぎるものだからです。
Blender でおおよその形をつくり位置を決める
次に Blender でこの区画の街並みを形をつくっていきます。
流れとしては次のようになります。
- Google Map で測定した情報をもとに、1 区画の地面を作る
- 建物の Cube を置く
- それぞれの Cube の大きさを整えていく
- それぞれの Cube を実際の建物の形に整形する
まず、Blender を開くとデフォルトで配置されている Cube があるので、これを削除し、平面メッシュを追加します。
このとき、平面のサイズをさきほど Google Map で調べた 1 区画の長さに設定します。
同様に、各建物を Cube オブジェクトで配置します。
単純に配置すると建物の底面が地面を突き抜けますが、気にしないでください。この段階では建物の幅と、横並びの位置、建物前面の位置を合わせることに注力します。
建物の高さと奥行を調整する(ラフモデリング)
次に、建物の高さと奥行を調整していきます。
ここで Google Map ではなく、Google Earth を使用します。
Google Earth では「ピンを打つ」という機能があり、このピンは任意の高度に置くことができます。
Google Earth のツールバーに画鋲アイコンがありますので、これを押すと画面上にピンを打つことができ、ピンのプロパティで「地面に相対」で高度を入力すると、ピンの位置が高度方向に移動していきます。
この方法で、数値入力と目視を繰り返し、建物の高度を特定します。
下図の例ですと、およそ 7m となります。
こうして得られた高度を、先ほどの Blender ラフモデルに適用し、同時に建物の底面を地面に合わせます。
このようにして他の建物の高さを調整します。
すべての建物の高さを測定するのは大変なので、どれか 1 つの建物だけ高さを測り、あとは目視で相対関係が合うようにアバウトの調整します。
高さを調整したら、つぎに奥行を調整します。
奥行については、この記事の冒頭で説明した Google Map の距離測定機能を使って得られた長さを参考に調整します。
奥行を調整したら全体を俯瞰します。
ラフモデリング終了。テクスチャ作成へ。
これでラフモデリングは終了です。 次回はテクスチャ作成編です。
通常ですと、細部のモデリングを終えてからテクスチャマッピングだと思いますが、さきにテクスチャマッピングをする意図がありますので、そのあたりも次回紹介したいと思います。
最後までご覧いただきありがとうございました!
コメント