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

チュートリアル データ

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

概要

本チュートリアルでは、道路ネットワークおよび道路の詳細モデルを作成していきます。作成した道路グラフは湖のような障害や、テレインなどにも対応します。
Part 2 では、道路グラフから道路シェープを作成します。道路に CGA シェープ グラマー ルールを適用して、詳細な道路モデルを作成していきます。
そして、Part 3 では、道路ネットワークを作成するのに必要な属性を見ていきます。

演習
Part 1 : テレインの生成
Part 2 : 道路の生成:標高マップと障害物マップ
Part 3 : 道路:Cleanup ツール
Part 4 : オブジェクトの配置
Part 5 : ダイナミック シティ レイアウト
Part 6 : 道路パターンの例

Part 1 : テレインの生成

通常、CityEngine のシーンを作成した後はテレインの生成を行います。テレインは単一画像ファイルまたは DEM (デジタル標高モデル) から生成できます。GEO TIF ファイル、および座標系の情報をもつ DEM もサポートしています。
※ CityEngine で使用する「テレイン」という単語は、ArcGIS の「ラスター」に相当し、ArcGIS の「テレイン」とは別の意味になります。

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

  1. Scene フォルダーから Part1_1_Start.cej ファイルを開きます。
  2. [Navigator] ウィンドウのプロジェクトから [maps] フォルダーを開き、[3D View] ウィンドウに elevation.jpg 画像をドラッグ & ドロップします。[Terrain Import] ダイアログが開きます。
  3. Texture file で、Browse ボタンから topo.png を選択します。
  4. Bounds で、[X-Size] を [4000]、[Z-Size] を [3200] に変更します (位置情報を持たない画像をロードすると、ピクセル解像度はテレインの寸法で設定されます)。
  5. [Keep ratio (縦横比固定)] と [Alignment (配置)] ボタンを確認します (デフォルトでは、Alignment は中央に設定されていますが、アイコンをクリックすることで編集することができます)。
  6. [Min.elevation] を [0]、[Max.elevation] を [150] に設定します。
  7. Finish をクリックします。

テレインが作成されると、[Scene Editor] ウィンドウにレイヤーが表示され、レイヤーを選択すると [Inspector] ウィンドウで属性を見ることができます。

Terrain Resolution (テレイン面の分割数) と Wireframe alpha 値を編集できます。Wireframe alpha 値は [3D View] ウィンドウの表示設定で、Wireframe on Shaded/Textured (またはショートカットとして 7 キーを押す) を有効にするとテレイン上に表示されるワイヤーフレームの値を決定できます。

  1. テレインの属性を自由に変更して違いを確認してみましょう。
  2. Part_1_End.cej を開くと、模範の結果を見ることができます。

Part 2 : 道路の生成:標高マップと障害物マップ

道路の生成: テレインの標高に配置

チュートリアル 1 では、高さが無い平面上に道路を生成する方法を学習しました。Part 2 では、実際のテレインの標高上に道路を生成する Grow Streets (道路生成) アルゴリズムを学習します。

  1. Graph メニュー → Grow Streets から [Grow Streets] ダイアログを開き、Environment Settings を開きます。
  2. Heightmap ドロップダウンを展開し、標高ソースとして使用するテレイン名を選択します。
  3. Apply をクリックして道路を生成し、道路がどのようにテレイン上に自動配置されるかを確認します。

道路生成:Obstaclemap (障害物マップ)

Grow Street はランダムに道路を生成します。この場合、道路を生成したくない水部や山などにも関係なく道路が生成されてしまいます。
道路が不要な場所に道路を生成させないためには、CityEngine では Obstacle Maps (障害物マップ) を利用することができます。Obstacle Map とは道路を生成する範囲を輝度で定義する白黒の画像です。実際に作成してみましょう。

  1. 道路をすべて選択 → 右クリック → Delete をクリックして、前のステップで生成した道路を削除します。
  2. Layer メニュー→ New Map Layer → Obstacle ラジオボタンをオンにします。Name (デフォルトでは New Obstacle) を確認し、Next をクリックします。
  3. Obstacle fileBrowse ボタンをクリックし、Tutorial 2 プロジェクトの [maps] フォルダーから obstacles.png 画像を選択します。
  4. テレインの範囲と同等の範囲を定義します。
  5. Channel は brightness のままにします。
  6. Obstacle Threshold は道路を生成するエリアと生成しないエリアを区別する画像の輝度を定義します。

Obstacle レイヤーを作成したら、選択し、[Inspector] ウィンドウの Layer Attributes を確認します。以下のマップの属性を引き継ぐコード (true か false のブール値) を探します。

 attr obstacle = brightness < 0.5
  1. [Scene Editor] ウィンドウで、Obstacle Layer を非表示にし、テレインを見やすくします。
  2. [Grow Streets] ダイアログを再度起動し、obstacle (New Obstacle) を割り当てます。
  3. Generate ボタンで生成します。Terrain elevation レイヤーを非表示にし、obstacle マップの黒いエリアには道路が生成されていないことを確認します。
  4. 特定のエリアで道路を追加生成するには、まず延長したい方面の既存の道路 (Graph Segment) を選択し、Grow Streets… で道路を生成します。
  5. Part_2_End.cej を開くと、模範の結果を見ることができます。

Part 3 : 道路:Cleanup ツール

道路を生成した際、道路同士が重なるなどの問題が起こることがあります。これを競合と呼び、ある状況下において、CityEngine のダイナミック シティ レイアウト システムは、道路ネットワークの競合する部分を適切な図形として対処できない場合があります。そのような場合、CityEngine は競合するグラフ セグメントが赤くハイライトされます。
これを解決するためには、手動で道路幅や、カーブ半径などの道路パラメーターを変更して修正することもできますが、手間と時間がかかります。競合を解決する方法として、Cleanup Graph ツールを使用することで簡単に修正することができます。

  1. Scene フォルダーから Part1_3_Start.cej ファイルを開きます。
  2. 競合しているグラフ セグメントを探すか、または作成します。
  3. 競合箇所を修正するためには、まず競合箇所周辺のオブジェクトを選択します。この場合、シェープや他のオブジェクト タイプが一緒に選択されても問題ありません。
  4. ツールバーの [Cleanup Graph] ツールをクリックします。[Cleanup Graph] ダイアログ ボックスが開きます。
  5. 下図はデフォルトの設定ですが、ヘルプの Cleanup Graph ツールを参考に、いろいろなパラメーターを設定してみて下さい。
  6. 競合が消え、下図のように道路は修正されているはずです。
  7. Part_3_End.cej を開くと、模範の結果を見ることができます。

Part 4 : オブジェクトの配置

実現世界では、道路はテレインの表面に沿って、建物はテレイン上に配置されます。しかし、シーン内で新規に作成したオブジェクトが完璧に配置されることは稀です。例えば、2D GIS データをインポートした場合、配置編集が可能なツールが必要になります。CityEngine では、特定のオブジェクト タイプを他に合わせるコマンドが用意されています。

良く利用する配置タイプ:

オブジェクト配置タイプ
グラフ セグメントをテレインに合わせて配置>テレイン道路セグメントをテレイン上に配置
静的モデルをテレインに合わせて配置>テレインフットプリントをテレイン上に配置
テレインをシェープに合わせて配置>シェープテレインを道路に合わせて配置

手動で描画、またはインポートしたシェープを静的モデルと呼びます。CityEngine 独自のシェープ生成システム「ダイナミック シティ レイアウト」は動的にシェープを作成するため、作成されたシェープはダイナミック シェープと呼びます。
しかし、ダイナミック シェープでは alignment ツールで配置できません。ダイナミック シェープは (ダイナミック) ブロックの子として作成されるため、Block Subdivision パラメーターには配置用の特定のパラメーターが含まれています。詳細については本チュートリアルの後半の Block Subdivision をご参考ください。

  1. Scene フォルダーから Part1_4_Start.cej ファイルを開きます。
  2. 選択ツールでシーン内のすべての道路を選択します
  3. ツールバー上の Align Graph to Terrain ボタンをクリック、または Graph メニュー → Align Graph to Terrain を選択します。
  4. Heightmap にテレインを選択します。
  5. Offset を 0.2 に設定します。
  6. Finish をクリックします。

今回道路は既に配置されているため、大きな変更はありません。テレインによっては、Maximal raise distance 値を設定する必要があります。詳細な設定の説明については Help メニュー → CityEngine Help (または F1 キーを押す) のマニュアルをご参照ください。

このシーンでは、静的モデルが無いため、テレインをシェープに合わせて配置するステップに進みます。

  1. シーン内のすべてのシェープを選択します。ここで、Graph Segments を一緒に選択してしまっても問題はありません。
  2. ツールバー上の Align Terrain to Shapes ボタンをクリックします。ダイアログの設定はデフォルトのまま、Apply をクリックします。

テレインがどのように変化したかをご確認ください。テレインによっては、変化はとても小さいものになります。より大きな変化を得るには、テレインの最高標高値を編集する必要があります。 3. Scene ウィンドウでテレイン レイヤーを選択し、Inspector ウィンドウでテレインの Layer Attributes を確認します。
4. Enable elevationDelta チェックボックスをクリックして、数回切り替えます。変化が分かりにくい場合は、道路がテレインの傾斜上にある場所をズームしてください。

ElevationDelta の有効化で、テレインがどのように変化するかを確認します。確認すると分かる通り、配置用のデータ(elevationDelta)があることにより、シェープをより綺麗に配置することができます。

  1. メニューバーの Save ボタン、または Ctrl + S キーでシーンを保存します。
  2. プロジェクトの data フォルダーを更新します。data フォルダーを右クリック → 背景メニューから refresh を選択します。data フォルダーでは、シーン ファイルと同名の新規ファイルがあります。このフォルダーと deltaMap はテレインを配置後、シーンを保存するまで仮想的に存在します。

下図は 16 ビットの delta マップ (灰色 = 変更なし; 黒=低い; 白=高い) です。この画像は現在の Example とはかなり違うはずです。

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

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

オブジェクト タイプ

ダイナミック シティ レイアウトはユーザーが素早く街のレイアウトを作成するためのツールと機能のセットです。このダイナミック シティ レイアウトで作成された一連のシェープには 3D モデルを生成するための CGA ルールを適用できるようになります。
主なエレメントは Streets と Blocks です。Blocks は道路のセンター ラインがエリアを物理的に囲い、ネットワークが正常に接続された際に作成されます。Blocks は選択されると点線で表示されます。
Street Segments と Blocks は共に子 (Dynamic Shape) の生成を管理するパラメーターを個別に持ちます。これまでのステップで生成した道路を選択すると、シェープの生成に影響する 3 つの選択可能なオブジェクト タイプのパラメーターがあることが分かります。

Graph Segments (グラフ セグメント):

Graph Nodes (グラフ セグメントの端点):

Blocks (ブロック):

これらの 3 つのオブジェクト タイプに共通するものは、シェープを生成するための特定のオブジェクト タイプが必要か否かを管理する shapeCreation パラメーターです。例えば、Street Shape は必要であるが、Blocks の分割は必要ないときなどに利用します。つまり、Dynamic Shape とは Graph Segments、Graph Nodes および Blocks の結果ということです。

これをより理解するために以下の操作を行い、変化を確認します。

  • すべてのオブジェクトタイプのすべてのパラメーターを操作してみましょう。
  • ラウンドアバウトをいくつか作成し、半径を編集してみましょう。
  • クルドサックをいくつか作成してみましょう。

ここでは、Block Subdivision に焦点を当てます。各 Subdivision アルゴリズムは専用のパラメーターを持ち、特定のパターンを生成することができます。

シェープの生成はダイナミック シティ レイアウトを使用した純粋な対話的タスクです。シェープの生成 (Shape Creation) とブロック分割 (Block Subdivision) は CityEngine のルール システム (CGA) とは関係がありません。シェープは最後の 3D モデルの生成で、シェープに CGA ルールをアサインする前に存在していなければなりません。
しかし、それとは関係なく CGA を使用してすべての Block Shape (または他の Parcel Shape) を分割するオプションもあります。

道路:生成

CityEngine には、グラフセグメントをインポートするオプションのほかに、ツールバー上に Street Graphs を生成する 2 つのツールを提供しています。それが、フリーハンド道路生成 (Freehand Street Creation) とポリゴン道路生成 (Polygonal Street Creation) ツールです。

操作手順:

  1. Freehand Street Creation、Polygonal Street Creation のツールを使用して、道路をいくつか作成します。

  2. Graph メニュー → Street Creation Settings… でダイアログを開き、道路の詳細設定を定義します。

  3. Street Creation Settings ダイアログで、任意に設定を行い、道路をさらに追加します。

曲線セグメント

以下の手順で、曲線、または直線の道路セグメントを作成します。

操作手順:

  1. 道路セグメントをいくつか選択します。
  2. Graph メニュー → Set Curves Straight をクリックすると、道路が直線になります。Graph メニュー → Set Curves Smooth をクリックすると、道路が曲線になります。 個別のグラフ セグメントを選択すると、Inspector ウィンドウで曲線道路に対して分割 (セグメント数) の精度を変更できる Precision パラメーターを編集できるようになります。しかし曲線道路はポリゴンをたくさん生成するため、Precision パラメーターは最小限に抑える必要があることにご留意ください。

道路:編集

操作手順:

  1. ツールバーの Edit Streets/Curves ツールをクリックし、道路を選択、または、ショートカットとして、Selection ツールで道路を選択して、C キーを押します。
  2. ツールを使って Streets と sidewalks の幅を編集します。
  3. 接線もいくつか編集します。ビューの角度によっては、水平または垂直の接線しか編集できないことがあります。

道路:モデル生成

  1. Inspector ウィンドウで作成した道路のスタート ルールを確認すると、5 つのタイプがあるのが分かります (すべてのタイプを見つけるには、Street Nodes の type パラメーターをいくつか変更する必要があります)。
  2. すべての道路を選択し、rules フォルダーにある Street Construction Simple.cga ルールをアサインし、モデルを生成します。
  3. モデルが生成中でも道路の編集を行う事ができます。

Part 6 : 道路パターンの例

ワークフロー例

ここまでは、道路ネットワーク作成の基本の設定を紹介してきました。ここでは、CityEngine で利用できる様々な道路ネットワークのテクニックをご紹介します。

  1. File メニュー→ New .. → CityEngine scene でscenes フォルダー内に新規シーンを作成します。
  2. Graph メニュー → Grow Streets… で Grow Street ダイアログを開きます。
  3. Pattern of major streets および Pattern of minor streets のドロップ ダウンで両方とも RADIAL を選択し、Apply をクリックします。放射線状の道路ネットワークが作成されます。
  4. 3 で作成した道路ネットワークから少し離れたところに別の道路を作成します。3 で生成した道路の端の部分を一部だけ選択します。
  5. もう一度 Graph メニュー→ Grow Streets… で Grow Street ダイアログを開きます。
  6. Pattern of major streets および Pattern of minor streets のドロップ ダウンで両方とも RASTER を選択し、Apply をクリックします。

これで中心部では道路ネットワークが RADIAL (放射線状) に配備され、郊外では道路がRASTER (格子状) スタイルに配備されました。
このように、生成方法次第では様々な形状の道路を生成することができます。以下では、その他の道路生成の例をリストします。

各パラメーターの例

格子状パターン

放射線状パターン

オーガニック パターン

格子状パターンを含む放射線状道路

オーガニック サークル パターン

蜂の巣型

眼鏡型

ラスターのオーガニック パターン