メルマガはこちらから

PAGE
TOP

3D都市モデルは処理負荷軽減が重要。頂点数やLODを扱う工夫

~クリエイターの開発事例~【中編】

特集
Project PLATEAU by MLIT

1 2

この記事は、国土交通省が進める「まちづくりのデジタルトランスフォーメーション」についてのウェブサイト「Project PLATEAU by MLIT」に掲載されている記事の転載です。

 PLATEAUの3Dモデルを採り入れ、建築物を用いたビジュライズなどを手がけるテクニカルディレクター集団BASSDRUMに所属する林 久純氏。3Dモデルを表示するところまでは簡単だが、データビジュアライゼーションに使うとなると、さまざまな工夫が必要だという。同氏に、PLATEAU導入のハマりどころ、そして、効果的に見せつつもPCに負荷をかけないコツを聞いた。

見せたいところだけを効果的にLOD2で表現

――OPEN HUBのSmart City Visualizerでは、PLATEAUの3D都市モデルを使った街の俯瞰からCROSS LABのオフィスに切り替わるところが、とてもスムーズにつながっていると思うのですが、何かポイントはありますか?

林:カメラは最初、ものすごく遠くに置いています。空撮のヘリコプターから見ているようなところにカメラを置いて、これがぐいっと寄ってくる。引くときも一緒ですね。思いっきりカメラを引いて。そこの位置合わせでは、PLATEAU側も少し大きくして合わせています。現実世界で、ドローンで遠くの方のカメラをからぐいっと寄って引くのと仕組みは同じです。

――ズームアップしたあとは、PLATEAUのデータとオフィスの図面を重ね合わせているのでしょうか?

林:そうです。Blender上であらかた調整したパーツを用意して、組み上げるのはTouchDesignerです。図面の座標に置いていく感じで、少し大きいなと思ったら小さくするといった微調整も、Blenderでやっています。

――ビルを表現するワイヤーフレームもBlenderでしょうか?

林:ワイヤーフレームは、TouchDesigner上で指定しています。今回は、ズームで寄っていくCROSS LABのオフィスが入っている建物だけがLOD2で、ほかはLOD1のデータを使っています。

 寄っていく建物がLOD2なのは、屋上などのディティールがあったほうが良いためです。他がLOD1なのは、処理負荷を下げるためです。細かいことですが、通常のワイヤーフレームですと、建物の裏側もワイヤーが入るので、見た目がごちゃごちゃしてしまいます。そこで今回は、手前の線しか出ないように隠面処理しています。そうすることで、カメラを引いたときも、全体が乱雑になりません。

[補足] LOD(Level Of Detail)は、3D都市モデルの詳細度のこと。建物のLODは下図のとおり定義されており、LOD1は直方体のモデル(俗に豆腐モデルとも呼ばれる)。LOD2は屋根や壁などの形状、そしてテクスチャも付いたモデル。

Blenderで結合して頂点数を極力減らす

――使ったファイル形式について、教えてください。

林:今回は建物のテクスチャを使わない想定だったので、OBJ形式を使っています。FBX形式は、テクスチャが付いているので処理が重い時もありますが、OBJ形式は比較的扱いやすいですね。

画像提供:林 久純氏

――PLATEAUのデータを、どのように加工してTouchDeisngerで表示できるようにしたのでしょうか?

林:まずBlenderでOBJ形式のデータを開き、9メッシュ分(3×3)のエリアと、橋や道路データを組み合わせたものを作りました。

 PLATEAUのデータ処理は、処理負荷軽減の繰り返しという側面があります。メッシュが細かく分かれていると、中での処理も重くなってしまうので、基本的にそれらはまとめています。利用したメッシュは2個しかありません。LOD2の建物と、その他のメッシュのみでシンプルです。

 今回はマテリアルもテクスチャも付けていません。LOD1であれば、比較的Blender上の作業は、そこまで難しくはありません。そして大事なのは頂点数で、それをいかに減らすかです。

[補足] PLATEAUのデータは、「建物」「橋」「道路」など、オブジェクトの種類で別ファイルに分かれている。また、メッシュと呼ばれる区画(10km四方や1km四方、データの種類によって異なる)でファイルが分かれているので、自分で合成しなければならない。

――頂点は手作業で削っていくのでしょうか?

林:さすがに手動は厳しかったので、Blenderのモディファイアを使って、オブジェクトのポリゴン数を削減させるデシメートモディファイア(Decimate)を2回に分けてかけています。正直1回でも良いのですが、2回に分けたほうがメッシュが崩れにくい気がしています。デシメートの設定は「束ねる(Collapse)」で、1回目の比率は0.6、2回目の比率は0.87にしています。それ以外はデフォルトのままです。これで頂点数が8~9万ぐらい減らせました。やり過ぎると、建物が三角形になってしまうので、そのギリギリまで攻めていますね。

 人物のモデリングであれば、手動で削ることもあるかと思いますが、PLATEAUほどのポリゴン量だと、これが一番簡単かなと思います。

頂点数が調整され、ビルの形状がクリアになっている 画像提供:林 久純氏

――結合や削減をしないと、データが重いため実用には向かないのでしょうか?

林:要件にもよると思うのですが、リアルタイムの映像演出系ものですと、最終的な演出にかけられるマシンの余力をどれだけ残しておけるかどうかで、使えるパーティクルの数などが変わってきます。そうした理由から、個人的に、素材に関しては下処理をほどこしたほうがよいと思います。CPUやGPUの処理量の取り合いがあったりするので、ベースの素材自体にはなるべく処理負荷をかけたくないということです。

[補足] パーティクルとは演出上の小片や粒子のこと。花びらが舞うなどの表現。

1 2

バックナンバー