チュートリアル 2 : テレインとダイナミック シティ レイアウト

チュートリアル データ

チュートリアル データは、[Help] メニュー → [Download Tutorials and Examples…] を選択し、[CityEngine Tutorial] からダウンロードできます。

概要

通常 CityEngine シーンを起動した際、まずテレインの生成を行います。テレインは単一画像ファイル、または座標系の情報を持つ GeoTIFF ファイルなどの DEM (デジタル標高モデル) から生成できます。
※ CityEngine で使用する「テレイン」という単語は、ArcGIS の「ラスター」に相当し、ArcGIS の「テレイン」とは別の意味になります。

このチュートリアルでは、テレインの作成と配置、道路の生成と道路のクリーンアップ、そしてダイナミック シティ レイアウトの基礎について学習します。

演習
Part 1 : テレインの生成
Part 2 : 道路の生成
Part 3 : 道路のクリーンアップ
Part 4 : テレインの配置
Part 5 : ダイナミック シティ レイアウト
Part 6 : 道路の操作

Part 1 : テレインの生成

テレインを生成するには、以下を行います。

  1. Tutorial_02_Terrain_and_Dynamic_City_Layouts チュートリアル フォルダーを展開します。

  2. Part_1_Start.cej ファイルをクリックしてシーンを開きます。

  3. [Navigator] ウィンドウのプロジェクトから maps フォルダーを開き、Viewportelevation.jpg 画像をドラッグして [Import] ダイアログを開きます。

  4. [Terrain Import] を選択し、[Next] をクリックします。

  5. Texture file で、[Browse] をクリックして maps フォルダーの topo.png テクスチャ ファイルを選択します。

  6. [Open] をクリックします。

  7. [Channel] プロパティを brightness のままにします。

  8. [Maximum Height]150 に設定します。

  9. [Bounds] で、[Dimensions][Location] の値を以下の画像のように設定します。

地理参照情報なしで画像を読み込んだ場合、そのピクセル解像度がテレイン ディメンションとして設定されます。

  1. [Keep ratio] ボタンを選択し、[Alignment] ボタンが中央に設定されていることを確認します。
  2. [Finish] をクリックします。

Terrain elevation レイヤーが作成され、[Scene Editor] ウィンドウに追加されます。

  1. [Scene Editor] ウィンドウでレイヤーをクリックし、[Inspector] で属性を編集します。
  2. Resolution 値を変更します。
    テレインの解像度は、テレイン メッシュの平面の分割数を決定します。

解像度はデフォルトで標高マップ画像のサイズに設定されていますが、自由に変更することができます。グリッド サイズをカスタマイズすると、シーンのパフォーマンスに影響を与えます。
scnes フォルダー内の Part_1_End.cej を開くと、模範の結果を見ることができます。

現在 CityEngine では画像ベースのテレイン (グレースケールの標高マップ) のみをサポートしており、3D メッシュはサポートしていません。
3D メッシュ、または他のデータ タイプをお持ちの場合は、標高マップに変換する必要があります。

Part 2 : 道路の生成

チュートリアル 1 では、高さが無い平面上に道路を生成する方法を学習しました。このセクションでは実際のテレインの標高上に道路を生成する [Grow Streets] ツールとアルゴリズムを使用して、実際のテレインの標高に直接道路を適応させます。

標高マップでの道路の生成

  1. Part_2_Start.cej ファイルをクリックし、シーンを開きます。

  2. メイン メニューの Graph → Grow Streets から [Grow Streets] ダイアログを開きます。

  3. [Environment Settings] セクションを展開します。

  4. [Heightmap] ドロップダウンを展開し、[Terrain elevation] を選択します。

  5. [Apply] をクリックして道路を生成します。Streetnetwork レイヤーが Scene Editor に追加されています。 テレインに合わせて自動的に道路が配置されます。

  6. [Close] をクリックすると、Viewport で道路を確認できます。

障害物マップでの道路の生成

[Grow Street] ツールはランダムに道路を生成します。これには道路を生成したくないエリアも含まれています。
障害物マップを作成することで、道路を生成したくない部分を空白にすることができ、手動でのクリーンアップ作業を最小限に抑えることができます。障害物マップは、白黒の画像で明るさによって道が生成される領域を定義したものです。

  1. Scene Editor を右クリックし、[New] → [New Map Layer] を選択して、[New Map Layer] ダイアログを開きます。

  2. [Obstacle] をクリックします。

  3. [Next] をクリックします。

  4. [Browse] をクリックし、maps フォルダーから obstacles.png 画像を選択します。

  5. [Channel] プロパティは brightness のままにします。

  6. [Obstacle Threshold] の値を 0.5 に変更します。
    Obstacle Threshold は道路を生成するエリアと生成しないエリアを区別する画像の輝度を定義します。

  7. [Bounds] で、値をテレインの範囲に設定します。

  8. [Finish] をクリックします。
    Scene Editor に New Obstacle マップ レイヤーが作成されます。

  9. [Inspector] ウィンドウの [Layer Attribute] セクションを展開します。

    attr obstacle = brightness < 0.5
    

    このコードでは、マップの属性をブール値 (true/false) として決定しています。

  10. 道路を生成する際に障害物マップを適用するには、まず Scene Editor の New Obstacle レイヤーの [Visibility] ボックスをオフにします。

  11. Viewport をクリックして、Scene Editor 内の New Obstacle レイヤーの選択を解除します。

  12. メイン メニューの [Graph] → [Grow Streets…] を再度クリックします。

  13. [Environment Settings] セクションを展開します。

  14. [Obstacle map] 横のドロップダウン リストをクリックし、[New Obstacle] を選択して障害物マップを割り当てます。

  15. [Apply] をクリックします。

[Grow Streets] ツールは、障害物マップの白い部分に道路を作成し、黒い部分には道路を生成しません。
Part_2_End.cej シーンを開くと、模範の結果を見ることができます。

[Grow Streets] ツールでは、パラメーターを使用して道路パターンを自動的に作成することもできます。詳細は道路パターンの例をご参照ください。

Part 3 : 道路のクリーンアップ

道路ネットワークは時々クリーン アップが必要な競合するグラフ セグメントを持っている場合があります。適切なシェープが作成できない場合、これらのエラーは赤でハイライトされます。道路ネットワークの問題をクリーンアップするには、[Cleanup Graph] ツールを使用します。

  1. Part_3_Start.cej シーンを開きます。

  2. 赤い表示の競合しているグラフ セグメントにズームします。

  3. [Select] ツールで、競合するセグメントの周辺を選択します。

  4. ツールバーの [Cleanup Graph] ツール (C) をクリックするか、メイン メニューから [Graph] → [Cleanup Graph…] を選択すると、[Cleanup Graph] ダイアログ ボックスが表示されます。

  5. デフォルトの設定のままにします。詳細は Cleanup Street をご参照ください。

  6. [Finish] をクリックします。

  7. Part_3_End.cej シーンを開くと、模範の結果を見ることができます。

Part 4 : テレインの配置

作成された道路は、通常テレインの表面や建物の位置に沿って配置されます。しかし 2D GIS データをインポートした場合など、シーン内で作成されたオブジェクトがテレインに正しく配置されていない場合があります。

道路や図形をテレインに配置することができるツール:

ツール名概要
Align streets to terrain道路セグメントをテレイン上に投影
Align shapes to terrain静的なシェープをテレイン上に投影*
Align terrain to shapesテレインを静的または動的なシェープに配置

*手動で描画、またはインポートしたシェープを静的シェープと呼びます。配置に関して、[Dynamic City layout] ツールは、[Allignment] ツールで配置できない動的なシェープを作成します。 ダイナミック シェープは (ダイナミック) ブロックの子として作成されるため (道路も同様)、Block Subdivisioin パラメーターには配置のための特定パラメーターが含まれています。詳細は Block parameters をご参照ください。

テレインにグラフを配置

まず、グラフをテレインに配置します。

  1. Part_4_Start.cej シーンを開きます。

  2. シーン内のシェープを選択します。

  3. ツールバーの [Align Graph to Terrain] ツールをクリック、またはメイン メニューの [Graph] → [Align Graph to Terrain] を選択します。

  4. [Heightmap] 横のドロップダウン ダウンリストから [Terrain elvation] を選択します。 詳細はテレインへ道路を配置をご参照ください。

  5. [Offset]0.2 に設定します。

  6. [Finish] をクリックします。

この変更はあまり目立ちません。より強い効果を得るには、[Maximum Height] の値を変更します。

テレインをシェープに配置

次に、シーンでテレイン ダイナミック シェープに合わせて配置します。

  1. シーン内のシェープを再度選択します。
  2. ツールバーの [Align Terrain to Shapes] ツールをクリック、またはメイン メニューで [Terrains] → [Align Terrain to Shapes…] を選択し、[Allign Terrain to Shapes] ダイアログを開きます。 詳細は Align terrain to shapes をご参照ください。
  3. デフォルト設定のまま [Apply] をクリックします。

すでにテレインに沿った道並みになっているので、変化はごく僅かです。

  1. [Close] をクリックします。
  2. [Scene Editor] でテレイン標高レイヤーをクリックします。
  3. Inspector[Elevation] セクションで、ドロップダウン リスト から [Apply Alignments] の設定を交互に無効化および有効化します。 テレインは配置されていない状態、または配置された状態に切り替わります。つまり配置データ、または [elevationDelta] プロパティはファイルとして保存されています。
  4. [Layer Attributes] セクションを展開し、[elevationDelta] プロパティが elevation 属性の定義にどのように役立つかを確認します。
 attr elevation = map_01(brightness, minHeight, maxHeight) + elevationDelta + elevationOffset
  1. シーンを保存します。

  2. [File] → [Refresh Workspace] をクリックし、チュートリアルのプロジェクト ワークスペースを更新します。
    data フォルダーの Part_4_Start.cej フォルダーに標高デルタ ファイルが含まれています。 最初にテレインを配置させた後、必ずシーンを保存してください。

  3. トップ ビューから標高ファイルを表示するには、メイン メニューの [Windows] → [New Viewport] → [Top View] をクリックして、新しいビューポートを作成します。

  4. elevation_delta ファイルを Top View ビューポートにドラッグします。

    16 ビットのデルタ マップには、標高の変化 (灰色 = 変化なし、黒 = 低い、白 = 高い) が格納されています。詳細は、Elevation delta maps をご参照ください。
    Part_4_End.cej シーンを開くと、模範の結果を見ることができます。

Part 5 : ダイナミック シティ レイアウト

ダイナミック シティ レイアウトはユーザーが素早く都市のレイアウトを作成するためのツール セットと機能です。その結果一連のシェープが作成され、CGA ルール で 3D モデルを作成するのにすぐに利用できます。
主なエレメントは道路とブロックです。ブロックは道路の中心線が物理的にエリアを囲んでいる (かつネットワークが適切に接続されている) 場合に作成されます。ブロックは点線で表現され、選択することができます。

道路セグメントもブロックもそれぞれのパラメーターにより、その子であるダイナミック シェープが生成されます。

オブジェクト タイプ

作成した道路を探索すると、SegmentsNodesBlocks という 3 つのオブジェクト タイプが選択可能で、そのパラメーターによって形状の作成が左右されることがわかります。

オブジェクト タイプパラメーター
Segment Parameters
Node Parameters
Block Parameters

[Create Shape] パラメーターは 3 つのオブジェクト タイプに共通で、シェープ ジオメトリの作成を有効または無効にします。例えば、道路にはシェープを作成したいが、ブロックには分割を作成したくない場合などです。
道路や歩道の幅を調整したり、ロータリーを作ってその半径を編集したり、袋小路を作ったりと、さまざまなオブジェクト タイプのパラメーターを自由に調整することができます。

ブロック分割タイプ

次に、ブロック分割を使って作業します。シーン内のブロックを選択し、[Subdivision Type] のパラメーターを変更します。各分割アルゴリズムは独自のパラメーターを持ち、特定のパターンを作成します。

分割タイプパラメーター
Recursive Subdivision
Skeleton Subdivision
Offset Subdivision
No Subdivision

これまでダイナミック シェープの作成方法について学習しました。次のセクションでは、道路描画、道路と曲線の編集、道路モデルの生成について学習します。

Part 6 : 道路の操作

これまでのセクションでは、ダイナミック シティ レイアウト ツールを使用して道路ネットワークを作成し、道路のクリーンアップを実践し、テレインの配置を行いました。このセクションでは、道路の操作における一般的なワークフローについて学習します。

手動での道路描画

はじめに、[Polygonal Street Creation] ツールと [Freehand Street Creation] ツールの両方を使用して道路を描画をします。

  1. 既存のネットワークに道路を追加するには、ツールバーの [Polygonal Street Creation] (G) ツールをクリックします。
    a. スナップとクリックで、新しい道路の最初のノードを配置します。 b. ダブルクリックで道路の描画を終了します。 セグメントの長さやその他のプロパティは、[Polygonal Street Creation] ツールの [オプション] ウィンドウで設定できます。詳細は、Draw a polygonal street をご参照ください。

  2. フリーハンドで道路を描くには、ツールバーの [Frreehand Street Creation] ツール (Shift+G) をクリックします。
    a. スナップとクリックで、新しい道路を描画します。 b. マウスのボタンを離すと、道路の描画が終了します。 [Freehand Street Creation] ツールの [オプション] ウィンドウで、道路の幅やその他のプロパティを設定することができます。詳細は Draw a street freehand をご参照ください。

曲線セグメント

次に、道路を直線から曲線に、あるいは曲線から直線へ変更します。

  1. 道路を選択します。
  2. メイン メニューの [Graph] → [Set Curves Straight] ツールと [Graph] → [Set Curves Smooth] ツールで形状を変更します。
    これらのツールを使って、道路を直線と曲線に切り替えることができます。次の画像は、[Set Curves Straight] ツールと [Set Curves Smooth] ツールの違いを示す良い例を示しています。 ハンドルで道路の曲率を調整することができます。詳細は Straight vs smooth をご参照ください。

曲線を持った道路はポリゴン数が多くなるので、最小限にとどめることをおすすめします。

  1. 作成した曲線道路のセグメント数の精度を編集します。
    a. 道路を選択し、Inspector[Precision] パラメーターをクリックします。
    [Precision] パラメーターの値を .5 に設定します。 b. 値を .25 に変更します。

道路の編集

続けて [Edit Streets/Curves] ツールを使用して道路を曲線を編集します。

  1. ツールバーの [Edit Streets/Curves] ツール (C) をクリックします。
    詳細は Edit street and curves をご参照ください。
  2. ハンドルを使用して道路と歩道の幅を編集します。
  3. 接線ハンドルを編集します。 視野角に応じて、水平または垂直で編集する接線ハンドルが表示されます。

道路モデルの生成

最後に、Street Construction Simple.cga ルールを使用して道路モデルを生成します。

  1. Streetnetwork レイヤーを展開し、Network サブレイヤーを右クリックします。
  2. [Select Objects] を右クリックします。
    これにより道路のみが選択され、ブロックは選択されません。
  3. Street Construction Simple.cga ルールを選択されたシェープ上にドラッグします。
    道路モデルと 3D オブジェクトがルールにより生成されます。

長さ、幅、曲線を含め、道路を編集してその場でモデルを再生成することができます。

  1. 道路シェープを選択し、Inspector[Start Rule] リンクをクリックします。
    これにより、CGA Editor でルールを確認できます。 以下の図は、StartRules とそれに対応する道路のシェープを色で示しています。

    color_streetshapes.cga ルールを道路に適用することで、よりカラー シェープを探求することができます。

    Part_5_End.cej を開くと、模範の結果を見ることができます。

このチュートリアルでは、テレインの作成、道路の自動生成、道路のクリーンアップ、テレインの配置、ダイナミック シティ レイアウトの作成について学習しました。そして、道路の描画と編集、道路モデルの生成について学習しました。