チュートリアル 1 : CityEngine の基本

チュートリアル データ

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

概要

このチュートリアルでは、何もない空の状態からどのように都市を構築するかを学習していきます。CityEngine の全チュートリアルを通して新規プロジェクトをセットアップし、道路ネットワークを作成して図形作成パラメーターを設定し、最終的にCGAルールエディターを使用して都市の建物モデルを生成するまでの全体のワークフローを紹介します。

演習
Part 1 :新規プロジェクトの準備
Part 2 :道路レイアウト
Part 3 :ナビゲーションと選択
Part 4 :ルールを使用したモデルの生成
Part 5 :ルールの編集

Part 1 :新規プロジェクトの準備

新規プロジェクトおよびシーンのセットアップ

最初のステップとして、CityEngine プロジェクトを新規作成します。

  1. [File] メニュー[New]...[CityEngine]C[ityEngine project] をクリックします。[Select a wizard] ダイアログが表示されます。
  1. [Next] をクリックし、プロジェクトに MyFirstCity という名前を付けて [Finish] をクリックします。 新しいプロジェクトが作成され、[Navigator] ウィンドウ(デフォルトでは、CityEngine 画面の左上にあります)内に表示されているはずです。プロジェクト> フォルダー内には assets、rules、scenes などのフォルダーがデフォルトで作成されています。続いて、シーンを新規作成します。

  2. [File] メニュー[New]...[CityEngine][CityEngine scene] を選択し、[Next] をクリックします。[CityEngine Scene] ダイアログで正しいプロジェクト フォルダー(/MyFirstCity/scenes)がセットされていることを確認し、シーン名として myFirstCity_01.cej と入力して [Finish] ボタンをクリックします。

ルールとアセットのコピー

本チュートリアルの後半では、建物モデルを生成するためのルール ファイルとアセットが必要になります。これらのファイルをワークスペースにリンクされているはずの Tutorial1 : Essential Skills プロジェクトからコピーします。

※ Tutorial 1 プロジェクトが [Navigator] ウィンドウ内にない場合は、[Help] メニュー → [Download Tutorials and Examples….] を選択し、CityEngine Tutorial から Tutorial 01 のチェックボックスをオンにして、[Finish] をクリックし、ダウンロードしてください。

  1. 右クリックすると表示されるコンテキスト メニュー、またはキーボード キーを使用して、ファイルをコピー & ペーストします。

・Windows または Linux の場合は、Ctrl-C キーを押してコピーし、Ctrl-V キーを押して貼り付けることができます。

・Mac OS の場合は、command-C キーを押してコピーし、command-V キーを押して貼り付けることができます。

  1. assetsrules フォルダー内のコンテンツをコピーします。コピー & ペーストが完了すると、[Navigator] ウィンドウ上では以下のようになっているはずです。

Part 2 :道路レイアウト

ランダムに道路を生成

新規プロジェクトをセットアップしたら、新規に作成したシーン上で道路レイアウトの生成を開始します。まず、道路ネットワークを作成します。

  1. [3D View] ウィンドウ内で一度クリックし、ウィンドウをアクティブ化します。

  2. [Graph] メニュー[Grow Streets] をクリックします。

  3. [Grow Streets] ダイアログが表示されます。今回は全てデフォルトの設定で行います。

  4. [Apply] をクリックし、ダイアログを閉じます。

約 500 本の道路が生成されますが、最初の画面では [3D View] ウィンドウ内で道路の一部が拡大されており、道路全体は見えていない状態です。道路全体を表示するには Frame(全体表示)をします。

  1. a キーを押して、[3D View] ウィンドウ内のすべてのオブジェクトを全体表示します。[3D View] ウィンドウでは、下図のように見えるはずです。 [Scene Editor] ウィンドウには、下図のように Blocks、Network、Shape を含んだ Streetnetwork レイヤーが追加されています。

Part 3 :ナビゲーションと選択

ナビゲーション

[3D View] ウィンドウ内でのナビゲーションは CityEngine を使用する上で最も習得が必要なスキルです。ここで、さまざまな利用可能なナビゲーション スキームを見ていきましょう。

  1. [Edit] メニュー[Preferences][General][Navigation Devices][Mouse] を選択します。[Current Mouse Scheme] ドロップダウン リストから、他の 3D アプリで利用するさまざまなスキーマを選択することができます。
 

3d Connection の 3d Mouse(https://www.3dconnexion.com/)をお持ちの方は、3Dマウスの設定を行う事も可能です。

 

ここでは、デフォルトのナビゲーション スキームを挙げます:

ナビゲーション コマンドWindows/Linux キーボード ショートカットMacOS キーボード ショートカット
回転移動Alt キー + 左マウスボタンMac OS の場合:optionキー+ 左マウスボタン
平行移動Alt キー+中央マウスボタンMac OS の場合:optionキー+ 中央マウスボタン
ズームAlt キー+右マウスボタン、またはマウス ホイールMac OS の場合:optionキー+ 右マウスボタン
 

① 他の便利なナビゲーションとして f キーを押すと [3D View] ウィンドウ内のツールバー上にある Frame(全体表示)ボタンと同様の操作が行えます。

② tumble(回転)、pan(平行移動)、zoom(ズーム)ナビゲーションの習得を早めに行う事をお勧めします。少し練習すればすぐに慣れます。

 

選択

シーン内で、オブジェクトの操作や編集を行うには、まず選択する必要があります。選択は、ツールバーの [Selection] ツール(またはショートカットとして Q キーを押す)で簡単に行うことができます。

 

F9 から F12 キーまでのショートカットでは、Map Layers、Graph Segments、Shapes および Models の 4 つのオブジェクト タイプの表示を切り替えることができます。選択に必要のないオブジェクトの表示を無効にすると、選択しやすくなります。

 

選択タイプ

選択タイプの方法は以下の表をご参照ください。

選択タイプ挙動
シングル クリック単一オブジェクトの選択
右から左方向にドラッグして範囲を選択選択範囲に含まれる、または重なるすべてのオブジェクトを選択します。
左から右方向にドラッグして範囲を選択選択範囲に完全に含まれるオブジェクトをすべて選択します。

左から右方向に範囲を選択する方法は、同じ空間にたくさんのオブジェクトがあり、1 つの Street Graph Nodes だけを選択するなど、小さいオブジェクトを選択するときに使います。

Modifier キー

Ctrl キーと Shift キーで選択モードの切り替えを行うことができます。このモードは、ツールバーの Select ツールのサブメニューにもリストされています。

選択コンテキスト メニュー

選択を行うと、画面を右クリック → コンテキスト メニューから追加のエレメントを選択できるエントリが表示されます。

選択アイテムについての詳細は以下の表をご参照ください。

選択モード選択エレメント
Select Objects of the same Type:同じタイプ(シェープ、グラフ ノード)オブジェクトを選択
Select Objects of the same Group同じブロック、道路のオブジェクトを選択
Select Objects with the same Rule Fileファイルがアサインされていて、表示がオンになっているレイヤーのオブジェクトを選択
Select Objects with the same Start Rule同じスタートルールがアサインされていて、表示がオンになっているレイヤーのオブジェクトを選択

Part 4 :ルールを使用したモデルの生成

3D モデルの生成

CityEngine ではどのように 3D モデルを生成するのでしょうか?

CityEngine はプロシージャル モデリング アプリケーションです。つまり、CityEngine は 3D モデルを生成するのにルールを使用します。

ルールのアサイン

本チュートリアルの Part 1 でルールとアセットをコピーしたため、ルールは既に用意されています。このルールをアサイン(割り当て)します。

  1. Block(街区)を 1 つ選択し、[Inspector] ウィンドウの [Subdivision Parameter][Recursive Subdivision] から [Offset Subdivision] に変更します(Block Subdivision (ブロック分割)やダイナミック シティ レイアウトについては Tutorial 2 で詳しく学習します)。

  2. ブロック内のシェープを 1 つ選択し、右クリック → [Select][Select Objects of Same Group] を選択します。

  3. rules フォルダーのBuilding.cga ルール ファイルを、選択したフィーチャ(本例では、下図のオレンジの部分)にドラッグ & ドロップします。 シェープにルールをドロップすると、モデル生成が自動的に開始します。生成後のモデルは、下図のようになっているはずです。モデルが表示されない場合は、モデルの表示がアクティブになっているかを確認します。F12 キーを押して切り替えることができます。 生成したモデルは、モデルを選択後、右クリック → [Delete Models] を選択することで削除できます。

  4. モデル削除をした場合は、再度シェープを選択し、[Generate] ボタンをクリックすると、モデルを再生成できます。ショートカット キーとして、Windows または Linux の場合は Ctrl + G キー、Mac OS の場合は command + G キー を押してモデルを生成することもできます。シード値が異なる新しいバリエーションの建物が生成されます。

  5. ツールバー上の [Update Seed] ボタンを使用してモデルを再生成することもできます。ショートカット キーとして、Windows または Linux の場合は Ctrl + Shift+ G キー、Mac OS の場合は、Command + Shift + G キーを利用することもできます。
    下図はシード値が異なるモデルの例です。

  6. [Inspector] ウィンドウで building 欄の height(高さ)パラメーターを変更して、手動で編集することもできます。 [Inspector] ウィンドウで一度属性を変更すると、値が太字になり、ルールの定義が上書きされます。

  7. [Inspector] ウィンドウで属性の横にある矢印を右クリック → [Reset userattributes] をクリックして、building.cga ルール定義の属性をリセットします。

Part 5 :ルールの編集

ルール ファイル

CityEngine のルール システムは、CityEngine 専用のスクリプト言語である CGA コードを使用します。CGA はスクリプト言語のため、現代から近代、古代から未来などのあらゆるタイプの 3D 都市モデルの生成に、包括的に柔軟に対応することができます。

ここまで使用してきたルール ファイルの中身を見てみましょう。

  1. [Navigator] ウィンドウでプロジェクトの rules フォルダー内にある building.cga ルール ファイルをダブルクリック、または [Inspector] ウィンドウの [Rule File] をクリックしてルール ファイルを開きます。

  2. [Rule Editor] ウィンドウで、building.cga ルール ファイルの編集をします。

ルール ファイルの編集

  1. Building.cga ルール ファイルの中身を確認します。Height 属性は以下のコードで 15 から 25 までのランダム値として定義されています。
attr height = rand(15,25)

上図で生成されたモデルの高さはランダム値で 22.82です。

  1. [Rule Editor] ウィンドウで高さのランダム値を変更します。
attr height = rand(15,80)

これで、高さのランダム値は 15 から 80 の間で定義されました。

  1. メニュー ツールバーの [Save] ボタン、または Ctrl + S キーを押して、ルールを保存します。

  2. [Update Seed] ボタン、または Ctrl + Shift + G キーで建物を再生成します。 [Inspector] ウィンドウで確認すると、この建物の高さは 51.27 のランダム値を持っています。

 

Update Seeds ボタンを押す理由としては、高さがランダム値であり、建物を再生成する際にランダム シード値を更新するときに必要なためです。

  5. building.cga に屋根のジオメトリとして、Roof と名付けた新しいルールを追加します。 a. →Lot ルールを編集し、以下のようにします。
Lot -->
 	case shapeType == "LotInner" : 
 		 Lot.
 	else :
 	  extrude(height) comp(f) { side :  Facade | top:  Roof }

b. Roof ルールを追加し、シェープを 22.5 度の角度を持つ roofHip として定義します。

Roof --> roofHip(22.5) Shape

c. ルールを保存します。 

  1. 建物を再生成しますが、ここでは、[Generate] ボタンをクリックするか、 Ctrl + G キーを押します。これにより、建物の高さを 51.27のままキープしたまま、新しい屋根のジオメトリを確認することができます。