チュートリアル 5: シェープのインポート

チュートリアル データ

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

概要

このチュートリアルでは、外部モデルをシェープとして取り込む方法を学習します。インポートされたシェープはシーンの中でそのまま、または CGA ルールでさらに処理されて使用されます。

演習
Part 1 :シェープファイル/ジオデータベースからシェープをインポート
Part 2 :OBJ からシェープをインポート
Part 3 :立体モデルのインポート
Part 4 :Landmarks をシェープとしてインポート

Part 1 :シェープファイル/ジオデータベースからシェープをインポート

シェープファイルのインポート

  1. [File] メニュー → [New] → [CityEngine] → [CityEngine Scene] から新規シーン ファイルを開きます。

  2. [Navigator] ウィンドウで、data/shp_footprints/ フォルダーから footprint.shp ファイルを選択します。

  3. [3D View] ウィンドウにファイルをドラッグ & ドロップします。

  4. 投影法は指定せず、Raw data in meters を選択してデータをインポートします。

オブジェクト属性

CityEngine はシェープファイルに付与されている属性もインポートすることができます。

  1. フットプリントを 1 つ選択します。
    [Inspector] ウィンドウの Object Attributes 欄にオブジェクト属性が表示されています。

 

ルール ファイルの適用とモデルの生成

インポートされたフットプリントに対して単純な押し出しを行います。extrude.cga ルール ファイルではオブジェクト属性 height を使用してそれぞれ異なる高さまでフットプリントを押し出します。

  1. ルール ファイルを開き、以下のコードを確認します。
attr height = 10 
 
@StartRule 
Lot --> extrude(height) 
  1. [3D View] ウィンドウの中ですべてのフットプリントを選択します。

  2. [Navigator] ウィンドウでプロジェクトの rules フォルダーから extrude.cga ファイルを見つけ、それを [3D View] ウィンドウの選択されたフットプリントの上にドラッグ & ドロップしてルールを適用します。

建物が生成されます。

 

  1. footprints_from_shp.cej を開いて、ここまでの作業を行った模範のシーンを確認することができます。

ファイル ジオデータベースからのインポート

ファイル ジオデータベースからのデータのインポートはシェープファイルの場合と同様です。

  1. [File] メニュー → [New …] → [CityEngine] → [CityEngine scene] から新規シーン ファイルを開きます。[Navigator] ウィンドウで、data フォルダーから footprints.gdb を選択します。

.gdb ファイル フォーマットは [Navigator] ウィンドウ内ではフォルダーとして表示されます。

  1. footprints.gdb フォルダーを [3D View] ウィンドウにドラッグします。

ダイアログが立ち上がりますので、ジオデータベースからインポートしたいレイヤーを選択します。インポートの際には、Scene Coordinate System (シーンの座標系) を選択する必要があります。このダイアログで示されている座標系はジオデータベースの中にあるデータから取得されたものです。

  1. Finish をクリックして選択したレイヤーをインポートします。

ジオデータベースに含まれるデータセットは先のシェープファイルの中身と同じものですので、この後は上に記したシェープファイル用の手順と同じステップを適用することができます。

特殊な CGA 属性を持つポリライン Z シェープのインポート

  1. [File] メニュー → [New …] → [CityEngine] → [CityEngine Scene] から新規シーン ファイルを開きます。

  2. [Navigator] ウィンドウにて、data/shp_sphereCity/ フォルダーにある sphereCity.shp を選択します。

  3. このファイルを [3D View] ウィンドウにドラッグ & ドロップします。

インポートの際に sphereCity.shp に対して、データの座標系 (シェープファイルの投影法) を指定するよう求められます。このシェープファイルのデータの単位はメートルですが地図座標に関連付けられていないので、ここでは Raw Data in meters を選択します。

 

このシェープファイル sphereCity.shp には .prj ファイルが付与されていないため、CityEngine はユーザーにシーンの座標系を定義するように求めてきます。Select Scene Coordinate System ダイアログ ボックスで定義することができます。

  1. ここでも Raw Data in meters を選択します。データとシーンに対して同じ座標系を使用することによって、インポートの際に再投影を行う必要がなくなります。

 

[Scene Editor] ウィンドウに Shapes sphereCity という名前の新規シェープレイヤーが表示され、[3D View] ウィンドウにはフットプリントのシェープが表示されます。 シェープファイルに含まれているポリゴンは Z 値を持っていますので、CityEngine では 3D のシェープになります。

 

属性

このデータセットには特殊な属性が 2 つ定義されています。

ruleFile
startRule

GIS アプリケーションに既に使用されている特定のシンタックスを使用すると、インポート時に Rule Files と Start Rules が直接アサインされ、手動でファイルをアサインする時間を省くことができます。

GIS アプリケーションの属性テーブル

 

  1. 1 つのシェープ (球体上の 1 つの面) を選択します。
    [Inspector] ウィンドウの Object Attributes 欄にオブジェクト属性が表示されます。 Rule File および Start Rule がインポートにより自動的に割り当てられているはずです。

   

この状態から直接モデルを生成することができます。

モデルの生成

  1. [3D View] ウィンドウで sphereCity のすべてのシェープを選択します。

  2. 建物を生成します (ツールバーの Generate をクリックします) 。

 

スタート ルールの変更

個々のシェープについて Start Rule を変更し、生成されるモデルを変えます。

  1. [3D View] ウィンドウでモデルを 1 つ選択します。

  2. [Inspector] ウィンドウで Start Rule の右にある Select ボタンをクリックします。

  3. [Start Rule] ダイアログで、新しいスタートルールとして Commercial を選択します。[Start Rule] ダイアログではスタート ルールは太字で表示されています (スタート ルールとは、CGA コードの中で、 @StartRule というタグが付いているルールのことです) 。

 

 

Part 2 :OBJ からシェープをインポート

OBJ のインポート

  1. [File] メニュー → [New…] → [CityEngine] → [CityEngine Scene] から、新規シーン ファイルを開きます。

  2. フォルダー data/obj/ より pompeii_footprints.obj ファイルを選択します。

  3. ファイルを右クリック → Import を選択します。

  4. [OBJ import] ダイアログで Import as static model のチェックを外します。

    
5. Finish をクリックします。

    

ルール ファイルのアサインとモデルの生成

インポートしたフットプリントにシンプルな押し出しモデルを生成します。ルール ファイル extrude.cga はオブジェクト属性の height を使用して定義されている高さまでフットプリントを押し出します。

  1. [3D View] ウィンドウですべてのフットプリントを選択します。

  2. [Navigator] ウィンドウでプロジェクトの rules フォルダーにある CGA ファイル extrude.cga を見つけます。

  3. これを [3D View] ウィンドウ内の選択されたフットプリントにドラッグします。

  4. ルール ファイル extrude.cga によりすべてのフットプリントが高さ 10 まで押し出されます。

シェープ VS 静的なモデル

OBJ および Collada DAE ファイルはシェープまたは静的モデル (Static Models) としてインポートすることができます。

• シェープ: CGA による生成のベースとなります。例えばフットプリント データです。
• 静的モデル: インポート後にサイズ変更、回転、透過が可能ですが、CGA により処理をすることはできません。例えば、ランドマークなどのモデルです。

footprints_from_obj.cej を開くと、最終的なシーンを見ることができます。

Part 3 :立体モデルのインポート

シェープ形式の立体モデルをインポート CGA スクリプトで立体モデルを記述するより外部アプリケーションで立体モデルを作成した方が容易である場合もあります。このチュートリアルでは、Maya で作成した簡単なモデルを CityEngine にインポートし、その建物正面 (Facade) を CGA ルールにより作り込んでいく方法を紹介します。

アナログ ワークフローの部分は、OBJ データの代わりに .shp、.gdb または .dae (COLLADA) からのマルチパッチ シェープファイルを使用することでも適用可能です。

下図の建物立体モデルは、Maya による従来の手法で作成され、.obj ファイルにエクスポートされたものです。

 

CityEngine への .obj ファイルのインポート

  1. [File] メニュー → [New…] → [CityEngine] → [CityEngine Scene] から新規シーン ファイルを開きます。

  2. フォルダー data/obj/ より .obj ファイル Building_1.obj を選択します。

  3. ファイルを右クリックし、Import を選択します。

  4. OBJ インポート ダイアログで、Import as static model のチェックを外します。

  5. Finish をクリックします。

  
Building_1 という名前の新しいシェープ レイヤーが [Scene Editor] ウィンドウに現れ、そのデータが [3D View] ウィンドウに表示されます。

ルール ファイルの記述

建物立体モデルの名前 Building_1 により自動的にそのスタート ルールが Building と定義されます。したがって、スタート ルールは Building としなければなりません。また、インポートしたモデルの座標系を CityEngine の yUp 系に揃える必要があります。これは CGA コマンド alignScopeToAxes() により可能です。その後、要素分割 comp(f) により、インポートされた立体モデルの面が識別されます。屋根に対しては top セレクターを、建物正面に対しては side セレクターを使用します。今回は、屋根シェープに色を付けて、面が正しく認識されているかを確認します。

Building --> 
alignScopeToAxes(y) 
comp(f){top : color("#ff0000") Roof. | side : Facade. } 
  1. [3D View] ウィンドウ内で建物シェープを選択します。

  2. [Navigator] ウィンドウでプロジェクトの rules フォルダーから CGA ファイル

importedVolume_01_markFaces.cga を見つけ、[3D View] ウィンドウ内の選択されているシェープ上にドラッグ & ドロップします。 インポートした建物立体モデルに対し面の確認のためのシンプルなルールを適用した状態:赤 : 状面(屋根) ; グレー : 側面(建物正面)

面が正しく認識されたら、これらに対するルールセットの構築を続けることができます。これらの面は CityEngine 外部で作成されているため、方向が必ずしも今後のルールによる操作に適したものではない可能性があります。このため、Facade ルールに対しては CGA コマンド alignScopeToGeometry (zUp, auto) で開始します。この操作により Facade シェープのスコープはその最下部のエッジに z が前向きになるように整列されます。これによりすべての Facade 面と同じ方向にスコープが回転された状態での操作が確保されます。

Facade -->   
alignScopeToGeometry(zUp, auto)  
split(y){3.5 : Groundfloor | {~3 : Floor}* } 

ルール ファイル importedVolume_02_facades.cga には、建物の正面にさらに細部を構築するルールが含まれています。CGA ルールの記述についての詳細は、「チュートリアル 6 : 基本的なシェープグラマー」を参照してください。このルールセットを使用して再度建物を生成します。

  1. [3D View] ウィンドウで建物シェープを選択します。

  2. [Navigator] ウィンドウでプロジェクトの [rules] フォルダーにある CGA ファイル importedVolume_02_facades.cga を選択します。

  3. これを [3D View] ウィンドウの選択されているシェープ上にドラッグします。

シーン ファイル volume_from_obj.cej には、インポートしてルール ファイルを適用した状態のモデルが含まれています。

Part 4 :Landmarks をシェープとしてインポート

既存のテクスチャ付きモデルのアセットがあり、これを自分のシーンで使用したい場合、これらもインポートすることができます。

サポートされているフォーマットは Wavefront obj と Collada dae、.kml および .kmz です (.kml および .kmz はジオリファレンスされた Collada ファイルとしても使用できます) 。

.dae ファイルを CityEngine にインポート

  1. [File] メニュー → [New…] → [CityEngine] → [CityEngine scene] から新規シーン ファイルを開きます。

  2. フォルダー data/dae/ にある .dae ファイル building_0.dae を見つけて選択します。

  3. ファイルを右クリックして Import を選択します。

  4. [OBJ インポート] ダイアログで Import as static model のチェックを外します。

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

building_0 という名前の新しいシェープ レイヤーが Scene Editor ウィンドウに表示されます。

 

静的モデルをシェープに変換する

インポートされた静的モデルを CGA ルールでさらに処理したい場合、いつでもモデルをシェープに変換することができます。これを行うにはモデルを選択し、[Shapes] メニュー → Convert Models to Shapes を選択します。これは CGA で生成したモデルに対しても同様に行うことができます。

CGA ルールを適用する

  1. ルール ファイル landmark.cga を適用します。

  2. モデルを生成します。

[Inspector] ウィンドウの [Default Style] ボタンから参照できる [Style Manager] ダイアログ ボックスには、CGA を使用したモデルをインポートするための 4 つのオプションが表示されます。

 

  1. landmark_as_shape.cej を開くと、シーンの最終結果を確認することができます。