チュートリアル データは、[Help] メニュー → [Download Tutorials and Examples…] を選択し、[CityEngine Tutorial] からダウンロードできます。
都市は広大で複雑であり、多数の形状やオブジェクトを含んでいるため、一度に1つの建物の属性を制御するのは難しい場合があります。このチュートリアルでは、マップを使って都市の外観を制御する方法を学習します。
演習 |
---|
・Part 1: Inspector による CGA ルール パラメーターの探索 |
・Part 2: 高さのマップ制御の設定 |
・Part 3: スカイラインの高さをマップと接続 |
・Part 4: 土地利用タイプをマップで制御 |
最初に Inspector ウィンドウで CGA ルール パラメーターがどのように使用されるのかを学習します。
シェープを選択します。 [Inspector] ウィンドウでシェープを調べると、シェイプに ルール パラメータが割り当てられていないことがわかります。
Scene Editor で Streetnetwork レイヤーを 右クリックし、[Select Objects] をクリックします。
次に、選択したシェープに構築ルールを割り当てます。 ルール ファイルをシェープに割り当てる方法はいくつかあります。次のいずれかを実行します。
シェープを再度選択します。
Rule File リンクを開き、CGA Editor で simpleBuildingShells_01.cga ルール ファイルを開きます。
// height value
attr height = 80
height 属性は、建物の高さを定義します。
[Generate] ボタン (Ctrl+G) をクリックして選択したシェープを再生成します。
height 値を 80 から 150 に変更します。 建物に設定した高さの値は、ルールのパラメータを上書きするようになりました。他のすべてのシェープは、ルールで定義された高さ値を引き続き使用します mapcontrolTutorial_02.cej を開いて、模範のシーンを確認します。
このセクションでは、カラー マップを追加して、建物の高さパラメーターを制御します。
Part 1 から行っている場合はそのまま続けてください。Part 2 から始める場合はシーン mapcontrolTutorial_02.cej を開いてください。
建物の周りのいくつかのシェープを選択し、 [Generate] ボタン (Ctrl+G) をクリックします。 すべての建物の高さは 80 メートルです。スカイラインを追加することで、建物の外観を改善できます。ただし、最初のセクションで行ったように手動で CGA シェープ属性を設定するのではなく、以下の赤いスカイライン マップを使用して建物の高さを制御します。 上図のスカイライン マップの赤チャンネル (バンド) は、このエリアの建物の高さを表しています。スカイライン マップを地形マップと比較すると、湖の縁に沿ってにスカイラインを形成仕様としていることがわかります。また、左上方に別の市街部ができることも分かります。
新規マップ レイヤーを作成します。[Layer] メニュー → [New Map Layer…] をクリックします。 [Scene Editor] を右クリックして、[New] → [New Map Layer] をクリックすることもできます。
[Mapping] を選択し [Next] をクリックします。
[Browse] をクリックして、 maps フォルダーにある skylineMap.png ファイルを選択します。
[Dimensions] ボックスを 3000 X 3000 に変更し、 [Location] ボックスが 0 に設定されていることを確認します。
[Keep ratio] ボタンの選択を解除し 比率を保つ、[Alignment] ボタンの位置合わせの場所が中心に設定されていることを確認します。
[Attribute] ボックスをクリックし、属性に skylineValue という名前を付けます。
ドロップダウン リストから Channel を Red のチャンネルに設定します。
Minimum 値を 20 に、Maximum 値を 200 に設定します。 これは、建物の高さが 20 (赤 0 パーセント) から 200 (赤 100 パーセント) メートルの間で変化する必要があることを意味します。
[Finish] をクリックしてマップ レイヤーを作成します。
[Inspector] ウィンドウ で、新しいマップ レイヤー に Skyline Map という名前を付けます。 スカイライン マップでルールの height パラメーターを制御できるようになりました。
このセクションでは、skylineValue 属性を建物に接続します。
Streetnetwork レイヤーのすべてのシェープを選択します。
[Inspector] ウィンドウ の height 属性の横にあるドロップダウン メニューをクリックし、[Connect Attribute] を選択します。 [Attribute Connection Editor] ダイアログボックスが表示されます。
[Layer attribute] をクリックし、新しい Skyline Map レイヤーと skylineValue(Layer attribute) 属性を選択します。 詳細については、Map attributes with Connection Editor をご参照ください。
[OK] をクリックします。
湾の周りのいくつかのシェープを選択し、建物を生成します。 スカイラインは見栄えが良くなりましたが、CGA ルールを変更することでより改善できます。
simpleBuildingShells_02.cga ルール ファイルを開き、以下の関数を確認します。
// calc height with variation
getHeight(area) =
case area > 600 : rand(0,40)+height
case area > 200 : rand(0,40)+height/2
else: rand(15,30)
スカイライン マップの高さの値をそのまま建物の高さに対応させるのではなく、この関数は広い面積の区画にのみ高層ビルを作成し、建物にランダム性を追加します。CGA の詳細については、チュートリアル 6 の「基本的なシェープグラマー」をご参照ください。
[Scene Editor] ウィンドウで Streetnetwork レイヤーを選択します。
simpleBuildingShells_02.cga ルールを選択したシェープにドラッグします。
ルール ファイルをシェープにドラッグすると、モデルが自動的に生成されます。
このセクションでは、カラー マップを使用して各建物の土地利用タイプを制御する方法を学習します。使用するマップは、土地利用タイプを色で分類します。赤は工業地区、青は商業地区、緑は住宅地です。
mapcontrolTutorial_03.cej シーンを開きます。
[Scene Editor] ウィンドウで Skyline Map レイヤーをオフにします。
simpleBuildingShells_03.cga ルール ファイルを開きます。 次のマップ レイヤーを作成する前に、ルールにリストされている属性を見つけます。マップ レイヤーでレイヤー属性を作成するときは、同じ名前を使用します。
// land use types
attr t_industrial = 0
attr t_commercial = 0
attr t_residential = 0
[Layer] → [New Map Layer] をクリックして、マップ レイヤーを作成します 。
[Mapping] を選択し、[Next] をクリックします。
[Browse] をクリックして、 areatypes.png を選択します。
[Dimensions] ボックスを 3000 x 3000 に変更し、[Location] ボックスが 0 に設定されていることを確認します。
[Keep ratio] ボタンの選択を解除し 比率を保つ、[Alignment] ボタン位置合わせの場所が中心に設定されていることを確認します。
[Attributes] で、ルールと同じ名前のマッピング属性を追加し、Channel ボックスを red、blue、および green に設定します。 デフォルトの Minimum 値と Maximum 値の 0 と 1 をそのまま使用します。
[Finish] をクリックしてマップ レイヤーを作成します。
[Inspector] ウィンドウでレイヤーに LandUse Map という名前を付けます。
新しいマップ レイヤーを選択し、[Inspector] ウィンドウで [Layer Attributes] をクリックします。
Streetnetwork レイヤーを選択します。
simpleBuildingShells_03.cga ルール ファイルを割り当てます。
建物を生成する前に、simpleBuildingShells_03.cga ルール ファイルを確認します。色の宣言と landuseTypeColor 関数の場所を確認します。
土地利用のカラータイプ:
// color declarations
red = "#ffaaaa"
green = "#aaffaa"
blue = "#aaaaff"
white = "#ffffff"
土地利用のカラータイプ:
// Functions
landuseTypeColor =
case t_industrial > t_commercial && t_industrial > t_residential : red
case t_commercial > t_industrial && t_commercial > t_residential : blue
case t_residential > t_industrial && t_residential > t_commercial : green
else : white
この関数は土地利用 (Landuse) マップから取得される値を解析しそれに対応する色を返します。もしマップ由来のカラー チャンネル値が他のチャンネルの値よりも大きければそれに対応する土地利用マップの色が返されます。Lot ルールは color(landuseTypeColor) オペレーションを使用します。
Lot -->
// prepare building ground size and pivot orientation
case geometry.isConcave : color(landuseTypeColor)LotSub(getHeight(geometry.area))
else : color(landuseTypeColor) s('.8,'1,'.8) center(xz) LotSub(getHeight(geometry.area))
color(landuseTypeColor) オペレーションは、内部で landuseTypeColor 関数を呼び出しており、生成された建物に色が適用されます。
シーン内のすべての建物を生成します。 mapcontrolTutorial_04.cej シーンは、最終的なシーンを示しています。
このチュートリアルでは、シェープへの CGA ルールの適用、マップを使用した高さの制御、および 3 色マップを使用した土地利用タイプごとの建物の色の制御について説明しました。