tpc32-1

TOPIC 32|PLATEAUを使った映像作品を作る【前編】 LOD3モデルのディテールアップと物理シミュレーション[1/2]|シーンを作る

近年、詳細度の高いLOD3モデルが提供される地域が増加しており、近景の映像制作にも利用できるようになっています。このトピックでは、映像分野でPLATEAUを活用する応用方法の一つとして、モデルのディテールアップや物理シミュレーションを使用する方法を説明します。まず、シーンの作成から始めます。

Share

近年は詳細度が高いLOD3モデルが提供される地域も増えてきており、近景の映像制作にも活用できるようになりました。このトピックでは、映像分野でPLATEAUを使う応用のひとつとして、モデルのディテールアップや物理シミュレーションを使って動かす方法を解説します。

このトピックの内容は「PLATEAUを活用した映像表現の応用 LOD3の活用や大量オブジェクト制御によるシーン制作法」(2024年度PLATEAU Hands-onアーカイブ動画)でも制作方法をハンズオン形式で紹介。

【目次】

32.1  このトピックの見どころ

32.2  3D都市モデルの読み込み

 32.2.1  PLATEAU SDK for Unityを使ったエクスポート

 32.2.2  Blenderでインポートする

 32.2.3  データの確認

32.3  データの整理とクリーンアップ

 32.3.1  不要な都市オブジェクトの削除

 32.3.2  メッシュを整理する

 32.3.3  映像で使用しない部分を消す

32.4  シーンを作る

 32.4.1  カメラを配置する

 32.4.2  環境光を設定する

32.1 _ このトピックの見どころ

本トピックで扱う題材は、京都市をイメージした映像作品です。この映像作品は、実写とPLATEAUの3D都市モデルを組み合わせて制作したもので、シーンのほぼ半数がPLATEAUの3D都市モデルで作られています。

制作にはBlender 4.2 LTSを使用。さまざまなアセットを用いてリアル感を出したり、物理シミュレーションを用いて、すだれが風でなびく様子や浮遊物が衝突するシーンを作り出したりしています。また夜景のシーンでは、テクスチャを使ってビルから光が漏れるシーンを作っています。PLATEAUを使っている主なシーンを以下に示します。

本トピックは、前編・後編の2本立てです。前編のこのトピックでは、日中のシーンの部分――ふだん私たちが見ている目線のような「寄りのシーン」――をリアルに表現する方法を解説します。具体的には、下記の②と③を解説します。

空撮シーン

上空から撮影するシーンです。2023年度の映像作品を解説した「TOPIC 26|PLATEAUを使った映像作品を作る」とやり方は同じなので、本トピックでは解説しません。詳細は、該当トピックを参照してください。

図32-1 空撮のシーン

傘が飛ぶシーン

祇園白川の辺りで、傘が浮遊しているシーンです。このトピックで解説します。

ディテールを増すために、電線や電柱などを足しています。また右上のすだれは、物理シミュレーションを使って、風でなびくようにしています。このトピックの主たる解説部分です。

図32-2 傘が飛んでいくシーン

先斗町の路地でモノが浮遊するシーン

先斗町の路地で、モノが浮遊するシーンです。このトピックで解説します。

こちらもディテールを増すために、いくつかのオブジェクトを追加しています。また、立体感を出すために、壁に貼られたメニューを少しだけ押し出して窪みを付ける工夫もしています。モノが浮遊する動きは、物理シミュレーションで実現しています。

図32-3 モノが浮遊するシーン

鴨川のシーン

鴨川をモノが浮遊していくシーンです。③と同様の方法で作るので、このトピックでは説明しませんが、実はこの映像作品には、「PLATEAUで作ったシーン」と「実写のシーン」の両方が含まれています。実写のほうはモノが浮遊していないシーンです。ぜひ比較して、PLATEAUの3D都市モデルのディテールの高さを実感してください。

図32-4 浮遊シーン。上がPLATEAU、下が実写

遠景+浮遊シーン

PLATEAUの遠景シーンです。このトピックでは解説しませんが、次に説明する⑥に似た方法と、③と同じ浮遊の仕組みで作られています。

図32-5 遠景シーン

⑥ 夜景シーン(遠景)

夜景のシーンです。PLATEAUの3D都市モデルに夜景はないので、テクスチャで実現しています。次のトピックで解説します。

図32-6 夜景のシーン(遠景)

⑦ 夜景シーン(近景)

夜景のシーンの近景です。近景のため、屋根のディテールを出したり、窓からこぼれる光を付けたりするなど細かい加工を加えています。次のトピックで解説します。

図32-7 夜景シーン(近景)
コラム:素材と音楽について

この映像制作では、テクスチャやマテリアル、3Dアセットなど、さまざまな素材を用いています。以下に、使用している素材の一覧を示します(詳細については、それぞれ使用するところで改めて解説します)。

textures.com
https://www.textures.com/
テクスチャおよびマテリアル

Poly Haven
https://polyhaven.com/
テクスチャおよびHDRI

Tokyo Back Alleys
https://www.bigmediumsmall.com/tokyo-back-alley
3Dアセット

Botaniq
https://blendermarket.com/products/botaniq-trees
植物アセット

なお、映像制作においては音楽も重要です。今回は、ムービーの浮遊する世界観にマッチするように、京都にルーツがあるオルタナティブ ・ エレクトロニック ・ グループ「Sawa Angstrom」のメンバーで、シンガーソングライターの児玉真吏奈氏によるオリジナルの書き下ろし楽曲を使用しています。

32.2 _ 3D都市モデルの読み込み

映像制作では、3DソフトのBlenderを使っています。まずは、先斗町のシーンを例として、Blenderで3D都市モデルを読み込む方法を説明します。先斗町のエリアは、ドアや窓まで表現された詳細度の高いLOD3モデルが提供されています。

【メモ】

LOD(Level Of Detail)とは「モデルの詳細度」のことです。LOD1は直方体のモデル、LOD2はテクスチャがあり屋根も表現されたモデル、LOD3はさらに窓やドアなどの開口部まで表現したモデルです。京都市では全域でLOD1モデル、市街地でLOD2モデル、先斗町と祇園新橋の一部でLOD3モデルが提供されています(https://www.city.kyoto.lg.jp/tokei/cmsfiles/contents/0000312/312935/seibihano_LOD3.pdf)。LODについての詳細は「TOPIC 1|3D都市モデルでできること[2/2]|3D都市モデルの特徴と活用法」を参考にしてください。

32.2.1 _ PLATEAU SDK for Unityを使ったエクスポート

Blenderで読み込むため、PLATEAUの3D都市モデルをOBJ形式に変換します。変換には、PLATEAU SDK for Unityを用います。

PLATEAU SDK for Unityを使って3D都市モデルをインポートしたり、各種形式にエクスポートしたりする具体的な方法については、「TOPIC 17|PLATEAU SDKでの活用[1/2]|PLATEAU SDK for Unityを活用する」を参考にしてください。以下では、手順のみ示します。

【手順】OBJ形式に変換する

[1]新規プロジェクトを作り、PLATEAU SDK for Unityをインストールする

Unityを起動し、新規プロジェクトを作成します。プロジェクトを作成したら、PLATEAU SDK for Unityをインストールします。

[2]3D都市モデルをインポートする

[PLATEAU]メニューから[PLATEAU SDK]をクリックして、PLATEAU SDKを起動します。

[インポート]タブを開き、3D都市モデルをインポートします。[インポート元]で[サーバー]を選択し、[京都府]の[京都市]を選択して[選択範囲]ボタンをクリックします。

するとインポートする範囲の選択画面が開くので、先斗町の周辺の3次メッシュ「52354601」の区画を選択します。

範囲を選択したら、地物別設定がありますが、ここではテクスチャ付き(テクスチャ解像度8192×8192)、Mesh Colliderなしで、[建築物]と[土地起伏]のみにチェックを付けてインポートします。

【メモ】

ここではPLATEAU SDK for Unity上で都市を選択していますが、あらかじめG空間情報センターからCityGMLファイルをダウンロードしておいて、それを読み込むやり方でもかまいません。今回、使用している京都市の3D都市モデルは、下記のページからダウンロードできます。

【3D都市モデル(Project PLATEAU)京都市(2023年度)】
https://www.geospatial.jp/ckan/dataset/plateau-26100-kyoto-shi-2023

図32-8 3D都市モデルのインポート
図32-9 3次メッシュ「52354601」の範囲を読み込む
図32-10 地物別設定

[3]OBJ形式でエクスポートする

PLATEAU SDKの画面で[エクスポート]を選択し、OBJ形式にエクスポートします。各種オプションは、デフォルトのままエクスポートしています。

図32-11 OBJ形式にエクスポートする
コラム:FBX形式とOBJ形式

BlenderでPLATEAUの3D都市モデルを扱う場合、主な変換フォーマットとして、FBX形式とOBJ形式が考えられます。

FBX形式の場合は建物ごとにオブジェクトが分けられ、属性も付いたままエクスポートされます。対してOBJ形式では、「建物」「地面」「道路」など、地物(CityGMLにおける都市オブジェクトの種別)ごとにひとつのオブジェクトとなり、形状のみがエクスポートされます。

今回の用途では建物ごとに何か操作するわけではなく、むしろシンプルな構造のほうが都合はいいため、OBJ形式を用いました。

なお、このTOPICでは変換にPLATEAU SDK for Unityを用いていますが、OBJ形式への変換ならば、PLATEAU GIS Converterを使うこともできます。詳細は、「TOPIC 30|PLATEAU GIS Converter でコンバートして 3D で表示する」を参考にしてください。

図32-12 FBX形式とOBJ形式の違い

32.2.2 _ Blenderでインポートする

続いてBlenderを起動し、エクスポートしたOBJ形式ファイルをインポートします。

【手順】OBJ形式ファイルをインポートする

[1]OBJ形式ファイルをインポートする

[File]メニューから[Import]―[Wavefront(.obj)]を選択します。

ファイルの選択画面が開いたら、UnityからエクスポートしたOBJ形式ファイルすべてを選択します。

右側にインポートのオプションがあるので、上方向をZ軸とするために[Up Axis]を[Z]に設定します。

図32-13 OBJ形式ファイルをインポートする

[2]インポートしたオブジェクトを確認できるように視点を変更する

インポートした時点では、オブジェクトが遠すぎて見えないので、見えるようにします。

まずは、[A]キーを押してオブジェクトを全選択し、テンキーの[.](ピリオド)を押します。これでシーン内のすべてのオブジェクトが画面内に収まり、画面の中心に来ます。しかしPLATEAUの3D都市モデルは遠くにあり、クリッピングされていて、このままでは見えません。そこでクリッピングの範囲を変更します。

[N]キーを押してサイドバーを表示し、[View]タブの[Clip Start]と[End]で、クリッピング範囲(見える範囲)を指定します。ここでは、[End]を100000に設定します。とくに[End]を大きな値に設定することが重要で、そうすることで遠くまで見えるようになり、インポートした3D都市モデルが表示されます。

図32-14 中央にして、クリッピング範囲を変更する

32.2.3 _ データの確認

[Outliner]を確認すると、種類(建築物や道路、植生などの都市オブジェクト)ごと、そしてLODごとにオブジェクトが分かれています。

図32-15 Outlinerで確認したところ

先斗町はLOD3モデルが提供されているため、川床の細かい柵の形状やお店の看板や提灯まで再現されているのがわかります。

図32-16 河床の細かい柵
図32-17 看板や提灯

32.3 _ データの整理とクリーンアップ

次に、読み込んだデータを整理して軽量化し、作業しやすいようにきれいにしていきます。

32.3.1 _ 不要な都市オブジェクトの削除

32.2 3D都市モデルの読み込み」では、3D都市モデルに含まれるものすべてをインポート/エクスポートしたため、映像制作で使わない都市オブジェクトも含まれています。そこでまずは、不要な都市オブジェクトを削除します。

例えば道路や植生のデータは、今回使わないので削除します。

図32-18 道路など必要ないデータを削除する

今回は、「地形(dem)」「LOD2の建築物モデル」「LOD3の建築物モデル」「LOD3の都市設備モデル(道路標識や電柱、街灯など)」の4種類の都市オブジェクトのみを使用します。

図32-19 今回使用する4種類の都市オブジェクト

32.3.2 _ メッシュを整理する

PLATEAUの都市モデルは、3D制作を目的としたものではないため、ポリゴンメッシュ内で頂点が同一位置に複数あったり、同一頂点を共有した面が重複したりしている箇所があり、そのままでは扱いにくい状態です。そこで制作に先立ち、メッシュを整理します。

図32-20 モデルをクリーンアップする

■ メッシュの状態を確認する

最終的に、すべてのモデルを整理しますが、まずは、LOD2の建築物モデルから操作します。

最初に、メッシュの現在の状態を確認しておきましょう。

【手順】メッシュ表示して状態を確認する

[1]対象のオブジェクトを選択する

[Outliner]から対象のオブジェクトを選択します。ここでは、LOD2の建築物モデルを選択します。

図32-21 対象のオブジェクト(ここではLOD2の建築物モデル)を選択する

[2]メッシュを表示する

[Viewport Overlays]のオプションを開くと、[Geometry]のオプションがあります。このチェックボックスを付けると、メッシュが表示されます。

図32-22 メッシュを表示したところ

[3]頂点の状態を確認する

メッシュを表示して確認すると、基本的には、三角ポリゴンで形成されているのがわかります。そして、それぞれの隣接するポリゴンは、互いに独立しています。[Tab]キーを押して編集モードに入って頂点を動かしてみると、他のポリゴンが動かず、穴が空くことから、連結されていないことがわかります。

図32-23 ポリゴンの頂点が連結していない

■ 頂点を連結する

このままだと制作しにくいため、まずは、ポリゴンの頂点を連結して、1つにします。

【手順】頂点を連結する

[1]編集モードに入り、頂点を全選択する

該当のオブジェクト(今回はLOD2の建築物モデル)をクリックして選択状態にし、[Tab]キーを押して、編集モードに入ります。そして、[A]キーを押して、頂点を全選択します。

図32-24 頂点を全選択する

[2]マージする

[M]キーを押します。すると、Mergeメニューが表示されるので、[By Distance]を選択します。すると、近隣の頂点が、ひとつに結合します。

図32-25 [By Distance]で近隣の頂点を結合する

[3]繰り返す

マージの結果、処理された頂点の数が、ウィンドウ下に「Removed XXXX vertex」と表示されます。
1回では、すべての点をマージ仕切れないので、処理された点の数が「0」になるまで、手順[2]を何度か繰り返します。

図32-26 処理された頂点数
コラム:マージする距離の設定

[By Distance]で同一視する距離は、左下のメニューから設定できます。デフォルトでは、0.0001mです。

図32-27 同一視する距離の設定

■ 四角形ポリゴンに変換する

さらにポリゴン数を減らすため、三角ポリゴンから四角ポリゴンに変更します。

【手順】四角形ポリゴンに変換する

[1]対象の点すべてを選択する

[Tab]キーを押して編集モードに入り、[A]キーを押して、すべてを選択します。

[2]四角形ポリゴンに変換する
[Face]メニューから[Tris to Quads]を選択します。すると、三角ポリゴンから四角ポリゴンに変換されます。

図32-28 [Tris to Quads]を選択する

■ Instance Cleanでクリーンナップする

Blenderの標準機能を使った手動での整理はここまでですが、Blenderの「Instant Clean」というアドオン(有償)を使うと、さらに、クリーンナップできます。このアドオンはPLATEAUの3D都市モデルと相性が良く、使うことでさらにメッシュを自動で整理して、扱いやすくできます。

[Instant Clean]
https://blendermarket.com/products/instantclean

Instant Cleanをインストールすると、サイドメニューに[Instant Clean]タブが追加され、そこからクリーンナップ操作ができます。

PLATEAUのデータをクリーンナップするときは、次の設定がおすすめです。

① [Topology]オプションを[Quads]に変更する

三角形ではなく四角形としてクリーンナップされます。

② [Objectdata]オプションの[Material Doubles]のチェックを外す

[Material Doubles]は、重複しているマテリアル名を削除するオプションです。Instant Cleanでは接頭辞が同じマテリアルファイルを同一と見なしてひとまとめにするのですが、PLATEAUの3D都市モデルは、接頭辞が同じでも重複したマテリアルではありません。そこで、重複と判定されて削除されないよう、このチェックを外しておきます。

図32-29 Topologyオプションの設定
図32-30 Objectdataオプションの設定

■ 残りの都市オブジェクトの設定

以上でデータの整理は完了です。残る「地面」「LOD3の建築物モデル」「LOD3の都市設備モデル」についても、同様の方法で整理します。

なお、LOD3など詳細なモデルについては、Instant Cleanを実行すると、屋根がなめらかなカーブに変換されてしまうことがあります。その場合は[Repair]オプションで調整できますが、今回「LOD3の建築物モデル」および「LOD3の都市設備モデル」については、Instant Cleanを実行していません。

32.3.3 _ 映像で使用しない部分を消す

引き続き、データを軽量化します。オブジェクト数が多いと処理が重くなるので、映像で使わない部分を削除します。

【手順】不要な部分を削除する

[1]対象のレイヤを表示する

オブジェクトを削除するときは、テンキーの[7]をクリックして上から見たビューに切り替えて範囲選択すると、操作しやすいです。

[Outliner]の[目のアイコン]でオブジェクトごとに[表示/非表示]を切り替えて、削除操作をしていきます。

図32-31 上から見たビューで範囲選択する

[2]範囲選択できるようにする

[Tab]キーを押して、編集モードに切り替えます。そしてツールメニューから[Select Lasso]を選択します。すると、マウスで囲んだ部分を選択するモードになります。またこのとき、右上の[Toggle Xray]のアイコンをクリックして有効にした状態にしておきます。すると重なっていて後ろにあるオブジェクトも選択されるようになります。

図32-32 [Select Lasso]を選択する
図32-33 [Toggle Xray]を有効にする

[3]範囲選択して削除する

マウスで範囲選択して、削除したい領域を選びます。選んだら、[X]キーを押します。削除メニューが表示されたら[Vertices]を選択して、頂点を削除します。

図32-34 頂点を削除する

[4]地面なども同様に操作する

地面なども同様に操作して、使う部分以外を削除します。

図32-35 使う部分以外を削除したところ

32.4 _ シーンを作る

下準備が済んだので、シーンを作り始めます。ここでは、先斗町の傘が飛んでいくシーンを例に、作り方を解説します。

図32-36 先斗町の傘が飛んでいくシーン

32.4.1 _ カメラを配置する

このシーンでは、前節で説明したように整理済みのデータを使用します。ここでは、オブジェクトを「GROUND(地面)」「LOD2(LOD2の建築物モデル)」「LOD3(LOD3の建築物モデルおよびLOD3の都市設備モデル)」に分けました。

またカメラは、神社の横に設置しました。この位置から撮影すると、先の図32-36の映像になるのが想像できるかと思います。

図32-37 オブジェクトを整理したスタートの状態
図32-38 カメラの設置位置
図32-39 カメラビューに切り替えたところ
コラム:リファレンスとしてGoogleマップを使う

映像制作では、実際の写真があるとやりやすいです。実写があると、電柱や電線の位置など、細部を作り込むときに、とても参考になります。実写がない場合は、Googleマップのストリートビューを参考にできます。

図32-40 Googleマップのストリートビューを参考にする

32.4.2 _ 環境光を設定する

まずは環境光として、HDRIを設定します。ここでは、Poly Havenという、無料の3Dアセットライブラリを公開しているサイトにあるHDRIを使います。今回使用したのは、「Dam Wall」です。

[Poly Haven]
https://polyhaven.com/

[Dam Wall]
https://polyhaven.com/a/dam_wall

図32-41 Dam Wall

【手順】環境光を設定する

[1]HDRIをダウンロードする

前述のPoly Havenから、HDRI画像をダウンロードします。

[2]Shader Editorを開く

境界線の部分をドラッグして、左右2分割します。右側の画面で[Shader Editor]を開きます。

Shader Editorが開いたら、左上から[World]を選択して、Worldの表示に切り替えます。

図32-42 Shader Editorを開く
図32-43 World表示に切り替える

[3]Environment Textureを追加する

環境光を追加します。[Shift]+[A]キーを押すと、[Add]メニューが開くので、[Texture]―[Environment Texture]を選択します。追加したら、[Background]の[Color]に接続します。

図32-44 [Environment Texture]を追加する
図32-45 [Background]の[Color]に接続する

[4]HDRI画像を選択する

追加した[Environment Texture]の[Open]ボタンをクリックして、ダウンロードしておいたHDRI画像を選択します。

図32-46 [Open]をクリック
図32-47 HDRI画像を読み込む

[5]確認する

[Viewport Shading]をクリックして、レンダリングを始めます。レンダリング結果は、図32-49のとおりです。LOD3は詳細度の高いモデルであるため、環境光を入れただけでも、リアルな質感が出ます。

図32-48 [Viewport Shading]を選択する
図32-49 環境光が設定された

【文】

森 祐太朗(WOW inc.)
大澤文孝